Small changes, but in particular wcolor_set to handle > 256 color pairs.

Signed-off-by: Andrea Odetti <mariofutire@gmail.com>
This commit is contained in:
Andrea Odetti 2017-06-01 20:52:11 +01:00
parent c198c24a22
commit e7ddcd6b82
3 changed files with 12 additions and 12 deletions

View file

@ -4,7 +4,7 @@
namespace namespace
{ {
enum Colors { enum Color {
BLACK, BLACK,
DEEP_RED, DEEP_RED,
DARK_BLUE, DARK_BLUE,
@ -31,9 +31,9 @@ namespace
} }
} }
#define SETFRAMECOLOR(c, r, g, b) init_color(firstColor + Colors::c, scaleRGB(r), scaleRGB(g), scaleRGB(b)); #define SETFRAMECOLOR(c, r, g, b) init_color(firstColor + Color::c, scaleRGB(r), scaleRGB(g), scaleRGB(b));
GRColors::GRColors(const int firstColor, const int firstPair) GraphicsColors::GraphicsColors(const int firstColor, const int firstPair)
: myFirstPair(firstPair) : myFirstPair(firstPair)
{ {
has_colors(); has_colors();
@ -63,7 +63,7 @@ GRColors::GRColors(const int firstColor, const int firstPair)
for (size_t i = 0; i < 16; ++i) for (size_t i = 0; i < 16; ++i)
{ {
const int bg = firstColor + i; const int bg = firstColor + i;
for (size_t j = BLACK; j < 16; ++j) for (size_t j = 0; j < 16; ++j)
{ {
const int fg = firstColor + j; const int fg = firstColor + j;
const int pair = myFirstPair + i * 16 + j; const int pair = myFirstPair + i * 16 + j;
@ -73,7 +73,7 @@ GRColors::GRColors(const int firstColor, const int firstPair)
} }
} }
int GRColors::getPair(int color) const int GraphicsColors::getPair(int color) const
{ {
const int bg = color & 0x0f; const int bg = color & 0x0f;
const int fg = color >> 4; const int fg = color >> 4;

View file

@ -1,9 +1,9 @@
#pragma once #pragma once
class GRColors class GraphicsColors
{ {
public: public:
GRColors(const int firstColor, const int firstPair); GraphicsColors(const int firstColor, const int firstPair);
int getPair(int color) const; int getPair(int color) const;

View file

@ -21,7 +21,7 @@ namespace
{ {
std::shared_ptr<Frame> frame; std::shared_ptr<Frame> frame;
std::shared_ptr<GRColors> grColors; std::shared_ptr<GraphicsColors> colors;
int g_nTrackDrive1 = -1; int g_nTrackDrive1 = -1;
int g_nTrackDrive2 = -1; int g_nTrackDrive2 = -1;
@ -191,11 +191,11 @@ bool UpdateLoResCell (int x, int y, int xpixel, int ypixel, int offset)
{ {
BYTE val = *(g_pTextBank0+offset); BYTE val = *(g_pTextBank0+offset);
const int pair = grColors->getPair(val); const int pair = colors->getPair(val);
WINDOW * win = frame->getWindow(); WINDOW * win = frame->getWindow();
wattron(win, COLOR_PAIR(pair)); wcolor_set(win, pair, NULL);
if (frame->getColumns() == 40) if (frame->getColumns() == 40)
{ {
mvwaddstr(win, 1 + y, 1 + x, "\u2580"); mvwaddstr(win, 1 + y, 1 + x, "\u2580");
@ -204,7 +204,7 @@ bool UpdateLoResCell (int x, int y, int xpixel, int ypixel, int offset)
{ {
mvwaddstr(win, 1 + y, 1 + 2 * x, "\u2580\u2580"); mvwaddstr(win, 1 + y, 1 + 2 * x, "\u2580\u2580");
} }
wattroff(win, COLOR_PAIR(pair)); wcolor_set(win, 0, NULL);
return true; return true;
} }
@ -330,7 +330,7 @@ void VideoInitialize()
setlocale(LC_ALL, ""); setlocale(LC_ALL, "");
initscr(); initscr();
grColors.reset(new GRColors(20, 20)); colors.reset(new GraphicsColors(20, 20));
curs_set(0); curs_set(0);