ctk-curses: Introduce CTK-specific color names

Since ncurses also defines COLOR_BLACK and friends, and we want
to avoid including curses.h in contiki-conf.h, define CTK_COLOR_*
constants and map them to curses colors in ctk-curses.c.
This commit is contained in:
François Revol 2013-03-26 11:37:10 +01:00
parent 56f11e7524
commit ada305a3be
3 changed files with 48 additions and 20 deletions

View File

@ -208,23 +208,33 @@ typedef unsigned short uip_stats_t;
#define CTK_CONF_MENUS 0 #define CTK_CONF_MENUS 0
#endif /* PLATFORM_BUILD */ #endif /* PLATFORM_BUILD */
/* base background color for widgets */ /* CTK-specific color constants */
#define COLOR_BG COLOR_BLUE #define CTK_COLOR_BLACK 0
#define CTK_COLOR_RED 1
#define CTK_COLOR_GREEN 2
#define CTK_COLOR_YELLOW 3
#define CTK_COLOR_BLUE 4
#define CTK_COLOR_MAGENTA 5
#define CTK_COLOR_CYAN 6
#define CTK_COLOR_WHITE 7
#define BORDERCOLOR COLOR_BLACK /* base background color for widgets */
#define SCREENCOLOR COLOR_BLACK #define COLOR_BG CTK_COLOR_BLUE
#define BACKGROUNDCOLOR COLOR_BLACK
#define WINDOWCOLOR_FOCUS COLOR_WHITE | COLOR_BG * 0x10 #define BORDERCOLOR CTK_COLOR_BLACK
#define WINDOWCOLOR COLOR_CYAN | COLOR_BG * 0x10 #define SCREENCOLOR CTK_COLOR_BLACK
#define DIALOGCOLOR COLOR_WHITE | COLOR_BG * 0x10 #define BACKGROUNDCOLOR CTK_COLOR_BLACK
#define WIDGETCOLOR_HLINK COLOR_CYAN | COLOR_BG * 0x10 #define WINDOWCOLOR_FOCUS CTK_COLOR_WHITE | COLOR_BG * 0x10
#define WIDGETCOLOR_FWIN COLOR_WHITE | COLOR_BG * 0x10 #define WINDOWCOLOR CTK_COLOR_CYAN | COLOR_BG * 0x10
#define WIDGETCOLOR COLOR_CYAN | COLOR_BG * 0x10 #define DIALOGCOLOR CTK_COLOR_WHITE | COLOR_BG * 0x10
#define WIDGETCOLOR_DIALOG COLOR_WHITE | COLOR_BG * 0x10 #define WIDGETCOLOR_HLINK CTK_COLOR_CYAN | COLOR_BG * 0x10
#define WIDGETCOLOR_FOCUS COLOR_YELLOW | COLOR_BG * 0x10 #define WIDGETCOLOR_FWIN CTK_COLOR_WHITE | COLOR_BG * 0x10
#define MENUCOLOR COLOR_WHITE | COLOR_BG * 0x10 #define WIDGETCOLOR CTK_COLOR_CYAN | COLOR_BG * 0x10
#define OPENMENUCOLOR COLOR_WHITE | COLOR_BG * 0x10 #define WIDGETCOLOR_DIALOG CTK_COLOR_WHITE | COLOR_BG * 0x10
#define ACTIVEMENUITEMCOLOR COLOR_YELLOW | COLOR_BG * 0x10 #define WIDGETCOLOR_FOCUS CTK_COLOR_YELLOW | COLOR_BG * 0x10
#define MENUCOLOR CTK_COLOR_WHITE | COLOR_BG * 0x10
#define OPENMENUCOLOR CTK_COLOR_WHITE | COLOR_BG * 0x10
#define ACTIVEMENUITEMCOLOR CTK_COLOR_YELLOW | COLOR_BG * 0x10
typedef unsigned long clock_time_t; typedef unsigned long clock_time_t;

View File

@ -66,6 +66,26 @@ static unsigned short xpos;
static unsigned short ypos; static unsigned short ypos;
static unsigned char button; static unsigned char button;
/* map CTK colors to curses colors */
static unsigned char ctk_color_map[8] = {
COLOR_BLACK,
COLOR_RED,
COLOR_GREEN,
COLOR_YELLOW,
COLOR_BLUE,
COLOR_MAGENTA,
COLOR_CYAN,
COLOR_WHITE
};
static unsigned char map_color(unsigned char color)
{
unsigned char c;
c = ctk_color_map[color & 0x0f];
c |= ctk_color_map[(color >> 4) & 0x07] << 4;
return c;
}
/*-----------------------------------------------------------------------------------*/ /*-----------------------------------------------------------------------------------*/
static void static void
ctrlhandler(int sig) ctrlhandler(int sig)
@ -212,8 +232,8 @@ clrscr(void)
void void
bgcolor(unsigned char c) bgcolor(unsigned char c)
{ {
c = map_color(c);
color = ((c << 4) | (color & 0xF0)); color = ((c << 4) | (color & 0xF0));
/* Presume this to be one of the first calls. */ /* Presume this to be one of the first calls. */
console_init(); console_init();
} }
@ -339,7 +359,7 @@ cputcxy(unsigned char x, unsigned char y, char c)
void void
textcolor(unsigned char c) textcolor(unsigned char c)
{ {
color = c; color = map_color(c);
setcolor(); setcolor();
} }
/*-----------------------------------------------------------------------------------*/ /*-----------------------------------------------------------------------------------*/

View File

@ -33,8 +33,6 @@
#ifndef __CTK_CONSOLE_H__ #ifndef __CTK_CONSOLE_H__
#define __CTK_CONSOLE_H__ #define __CTK_CONSOLE_H__
#include <curses.h>
#define cputc console_cputc #define cputc console_cputc
#define cputs console_cputs #define cputs console_cputs