00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "colors.h"
00022
00023 using namespace YAPETUI;
00024
00025 bool Colors::initialized = false;
00026
00027 color Colors::colors[] = {
00028
00029 {1, COLOR_WHITE, COLOR_BLUE, A_NORMAL},
00030
00031 {2, COLOR_CYAN, COLOR_BLACK, A_NORMAL},
00032
00033 {3, COLOR_BLACK, COLOR_CYAN, A_NORMAL},
00034
00035 {4, COLOR_BLACK, COLOR_WHITE, A_REVERSE},
00036
00037 {5, COLOR_BLACK, COLOR_YELLOW, A_REVERSE},
00038
00039 {6, COLOR_WHITE, COLOR_BLACK, A_NORMAL},
00040
00041 {7, COLOR_BLACK, COLOR_GREEN, A_REVERSE},
00042
00043 {8, COLOR_WHITE, COLOR_BLUE, A_NORMAL}
00044 };
00045
00046
00047
00048 void
00049 Colors::initColors() {
00050 if (initialized) return;
00051
00052 if (has_colors() == FALSE) {
00053 initialized = true;
00054 return;
00055 }
00056
00057 start_color();
00058 init_pair(colors[DEFAULT].no,
00059 colors[DEFAULT].fg,
00060 colors[DEFAULT].bg);
00061
00062 init_pair(colors[MESSAGEBOX_TITLE].no,
00063 colors[MESSAGEBOX_TITLE].fg,
00064 colors[MESSAGEBOX_TITLE].bg);
00065
00066 init_pair(colors[MESSAGEBOX].no,
00067 colors[MESSAGEBOX].fg,
00068 colors[MESSAGEBOX].bg);
00069
00070 init_pair(colors[INPUTWIDGET_NOFOCUS].no,
00071 colors[INPUTWIDGET_NOFOCUS].fg,
00072 colors[INPUTWIDGET_NOFOCUS].bg);
00073
00074 init_pair(colors[INPUTWIDGET_FOCUS].no,
00075 colors[INPUTWIDGET_FOCUS].fg,
00076 colors[INPUTWIDGET_FOCUS].bg);
00077
00078 init_pair(colors[BUTTON_NOFOCUS].no,
00079 colors[BUTTON_NOFOCUS].fg,
00080 colors[BUTTON_NOFOCUS].bg);
00081
00082 init_pair(colors[BUTTON_FOCUS].no,
00083 colors[BUTTON_FOCUS].fg,
00084 colors[BUTTON_FOCUS].bg);
00085
00086 init_pair(colors[LISTWIDGET].no,
00087 colors[LISTWIDGET].fg,
00088 colors[LISTWIDGET].bg);
00089
00090
00091 initialized = true;
00092 }
00093
00094 void
00095 Colors::setcolor(WINDOW* w, COLORS c) {
00096 if (has_colors() == TRUE) {
00097 wattron(w, COLOR_PAIR(colors[c].no));
00098 wbkgd(w, ' ' | COLOR_PAIR(colors[c].no));
00099 } else {
00100 wattron(w, colors[c].attr);
00101 wbkgd(w, ' ' | colors[c].attr);
00102 }
00103 }
00104
00105 short
00106 Colors::getcolor(COLORS c) {
00107 if (has_colors() == TRUE) {
00108 return colors[c].no;
00109 }
00110 return 0;
00111 }
00112
00113 void
00114 Colors::unsetcolor(WINDOW* w, COLORS c) {
00115 if (has_colors() == TRUE)
00116 wattroff(w, COLOR_PAIR(colors[c].no));
00117 else
00118 wattroff(w, colors[c].attr);
00119
00120 wbkgd(w, ' ');
00121 }