1
0
mirror of https://github.com/cc65/cc65.git synced 2024-10-01 15:54:59 +00:00

Added support for several colors.

git-svn-id: svn://svn.cc65.org/cc65/trunk@5641 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
uz 2012-04-03 17:34:54 +00:00
parent 31e0666087
commit b5d4321a4b

View File

@ -115,8 +115,14 @@ static const struct ChipData CData[] = {
}; };
/* Defines for console screen */ /* Defines for console screen */
static const XColor FgColor = { static const XColor GreenColor = {
0, 32*256, 141*256, 32*256, 0, 0 /* green */ 0, 32*256, 141*256, 32*256, 0, 0 /* green */
};
static const XColor AmberColor = {
0, 255*256, 204*256, 51*256, 0, 0 /* amber */
};
static const XColor WhiteColor = {
0, 224*256, 224*256, 224*256, 0, 0 /* white */
}; };
static const XColor BgColor = { static const XColor BgColor = {
0, 0*256, 0*256, 0*256, 0, 0 /* black */ 0, 0*256, 0*256, 0*256, 0, 0 /* black */
@ -147,7 +153,7 @@ struct ScreenInstance {
unsigned Rows; unsigned Rows;
unsigned Cols; unsigned Cols;
/* Window dimensions, 384*288 (PAL) */ /* Window dimensions, determined by char resolution and char set */
unsigned XTotal; unsigned XTotal;
unsigned YTotal; unsigned YTotal;
@ -263,6 +269,8 @@ static void* ScreenCreateInstance (unsigned Addr, unsigned Range, void* CfgInfo)
XSizeHints SizeHints; XSizeHints SizeHints;
XWMHints WMHints; XWMHints WMHints;
Cursor C; Cursor C;
unsigned CharColor;
/* Allocate the instance data */ /* Allocate the instance data */
ScreenInstance* V = VScreen = Sim->Malloc (sizeof (ScreenInstance)); ScreenInstance* V = VScreen = Sim->Malloc (sizeof (ScreenInstance));
@ -354,8 +362,15 @@ static void* ScreenCreateInstance (unsigned Addr, unsigned Range, void* CfgInfo)
Sim->Error ("Screen: Need color display"); Sim->Error ("Screen: Need color display");
} }
/* Determine the character color */
CharColor = (unsigned) CfgGetNum (CfgInfo, "charcolor", 0, 2, 0);
/* Get all needed colors */ /* Get all needed colors */
V->FgColor = FgColor; switch (CharColor) {
case 1: V->FgColor = AmberColor; break;
case 2: V->FgColor = WhiteColor; break;
default: V->FgColor = GreenColor; break;
}
V->BgColor = BgColor; V->BgColor = BgColor;
CM = DefaultColormap (V->ScreenDisplay, V->Screen); CM = DefaultColormap (V->ScreenDisplay, V->Screen);
if (XAllocColor (V->ScreenDisplay, CM, &V->FgColor) == 0) { if (XAllocColor (V->ScreenDisplay, CM, &V->FgColor) == 0) {
@ -634,7 +649,7 @@ static void ScreenEventLoop (void)
break; break;
} }
} }
/* Flush the outgoing event queue */ /* Flush the outgoing event queue */
XFlush (VScreen->ScreenDisplay); XFlush (VScreen->ScreenDisplay);