term-attributes now used a vector of lambda expressions to print the effects

This commit is contained in:
Markus Gans 2018-12-16 00:11:25 +01:00
parent fd924233c3
commit b459d55ae8
2 changed files with 24 additions and 56 deletions

View File

@ -1,6 +1,8 @@
2018-12-15 Markus Gans <guru.mail@muenster.de>
* Use of the C++11 auto specifier in the program code
* Code reduction by using of Range-based for loop
* The example program for video attributes now replaces
the switch statement with a vector of lambda expressions
2018-12-09 Markus Gans <guru.mail@muenster.de>
* Better handling of the scrollbar maximum

View File

@ -20,6 +20,7 @@
* <http://www.gnu.org/licenses/>. *
***********************************************************************/
#include <functional>
#include <final/final.h>
@ -405,67 +406,32 @@ void AttribDemo::draw()
// test alternate character set
printAltCharset();
for (int y = 0; y < int(getParentWidget()->getHeight()) - 7; y++)
std::vector<std::function<void()> > effect
{
setPrintPos (1, 2 + y);
[&] { printDim(); },
[&] { printNormal(); },
[&] { printBold(); },
[&] { printBoldDim(); },
[&] { printItalic(); },
[&] { printUnderline(); },
[&] { printDblUnderline(); },
[&] { printCrossesOut(); },
[&] { printBlink(); },
[&] { printReverse(); },
[&] { printStandout(); },
[&] { printInvisible(); },
[&] { printProtected(); },
};
for (std::size_t y = 0; y < getParentWidget()->getHeight() - 7; y++)
{
setPrintPos (1, 2 + int(y));
if ( ! isMonochron() )
setColor (wc.label_fg, wc.label_bg);
switch (y)
{
case 0:
printDim();
break;
case 1:
printNormal();
break;
case 2:
printBold();
break;
case 3:
printBoldDim();
break;
case 4:
printItalic();
break;
case 5:
printUnderline();
break;
case 6:
printDblUnderline();
break;
case 7:
printCrossesOut();
break;
case 8:
printBlink();
break;
case 9:
printReverse();
break;
case 10:
printStandout();
break;
case 11:
printInvisible();
break;
case 12:
printProtected();
break;
}
if ( y < effect.size() )
effect[y]();
}
if ( ! isMonochron() )