From 22b6c60f459400b2067c27bcdb2acc242bdd206f Mon Sep 17 00:00:00 2001 From: NishiOwO Date: Sat, 11 Oct 2025 06:21:43 +0000 Subject: [PATCH] messagebox git-svn-id: http://svn2.nishi.boats/svn/milsko/trunk@257 b9cfdab3-6d41-4d17-bbe4-086880011989 --- GNUmakefile | 2 +- NTMakefile | 2 +- doc/index.html | 141 ++ include/Mw/Constants.h | 25 + include/Mw/Draw.h | 10 + include/Mw/LowLevel.h | 4 + include/Mw/MessageBox.h | 29 + include/Mw/Milsko.h | 1 + src/backend/gdi.c | 9 + src/backend/x11.c | 22 + src/backend/x11.h | 1 + src/color.c | 2964 +++++++++++++++++++++++++++++++++++++++ src/draw.c | 83 +- src/messagebox.c | 55 + src/widget/submenu.c | 2 +- tools/color.pl | 32 + 16 files changed, 3371 insertions(+), 11 deletions(-) create mode 100644 include/Mw/MessageBox.h create mode 100644 src/color.c create mode 100644 src/messagebox.c create mode 100755 tools/color.pl diff --git a/GNUmakefile b/GNUmakefile index 7680681..5ea51c5 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -26,7 +26,7 @@ L_CFLAGS = $(DEPINC) $(CFLAGS) -fPIC -D_MILSKO L_LDFLAGS = $(LDFLAGS) L_LIBS = $(LIBS) -L_OBJS = src/core.o src/default.o src/draw.o src/lowlevel.o src/font.o src/boldfont.o src/error.o src/unicode.o +L_OBJS = src/core.o src/default.o src/draw.o src/lowlevel.o src/font.o src/boldfont.o src/error.o src/unicode.o src/color.o src/messagebox.o L_OBJS += src/external/ds.o src/external/image.o L_OBJS += src/widget/window.o src/widget/button.o src/widget/frame.o src/widget/menu.o src/widget/submenu.o src/widget/image.o src/widget/scrollbar.o src/widget/checkbox.o src/widget/label.o src/widget/entry.o src/widget/numberentry.o L_OBJS += src/cursor/default.o src/cursor/cross.o src/cursor/text.o diff --git a/NTMakefile b/NTMakefile index ad1e0ac..db18e06 100644 --- a/NTMakefile +++ b/NTMakefile @@ -2,7 +2,7 @@ CC = cl LD = link -OBJS = src\core.obj src\draw.obj src\default.obj src\lowlevel.obj src\error.obj src\unicode.obj src\font.obj src\boldfont.obj src\widget\button.obj src\widget\frame.obj src\widget\opengl.obj src\widget\window.obj src\widget\menu.obj src\widget\entry.obj src\widget\submenu.obj src\widget\image.obj src\widget\scrollbar.obj src\widget\checkbox.obj src\widget\label.obj src\widget\numberentry.obj src\external\ds.obj src\external\image.obj src\cursor\default.obj src\cursor\cross.obj src\cursor\text.obj src\backend\gdi.obj +OBJS = src\core.obj src\draw.obj src\default.obj src\lowlevel.obj src\error.obj src\unicode.obj src\font.obj src\color.obj src\messagebox.obj src\boldfont.obj src\widget\button.obj src\widget\frame.obj src\widget\opengl.obj src\widget\window.obj src\widget\menu.obj src\widget\entry.obj src\widget\submenu.obj src\widget\image.obj src\widget\scrollbar.obj src\widget\checkbox.obj src\widget\label.obj src\widget\numberentry.obj src\external\ds.obj src\external\image.obj src\cursor\default.obj src\cursor\cross.obj src\cursor\text.obj src\backend\gdi.obj OOOBJS = oosrc\base.obj oosrc\widget\button.obj oosrc\widget\frame.obj oosrc\widget\image.obj oosrc\widget\menu.obj oosrc\widget\opengl.obj oosrc\widget\scrollbar.obj oosrc\widget\submenu.obj oosrc\widget\window.obj oosrc\widget\checkbox.obj oosrc\widget\label.obj oosrc\widget\entry.obj oosrc\widget\numberentry.obj CFLAGS = /nologo /DSTBI_NO_SIMD /D_MILSKO /DUSE_GDI /DUSE_STB_IMAGE /Iinclude CXXFLAGS = /nologo /Iinclude diff --git a/doc/index.html b/doc/index.html index bb0d513..9f2190e 100644 --- a/doc/index.html +++ b/doc/index.html @@ -23,6 +23,21 @@
#define MwDEFAULT 0x0fffffff
+
+ #define MwMB_ICONMASK 0xf +
+
+ #define MwMB_ICONWARNING 0x1 +
+
+ #define MwMB_ICONINFO 0x2 +
+
+ #define MwMB_ICONNOTE 0x3 +
+
+ #define MwMB_ICONQUESTION 0x4 +
Mw/Core.h
@@ -176,6 +191,9 @@
MwLoadXPM
+
+ MwParseColorName +
Mw/Error.h
@@ -200,12 +218,30 @@
MwBoldFontData[]
+
+ Mw/Icon.h +
+
+ MwIconInfo[] +
+
+ MwIconNote[] +
+
+ MwIconQuestion[] +
+
+ MwIconWarning[] +
Mw/LowLevel.h
Mw/MachDep.h
+
+ Mw/MessageBox.h +
Mw/Milsko.h
@@ -414,6 +450,41 @@
+
#define MwMB_ICONMASK 0xf
+
+
+ Icon mask. +
+
+
+
#define MwMB_ICONWARNING 0x1
+
+
+ Warning icon. +
+
+
+
#define MwMB_ICONINFO 0x2
+
+
+ Information icon. +
+
+
+
#define MwMB_ICONNOTE 0x3
+
+
+ Note icon. +
+
+
+
#define MwMB_ICONQUESTION 0x4
+
+
+ Question icon. +
+
+

Mw/Core.h

@@ -1705,6 +1776,34 @@

+
MWDECL MwLLColor MwParseColorName (
+	MwWidget handle,
+	const char* color
+);
+
+
+ Parses a color name. +
+
+ Parameter handle +
+
+ Widget. +
+
+ Parameter color +
+
+ Color name. +
+
+ Returns +
+
+ Color. +
+
+

Mw/Error.h

@@ -1763,6 +1862,41 @@

+

Mw/Icon.h

+
+
+ Icon. +
+
+
+
MWDECL char* MwIconInfo[];
+
+
+ Info icon. +
+
+
+
MWDECL char* MwIconNote[];
+
+
+ Note icon. +
+
+
+
MWDECL char* MwIconQuestion[];
+
+
+ Question icon. +
+
+
+
MWDECL char* MwIconWarning[];
+
+
+ Warning icon. +
+
+

Mw/LowLevel.h

@@ -1780,6 +1914,13 @@

+

Mw/MessageBox.h

+
+
+ Message box. +
+
+

Mw/Milsko.h

diff --git a/include/Mw/Constants.h b/include/Mw/Constants.h index d6e6f01..2a47891 100644 --- a/include/Mw/Constants.h +++ b/include/Mw/Constants.h @@ -38,4 +38,29 @@ enum MwALIGNMENT { */ #define MwDEFAULT 0x0fffffff +/*! + * %brief Icon mask + */ +#define MwMB_ICONMASK 0xf + +/*! + * %brief Warning icon + */ +#define MwMB_ICONWARNING 0x1 + +/*! + * %brief Information icon + */ +#define MwMB_ICONINFO 0x2 + +/*! + * %brief Note icon + */ +#define MwMB_ICONNOTE 0x3 + +/*! + * %brief Question icon + */ +#define MwMB_ICONQUESTION 0x4 + #endif diff --git a/include/Mw/Draw.h b/include/Mw/Draw.h index d62d1a7..7a993d1 100644 --- a/include/Mw/Draw.h +++ b/include/Mw/Draw.h @@ -133,6 +133,16 @@ MWDECL MwLLPixmap MwLoadRaw(MwWidget handle, unsigned char* rgb, int width, int */ MWDECL MwLLPixmap MwLoadXPM(MwWidget handle, char** data); +/* color.c */ + +/*! + * %brief Parses a color name + * %param handle Widget + * %param color Color name + * %return Color + */ +MWDECL MwLLColor MwParseColorName(MwWidget handle, const char* color); + #ifdef __cplusplus } #endif diff --git a/include/Mw/LowLevel.h b/include/Mw/LowLevel.h index db62a9c..79b1ed0 100644 --- a/include/Mw/LowLevel.h +++ b/include/Mw/LowLevel.h @@ -90,6 +90,10 @@ MWDECL void MwLLSetCursor(MwLL handle, MwCursor* image, MwCursor* mask); MWDECL void MwLLDetach(MwLL handle, MwPoint* point); MWDECL void MwLLShow(MwLL handle, int show); +MWDECL void MwLLMakePopup(MwLL handle, MwLL parent); + +MWDECL void MwLLSetSizeHints(MwLL handle, int minx, int miny, int maxx, int maxy); + #ifdef __cplusplus } #endif diff --git a/include/Mw/MessageBox.h b/include/Mw/MessageBox.h new file mode 100644 index 0000000..2342e46 --- /dev/null +++ b/include/Mw/MessageBox.h @@ -0,0 +1,29 @@ +/* $Id$ */ +/*! + * %file Mw/MessageBox.h + * %brief Message box + */ +#ifndef __MW_MESSAGEBOX_H__ +#define __MW_MESSAGEBOX_H__ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/*! + * %param handle Widget + * %param text Text + * %param title Title text + * %param flag Flag + * %return Widget + */ +MWDECL MwWidget MwMessageBox(MwWidget handle, const char* text, const char* title, unsigned int flag); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/Mw/Milsko.h b/include/Mw/Milsko.h index 4984b3b..d4d9aa7 100644 --- a/include/Mw/Milsko.h +++ b/include/Mw/Milsko.h @@ -19,6 +19,7 @@ #include #include #include +#include #include #include diff --git a/src/backend/gdi.c b/src/backend/gdi.c index 970aee2..8d79ad6 100644 --- a/src/backend/gdi.c +++ b/src/backend/gdi.c @@ -406,3 +406,12 @@ void MwLLShow(MwLL handle, int show) { ShowWindow(handle->hWnd, show ? SW_NORMAL : SW_HIDE); if(show) SetFocus(handle->hWnd); } + +void MwLLMakePopup(MwLL handle, MwLL parent) { + (void)handle; + (void)parent; + /* TODO */ +} + +void MwLLSetSizeHints(MwLL handle, int minx, int miny, int maxx, int maxy) { +} diff --git a/src/backend/x11.c b/src/backend/x11.c index 08aff70..cb254a4 100644 --- a/src/backend/x11.c +++ b/src/backend/x11.c @@ -452,3 +452,25 @@ void MwLLShow(MwLL handle, int show) { XUnmapWindow(handle->display, handle->window); } } + +void MwLLMakePopup(MwLL handle, MwLL parent) { + Atom wndtype = XInternAtom(handle->display, "_NET_WM_WINDOW_TYPE", False); + Atom wnddlg = XInternAtom(handle->display, "_NET_WM_WINDOW_TYPE_DIALOG", False); + Atom wndstate = XInternAtom(handle->display, "_NET_WM_STATE", False); + Atom wndmodal = XInternAtom(handle->display, "_NET_WM_STATE_MODAL", False); + + XSetTransientForHint(handle->display, handle->window, parent->window); + XChangeProperty(handle->display, handle->window, wndtype, XA_ATOM, 32, PropModeReplace, (unsigned char*)&wnddlg, 1); + XChangeProperty(handle->display, handle->window, wndstate, XA_ATOM, 32, PropModeReplace, (unsigned char*)&wndmodal, 1); +} + +void MwLLSetSizeHints(MwLL handle, int minx, int miny, int maxx, int maxy) { + XSizeHints* hints = XAllocSizeHints(); + hints->flags = PMinSize | PMaxSize; + hints->min_width = minx; + hints->min_height = miny; + hints->max_width = maxx; + hints->max_height = maxy; + XSetWMSizeHints(handle->display, handle->window, hints, XA_WM_NORMAL_HINTS); + XFree(hints); +} diff --git a/src/backend/x11.h b/src/backend/x11.h index 1801436..2ed8982 100644 --- a/src/backend/x11.h +++ b/src/backend/x11.h @@ -8,6 +8,7 @@ #include #include +#include #include #include #include diff --git a/src/color.c b/src/color.c new file mode 100644 index 0000000..cae312c --- /dev/null +++ b/src/color.c @@ -0,0 +1,2964 @@ +/* $Id$ */ +#include + +MwLLColor MwParseColorName(MwWidget handle, const char* color) { + int r, g, b; + if(strcmp(color, "snow") == 0) { + r = 255; + g = 250; + b = 250; + } else if(strcmp(color, "ghost white") == 0) { + r = 248; + g = 248; + b = 255; + } else if(strcmp(color, "GhostWhite") == 0) { + r = 248; + g = 248; + b = 255; + } else if(strcmp(color, "white smoke") == 0) { + r = 245; + g = 245; + b = 245; + } else if(strcmp(color, "WhiteSmoke") == 0) { + r = 245; + g = 245; + b = 245; + } else if(strcmp(color, "gainsboro") == 0) { + r = 220; + g = 220; + b = 220; + } else if(strcmp(color, "floral white") == 0) { + r = 255; + g = 250; + b = 240; + } else if(strcmp(color, "FloralWhite") == 0) { + r = 255; + g = 250; + b = 240; + } else if(strcmp(color, "old lace") == 0) { + r = 253; + g = 245; + b = 230; + } else if(strcmp(color, "OldLace") == 0) { + r = 253; + g = 245; + b = 230; + } else if(strcmp(color, "linen") == 0) { + r = 250; + g = 240; + b = 230; + } else if(strcmp(color, "antique white") == 0) { + r = 250; + g = 235; + b = 215; + } else if(strcmp(color, "AntiqueWhite") == 0) { + r = 250; + g = 235; + b = 215; + } else if(strcmp(color, "papaya whip") == 0) { + r = 255; + g = 239; + b = 213; + } else if(strcmp(color, "PapayaWhip") == 0) { + r = 255; + g = 239; + b = 213; + } else if(strcmp(color, "blanched almond") == 0) { + r = 255; + g = 235; + b = 205; + } else if(strcmp(color, "BlanchedAlmond") == 0) { + r = 255; + g = 235; + b = 205; + } else if(strcmp(color, "bisque") == 0) { + r = 255; + g = 228; + b = 196; + } else if(strcmp(color, "peach puff") == 0) { + r = 255; + g = 218; + b = 185; + } else if(strcmp(color, "PeachPuff") == 0) { + r = 255; + g = 218; + b = 185; + } else if(strcmp(color, "navajo white") == 0) { + r = 255; + g = 222; + b = 173; + } else if(strcmp(color, "NavajoWhite") == 0) { + r = 255; + g = 222; + b = 173; + } else if(strcmp(color, "moccasin") == 0) { + r = 255; + g = 228; + b = 181; + } else if(strcmp(color, "cornsilk") == 0) { + r = 255; + g = 248; + b = 220; + } else if(strcmp(color, "ivory") == 0) { + r = 255; + g = 255; + b = 240; + } else if(strcmp(color, "lemon chiffon") == 0) { + r = 255; + g = 250; + b = 205; + } else if(strcmp(color, "LemonChiffon") == 0) { + r = 255; + g = 250; + b = 205; + } else if(strcmp(color, "seashell") == 0) { + r = 255; + g = 245; + b = 238; + } else if(strcmp(color, "honeydew") == 0) { + r = 240; + g = 255; + b = 240; + } else if(strcmp(color, "mint cream") == 0) { + r = 245; + g = 255; + b = 250; + } else if(strcmp(color, "MintCream") == 0) { + r = 245; + g = 255; + b = 250; + } else if(strcmp(color, "azure") == 0) { + r = 240; + g = 255; + b = 255; + } else if(strcmp(color, "alice blue") == 0) { + r = 240; + g = 248; + b = 255; + } else if(strcmp(color, "AliceBlue") == 0) { + r = 240; + g = 248; + b = 255; + } else if(strcmp(color, "lavender") == 0) { + r = 230; + g = 230; + b = 250; + } else if(strcmp(color, "lavender blush") == 0) { + r = 255; + g = 240; + b = 245; + } else if(strcmp(color, "LavenderBlush") == 0) { + r = 255; + g = 240; + b = 245; + } else if(strcmp(color, "misty rose") == 0) { + r = 255; + g = 228; + b = 225; + } else if(strcmp(color, "MistyRose") == 0) { + r = 255; + g = 228; + b = 225; + } else if(strcmp(color, "white") == 0) { + r = 255; + g = 255; + b = 255; + } else if(strcmp(color, "black") == 0) { + r = 0; + g = 0; + b = 0; + } else if(strcmp(color, "dark slate gray") == 0) { + r = 47; + g = 79; + b = 79; + } else if(strcmp(color, "DarkSlateGray") == 0) { + r = 47; + g = 79; + b = 79; + } else if(strcmp(color, "dark slate grey") == 0) { + r = 47; + g = 79; + b = 79; + } else if(strcmp(color, "DarkSlateGrey") == 0) { + r = 47; + g = 79; + b = 79; + } else if(strcmp(color, "dim gray") == 0) { + r = 105; + g = 105; + b = 105; + } else if(strcmp(color, "DimGray") == 0) { + r = 105; + g = 105; + b = 105; + } else if(strcmp(color, "dim grey") == 0) { + r = 105; + g = 105; + b = 105; + } else if(strcmp(color, "DimGrey") == 0) { + r = 105; + g = 105; + b = 105; + } else if(strcmp(color, "slate gray") == 0) { + r = 112; + g = 128; + b = 144; + } else if(strcmp(color, "SlateGray") == 0) { + r = 112; + g = 128; + b = 144; + } else if(strcmp(color, "slate grey") == 0) { + r = 112; + g = 128; + b = 144; + } else if(strcmp(color, "SlateGrey") == 0) { + r = 112; + g = 128; + b = 144; + } else if(strcmp(color, "light slate gray") == 0) { + r = 119; + g = 136; + b = 153; + } else if(strcmp(color, "LightSlateGray") == 0) { + r = 119; + g = 136; + b = 153; + } else if(strcmp(color, "light slate grey") == 0) { + r = 119; + g = 136; + b = 153; + } else if(strcmp(color, "LightSlateGrey") == 0) { + r = 119; + g = 136; + b = 153; + } else if(strcmp(color, "gray") == 0) { + r = 190; + g = 190; + b = 190; + } else if(strcmp(color, "grey") == 0) { + r = 190; + g = 190; + b = 190; + } else if(strcmp(color, "light grey") == 0) { + r = 211; + g = 211; + b = 211; + } else if(strcmp(color, "LightGrey") == 0) { + r = 211; + g = 211; + b = 211; + } else if(strcmp(color, "light gray") == 0) { + r = 211; + g = 211; + b = 211; + } else if(strcmp(color, "LightGray") == 0) { + r = 211; + g = 211; + b = 211; + } else if(strcmp(color, "midnight blue") == 0) { + r = 25; + g = 25; + b = 112; + } else if(strcmp(color, "MidnightBlue") == 0) { + r = 25; + g = 25; + b = 112; + } else if(strcmp(color, "navy") == 0) { + r = 0; + g = 0; + b = 128; + } else if(strcmp(color, "navy blue") == 0) { + r = 0; + g = 0; + b = 128; + } else if(strcmp(color, "NavyBlue") == 0) { + r = 0; + g = 0; + b = 128; + } else if(strcmp(color, "cornflower blue") == 0) { + r = 100; + g = 149; + b = 237; + } else if(strcmp(color, "CornflowerBlue") == 0) { + r = 100; + g = 149; + b = 237; + } else if(strcmp(color, "dark slate blue") == 0) { + r = 72; + g = 61; + b = 139; + } else if(strcmp(color, "DarkSlateBlue") == 0) { + r = 72; + g = 61; + b = 139; + } else if(strcmp(color, "slate blue") == 0) { + r = 106; + g = 90; + b = 205; + } else if(strcmp(color, "SlateBlue") == 0) { + r = 106; + g = 90; + b = 205; + } else if(strcmp(color, "medium slate blue") == 0) { + r = 123; + g = 104; + b = 238; + } else if(strcmp(color, "MediumSlateBlue") == 0) { + r = 123; + g = 104; + b = 238; + } else if(strcmp(color, "light slate blue") == 0) { + r = 132; + g = 112; + b = 255; + } else if(strcmp(color, "LightSlateBlue") == 0) { + r = 132; + g = 112; + b = 255; + } else if(strcmp(color, "medium blue") == 0) { + r = 0; + g = 0; + b = 205; + } else if(strcmp(color, "MediumBlue") == 0) { + r = 0; + g = 0; + b = 205; + } else if(strcmp(color, "royal blue") == 0) { + r = 65; + g = 105; + b = 225; + } else if(strcmp(color, "RoyalBlue") == 0) { + r = 65; + g = 105; + b = 225; + } else if(strcmp(color, "blue") == 0) { + r = 0; + g = 0; + b = 255; + } else if(strcmp(color, "dodger blue") == 0) { + r = 30; + g = 144; + b = 255; + } else if(strcmp(color, "DodgerBlue") == 0) { + r = 30; + g = 144; + b = 255; + } else if(strcmp(color, "deep sky blue") == 0) { + r = 0; + g = 191; + b = 255; + } else if(strcmp(color, "DeepSkyBlue") == 0) { + r = 0; + g = 191; + b = 255; + } else if(strcmp(color, "sky blue") == 0) { + r = 135; + g = 206; + b = 235; + } else if(strcmp(color, "SkyBlue") == 0) { + r = 135; + g = 206; + b = 235; + } else if(strcmp(color, "light sky blue") == 0) { + r = 135; + g = 206; + b = 250; + } else if(strcmp(color, "LightSkyBlue") == 0) { + r = 135; + g = 206; + b = 250; + } else if(strcmp(color, "steel blue") == 0) { + r = 70; + g = 130; + b = 180; + } else if(strcmp(color, "SteelBlue") == 0) { + r = 70; + g = 130; + b = 180; + } else if(strcmp(color, "light steel blue") == 0) { + r = 176; + g = 196; + b = 222; + } else if(strcmp(color, "LightSteelBlue") == 0) { + r = 176; + g = 196; + b = 222; + } else if(strcmp(color, "light blue") == 0) { + r = 173; + g = 216; + b = 230; + } else if(strcmp(color, "LightBlue") == 0) { + r = 173; + g = 216; + b = 230; + } else if(strcmp(color, "powder blue") == 0) { + r = 176; + g = 224; + b = 230; + } else if(strcmp(color, "PowderBlue") == 0) { + r = 176; + g = 224; + b = 230; + } else if(strcmp(color, "pale turquoise") == 0) { + r = 175; + g = 238; + b = 238; + } else if(strcmp(color, "PaleTurquoise") == 0) { + r = 175; + g = 238; + b = 238; + } else if(strcmp(color, "dark turquoise") == 0) { + r = 0; + g = 206; + b = 209; + } else if(strcmp(color, "DarkTurquoise") == 0) { + r = 0; + g = 206; + b = 209; + } else if(strcmp(color, "medium turquoise") == 0) { + r = 72; + g = 209; + b = 204; + } else if(strcmp(color, "MediumTurquoise") == 0) { + r = 72; + g = 209; + b = 204; + } else if(strcmp(color, "turquoise") == 0) { + r = 64; + g = 224; + b = 208; + } else if(strcmp(color, "cyan") == 0) { + r = 0; + g = 255; + b = 255; + } else if(strcmp(color, "light cyan") == 0) { + r = 224; + g = 255; + b = 255; + } else if(strcmp(color, "LightCyan") == 0) { + r = 224; + g = 255; + b = 255; + } else if(strcmp(color, "cadet blue") == 0) { + r = 95; + g = 158; + b = 160; + } else if(strcmp(color, "CadetBlue") == 0) { + r = 95; + g = 158; + b = 160; + } else if(strcmp(color, "medium aquamarine") == 0) { + r = 102; + g = 205; + b = 170; + } else if(strcmp(color, "MediumAquamarine") == 0) { + r = 102; + g = 205; + b = 170; + } else if(strcmp(color, "aquamarine") == 0) { + r = 127; + g = 255; + b = 212; + } else if(strcmp(color, "dark green") == 0) { + r = 0; + g = 100; + b = 0; + } else if(strcmp(color, "DarkGreen") == 0) { + r = 0; + g = 100; + b = 0; + } else if(strcmp(color, "dark olive green") == 0) { + r = 85; + g = 107; + b = 47; + } else if(strcmp(color, "DarkOliveGreen") == 0) { + r = 85; + g = 107; + b = 47; + } else if(strcmp(color, "dark sea green") == 0) { + r = 143; + g = 188; + b = 143; + } else if(strcmp(color, "DarkSeaGreen") == 0) { + r = 143; + g = 188; + b = 143; + } else if(strcmp(color, "sea green") == 0) { + r = 46; + g = 139; + b = 87; + } else if(strcmp(color, "SeaGreen") == 0) { + r = 46; + g = 139; + b = 87; + } else if(strcmp(color, "medium sea green") == 0) { + r = 60; + g = 179; + b = 113; + } else if(strcmp(color, "MediumSeaGreen") == 0) { + r = 60; + g = 179; + b = 113; + } else if(strcmp(color, "light sea green") == 0) { + r = 32; + g = 178; + b = 170; + } else if(strcmp(color, "LightSeaGreen") == 0) { + r = 32; + g = 178; + b = 170; + } else if(strcmp(color, "pale green") == 0) { + r = 152; + g = 251; + b = 152; + } else if(strcmp(color, "PaleGreen") == 0) { + r = 152; + g = 251; + b = 152; + } else if(strcmp(color, "spring green") == 0) { + r = 0; + g = 255; + b = 127; + } else if(strcmp(color, "SpringGreen") == 0) { + r = 0; + g = 255; + b = 127; + } else if(strcmp(color, "lawn green") == 0) { + r = 124; + g = 252; + b = 0; + } else if(strcmp(color, "LawnGreen") == 0) { + r = 124; + g = 252; + b = 0; + } else if(strcmp(color, "green") == 0) { + r = 0; + g = 255; + b = 0; + } else if(strcmp(color, "chartreuse") == 0) { + r = 127; + g = 255; + b = 0; + } else if(strcmp(color, "medium spring green") == 0) { + r = 0; + g = 250; + b = 154; + } else if(strcmp(color, "MediumSpringGreen") == 0) { + r = 0; + g = 250; + b = 154; + } else if(strcmp(color, "green yellow") == 0) { + r = 173; + g = 255; + b = 47; + } else if(strcmp(color, "GreenYellow") == 0) { + r = 173; + g = 255; + b = 47; + } else if(strcmp(color, "lime green") == 0) { + r = 50; + g = 205; + b = 50; + } else if(strcmp(color, "LimeGreen") == 0) { + r = 50; + g = 205; + b = 50; + } else if(strcmp(color, "yellow green") == 0) { + r = 154; + g = 205; + b = 50; + } else if(strcmp(color, "YellowGreen") == 0) { + r = 154; + g = 205; + b = 50; + } else if(strcmp(color, "forest green") == 0) { + r = 34; + g = 139; + b = 34; + } else if(strcmp(color, "ForestGreen") == 0) { + r = 34; + g = 139; + b = 34; + } else if(strcmp(color, "olive drab") == 0) { + r = 107; + g = 142; + b = 35; + } else if(strcmp(color, "OliveDrab") == 0) { + r = 107; + g = 142; + b = 35; + } else if(strcmp(color, "dark khaki") == 0) { + r = 189; + g = 183; + b = 107; + } else if(strcmp(color, "DarkKhaki") == 0) { + r = 189; + g = 183; + b = 107; + } else if(strcmp(color, "khaki") == 0) { + r = 240; + g = 230; + b = 140; + } else if(strcmp(color, "pale goldenrod") == 0) { + r = 238; + g = 232; + b = 170; + } else if(strcmp(color, "PaleGoldenrod") == 0) { + r = 238; + g = 232; + b = 170; + } else if(strcmp(color, "light goldenrod yellow") == 0) { + r = 250; + g = 250; + b = 210; + } else if(strcmp(color, "LightGoldenrodYellow") == 0) { + r = 250; + g = 250; + b = 210; + } else if(strcmp(color, "light yellow") == 0) { + r = 255; + g = 255; + b = 224; + } else if(strcmp(color, "LightYellow") == 0) { + r = 255; + g = 255; + b = 224; + } else if(strcmp(color, "yellow") == 0) { + r = 255; + g = 255; + b = 0; + } else if(strcmp(color, "gold") == 0) { + r = 255; + g = 215; + b = 0; + } else if(strcmp(color, "light goldenrod") == 0) { + r = 238; + g = 221; + b = 130; + } else if(strcmp(color, "LightGoldenrod") == 0) { + r = 238; + g = 221; + b = 130; + } else if(strcmp(color, "goldenrod") == 0) { + r = 218; + g = 165; + b = 32; + } else if(strcmp(color, "dark goldenrod") == 0) { + r = 184; + g = 134; + b = 11; + } else if(strcmp(color, "DarkGoldenrod") == 0) { + r = 184; + g = 134; + b = 11; + } else if(strcmp(color, "rosy brown") == 0) { + r = 188; + g = 143; + b = 143; + } else if(strcmp(color, "RosyBrown") == 0) { + r = 188; + g = 143; + b = 143; + } else if(strcmp(color, "indian red") == 0) { + r = 205; + g = 92; + b = 92; + } else if(strcmp(color, "IndianRed") == 0) { + r = 205; + g = 92; + b = 92; + } else if(strcmp(color, "saddle brown") == 0) { + r = 139; + g = 69; + b = 19; + } else if(strcmp(color, "SaddleBrown") == 0) { + r = 139; + g = 69; + b = 19; + } else if(strcmp(color, "sienna") == 0) { + r = 160; + g = 82; + b = 45; + } else if(strcmp(color, "peru") == 0) { + r = 205; + g = 133; + b = 63; + } else if(strcmp(color, "burlywood") == 0) { + r = 222; + g = 184; + b = 135; + } else if(strcmp(color, "beige") == 0) { + r = 245; + g = 245; + b = 220; + } else if(strcmp(color, "wheat") == 0) { + r = 245; + g = 222; + b = 179; + } else if(strcmp(color, "sandy brown") == 0) { + r = 244; + g = 164; + b = 96; + } else if(strcmp(color, "SandyBrown") == 0) { + r = 244; + g = 164; + b = 96; + } else if(strcmp(color, "tan") == 0) { + r = 210; + g = 180; + b = 140; + } else if(strcmp(color, "chocolate") == 0) { + r = 210; + g = 105; + b = 30; + } else if(strcmp(color, "firebrick") == 0) { + r = 178; + g = 34; + b = 34; + } else if(strcmp(color, "brown") == 0) { + r = 165; + g = 42; + b = 42; + } else if(strcmp(color, "dark salmon") == 0) { + r = 233; + g = 150; + b = 122; + } else if(strcmp(color, "DarkSalmon") == 0) { + r = 233; + g = 150; + b = 122; + } else if(strcmp(color, "salmon") == 0) { + r = 250; + g = 128; + b = 114; + } else if(strcmp(color, "light salmon") == 0) { + r = 255; + g = 160; + b = 122; + } else if(strcmp(color, "LightSalmon") == 0) { + r = 255; + g = 160; + b = 122; + } else if(strcmp(color, "orange") == 0) { + r = 255; + g = 165; + b = 0; + } else if(strcmp(color, "dark orange") == 0) { + r = 255; + g = 140; + b = 0; + } else if(strcmp(color, "DarkOrange") == 0) { + r = 255; + g = 140; + b = 0; + } else if(strcmp(color, "coral") == 0) { + r = 255; + g = 127; + b = 80; + } else if(strcmp(color, "light coral") == 0) { + r = 240; + g = 128; + b = 128; + } else if(strcmp(color, "LightCoral") == 0) { + r = 240; + g = 128; + b = 128; + } else if(strcmp(color, "tomato") == 0) { + r = 255; + g = 99; + b = 71; + } else if(strcmp(color, "orange red") == 0) { + r = 255; + g = 69; + b = 0; + } else if(strcmp(color, "OrangeRed") == 0) { + r = 255; + g = 69; + b = 0; + } else if(strcmp(color, "red") == 0) { + r = 255; + g = 0; + b = 0; + } else if(strcmp(color, "hot pink") == 0) { + r = 255; + g = 105; + b = 180; + } else if(strcmp(color, "HotPink") == 0) { + r = 255; + g = 105; + b = 180; + } else if(strcmp(color, "deep pink") == 0) { + r = 255; + g = 20; + b = 147; + } else if(strcmp(color, "DeepPink") == 0) { + r = 255; + g = 20; + b = 147; + } else if(strcmp(color, "pink") == 0) { + r = 255; + g = 192; + b = 203; + } else if(strcmp(color, "light pink") == 0) { + r = 255; + g = 182; + b = 193; + } else if(strcmp(color, "LightPink") == 0) { + r = 255; + g = 182; + b = 193; + } else if(strcmp(color, "pale violet red") == 0) { + r = 219; + g = 112; + b = 147; + } else if(strcmp(color, "PaleVioletRed") == 0) { + r = 219; + g = 112; + b = 147; + } else if(strcmp(color, "maroon") == 0) { + r = 176; + g = 48; + b = 96; + } else if(strcmp(color, "medium violet red") == 0) { + r = 199; + g = 21; + b = 133; + } else if(strcmp(color, "MediumVioletRed") == 0) { + r = 199; + g = 21; + b = 133; + } else if(strcmp(color, "violet red") == 0) { + r = 208; + g = 32; + b = 144; + } else if(strcmp(color, "VioletRed") == 0) { + r = 208; + g = 32; + b = 144; + } else if(strcmp(color, "magenta") == 0) { + r = 255; + g = 0; + b = 255; + } else if(strcmp(color, "violet") == 0) { + r = 238; + g = 130; + b = 238; + } else if(strcmp(color, "plum") == 0) { + r = 221; + g = 160; + b = 221; + } else if(strcmp(color, "orchid") == 0) { + r = 218; + g = 112; + b = 214; + } else if(strcmp(color, "medium orchid") == 0) { + r = 186; + g = 85; + b = 211; + } else if(strcmp(color, "MediumOrchid") == 0) { + r = 186; + g = 85; + b = 211; + } else if(strcmp(color, "dark orchid") == 0) { + r = 153; + g = 50; + b = 204; + } else if(strcmp(color, "DarkOrchid") == 0) { + r = 153; + g = 50; + b = 204; + } else if(strcmp(color, "dark violet") == 0) { + r = 148; + g = 0; + b = 211; + } else if(strcmp(color, "DarkViolet") == 0) { + r = 148; + g = 0; + b = 211; + } else if(strcmp(color, "blue violet") == 0) { + r = 138; + g = 43; + b = 226; + } else if(strcmp(color, "BlueViolet") == 0) { + r = 138; + g = 43; + b = 226; + } else if(strcmp(color, "purple") == 0) { + r = 160; + g = 32; + b = 240; + } else if(strcmp(color, "medium purple") == 0) { + r = 147; + g = 112; + b = 219; + } else if(strcmp(color, "MediumPurple") == 0) { + r = 147; + g = 112; + b = 219; + } else if(strcmp(color, "thistle") == 0) { + r = 216; + g = 191; + b = 216; + } else if(strcmp(color, "snow1") == 0) { + r = 255; + g = 250; + b = 250; + } else if(strcmp(color, "snow2") == 0) { + r = 238; + g = 233; + b = 233; + } else if(strcmp(color, "snow3") == 0) { + r = 205; + g = 201; + b = 201; + } else if(strcmp(color, "snow4") == 0) { + r = 139; + g = 137; + b = 137; + } else if(strcmp(color, "seashell1") == 0) { + r = 255; + g = 245; + b = 238; + } else if(strcmp(color, "seashell2") == 0) { + r = 238; + g = 229; + b = 222; + } else if(strcmp(color, "seashell3") == 0) { + r = 205; + g = 197; + b = 191; + } else if(strcmp(color, "seashell4") == 0) { + r = 139; + g = 134; + b = 130; + } else if(strcmp(color, "AntiqueWhite1") == 0) { + r = 255; + g = 239; + b = 219; + } else if(strcmp(color, "AntiqueWhite2") == 0) { + r = 238; + g = 223; + b = 204; + } else if(strcmp(color, "AntiqueWhite3") == 0) { + r = 205; + g = 192; + b = 176; + } else if(strcmp(color, "AntiqueWhite4") == 0) { + r = 139; + g = 131; + b = 120; + } else if(strcmp(color, "bisque1") == 0) { + r = 255; + g = 228; + b = 196; + } else if(strcmp(color, "bisque2") == 0) { + r = 238; + g = 213; + b = 183; + } else if(strcmp(color, "bisque3") == 0) { + r = 205; + g = 183; + b = 158; + } else if(strcmp(color, "bisque4") == 0) { + r = 139; + g = 125; + b = 107; + } else if(strcmp(color, "PeachPuff1") == 0) { + r = 255; + g = 218; + b = 185; + } else if(strcmp(color, "PeachPuff2") == 0) { + r = 238; + g = 203; + b = 173; + } else if(strcmp(color, "PeachPuff3") == 0) { + r = 205; + g = 175; + b = 149; + } else if(strcmp(color, "PeachPuff4") == 0) { + r = 139; + g = 119; + b = 101; + } else if(strcmp(color, "NavajoWhite1") == 0) { + r = 255; + g = 222; + b = 173; + } else if(strcmp(color, "NavajoWhite2") == 0) { + r = 238; + g = 207; + b = 161; + } else if(strcmp(color, "NavajoWhite3") == 0) { + r = 205; + g = 179; + b = 139; + } else if(strcmp(color, "NavajoWhite4") == 0) { + r = 139; + g = 121; + b = 94; + } else if(strcmp(color, "LemonChiffon1") == 0) { + r = 255; + g = 250; + b = 205; + } else if(strcmp(color, "LemonChiffon2") == 0) { + r = 238; + g = 233; + b = 191; + } else if(strcmp(color, "LemonChiffon3") == 0) { + r = 205; + g = 201; + b = 165; + } else if(strcmp(color, "LemonChiffon4") == 0) { + r = 139; + g = 137; + b = 112; + } else if(strcmp(color, "cornsilk1") == 0) { + r = 255; + g = 248; + b = 220; + } else if(strcmp(color, "cornsilk2") == 0) { + r = 238; + g = 232; + b = 205; + } else if(strcmp(color, "cornsilk3") == 0) { + r = 205; + g = 200; + b = 177; + } else if(strcmp(color, "cornsilk4") == 0) { + r = 139; + g = 136; + b = 120; + } else if(strcmp(color, "ivory1") == 0) { + r = 255; + g = 255; + b = 240; + } else if(strcmp(color, "ivory2") == 0) { + r = 238; + g = 238; + b = 224; + } else if(strcmp(color, "ivory3") == 0) { + r = 205; + g = 205; + b = 193; + } else if(strcmp(color, "ivory4") == 0) { + r = 139; + g = 139; + b = 131; + } else if(strcmp(color, "honeydew1") == 0) { + r = 240; + g = 255; + b = 240; + } else if(strcmp(color, "honeydew2") == 0) { + r = 224; + g = 238; + b = 224; + } else if(strcmp(color, "honeydew3") == 0) { + r = 193; + g = 205; + b = 193; + } else if(strcmp(color, "honeydew4") == 0) { + r = 131; + g = 139; + b = 131; + } else if(strcmp(color, "LavenderBlush1") == 0) { + r = 255; + g = 240; + b = 245; + } else if(strcmp(color, "LavenderBlush2") == 0) { + r = 238; + g = 224; + b = 229; + } else if(strcmp(color, "LavenderBlush3") == 0) { + r = 205; + g = 193; + b = 197; + } else if(strcmp(color, "LavenderBlush4") == 0) { + r = 139; + g = 131; + b = 134; + } else if(strcmp(color, "MistyRose1") == 0) { + r = 255; + g = 228; + b = 225; + } else if(strcmp(color, "MistyRose2") == 0) { + r = 238; + g = 213; + b = 210; + } else if(strcmp(color, "MistyRose3") == 0) { + r = 205; + g = 183; + b = 181; + } else if(strcmp(color, "MistyRose4") == 0) { + r = 139; + g = 125; + b = 123; + } else if(strcmp(color, "azure1") == 0) { + r = 240; + g = 255; + b = 255; + } else if(strcmp(color, "azure2") == 0) { + r = 224; + g = 238; + b = 238; + } else if(strcmp(color, "azure3") == 0) { + r = 193; + g = 205; + b = 205; + } else if(strcmp(color, "azure4") == 0) { + r = 131; + g = 139; + b = 139; + } else if(strcmp(color, "SlateBlue1") == 0) { + r = 131; + g = 111; + b = 255; + } else if(strcmp(color, "SlateBlue2") == 0) { + r = 122; + g = 103; + b = 238; + } else if(strcmp(color, "SlateBlue3") == 0) { + r = 105; + g = 89; + b = 205; + } else if(strcmp(color, "SlateBlue4") == 0) { + r = 71; + g = 60; + b = 139; + } else if(strcmp(color, "RoyalBlue1") == 0) { + r = 72; + g = 118; + b = 255; + } else if(strcmp(color, "RoyalBlue2") == 0) { + r = 67; + g = 110; + b = 238; + } else if(strcmp(color, "RoyalBlue3") == 0) { + r = 58; + g = 95; + b = 205; + } else if(strcmp(color, "RoyalBlue4") == 0) { + r = 39; + g = 64; + b = 139; + } else if(strcmp(color, "blue1") == 0) { + r = 0; + g = 0; + b = 255; + } else if(strcmp(color, "blue2") == 0) { + r = 0; + g = 0; + b = 238; + } else if(strcmp(color, "blue3") == 0) { + r = 0; + g = 0; + b = 205; + } else if(strcmp(color, "blue4") == 0) { + r = 0; + g = 0; + b = 139; + } else if(strcmp(color, "DodgerBlue1") == 0) { + r = 30; + g = 144; + b = 255; + } else if(strcmp(color, "DodgerBlue2") == 0) { + r = 28; + g = 134; + b = 238; + } else if(strcmp(color, "DodgerBlue3") == 0) { + r = 24; + g = 116; + b = 205; + } else if(strcmp(color, "DodgerBlue4") == 0) { + r = 16; + g = 78; + b = 139; + } else if(strcmp(color, "SteelBlue1") == 0) { + r = 99; + g = 184; + b = 255; + } else if(strcmp(color, "SteelBlue2") == 0) { + r = 92; + g = 172; + b = 238; + } else if(strcmp(color, "SteelBlue3") == 0) { + r = 79; + g = 148; + b = 205; + } else if(strcmp(color, "SteelBlue4") == 0) { + r = 54; + g = 100; + b = 139; + } else if(strcmp(color, "DeepSkyBlue1") == 0) { + r = 0; + g = 191; + b = 255; + } else if(strcmp(color, "DeepSkyBlue2") == 0) { + r = 0; + g = 178; + b = 238; + } else if(strcmp(color, "DeepSkyBlue3") == 0) { + r = 0; + g = 154; + b = 205; + } else if(strcmp(color, "DeepSkyBlue4") == 0) { + r = 0; + g = 104; + b = 139; + } else if(strcmp(color, "SkyBlue1") == 0) { + r = 135; + g = 206; + b = 255; + } else if(strcmp(color, "SkyBlue2") == 0) { + r = 126; + g = 192; + b = 238; + } else if(strcmp(color, "SkyBlue3") == 0) { + r = 108; + g = 166; + b = 205; + } else if(strcmp(color, "SkyBlue4") == 0) { + r = 74; + g = 112; + b = 139; + } else if(strcmp(color, "LightSkyBlue1") == 0) { + r = 176; + g = 226; + b = 255; + } else if(strcmp(color, "LightSkyBlue2") == 0) { + r = 164; + g = 211; + b = 238; + } else if(strcmp(color, "LightSkyBlue3") == 0) { + r = 141; + g = 182; + b = 205; + } else if(strcmp(color, "LightSkyBlue4") == 0) { + r = 96; + g = 123; + b = 139; + } else if(strcmp(color, "SlateGray1") == 0) { + r = 198; + g = 226; + b = 255; + } else if(strcmp(color, "SlateGray2") == 0) { + r = 185; + g = 211; + b = 238; + } else if(strcmp(color, "SlateGray3") == 0) { + r = 159; + g = 182; + b = 205; + } else if(strcmp(color, "SlateGray4") == 0) { + r = 108; + g = 123; + b = 139; + } else if(strcmp(color, "LightSteelBlue1") == 0) { + r = 202; + g = 225; + b = 255; + } else if(strcmp(color, "LightSteelBlue2") == 0) { + r = 188; + g = 210; + b = 238; + } else if(strcmp(color, "LightSteelBlue3") == 0) { + r = 162; + g = 181; + b = 205; + } else if(strcmp(color, "LightSteelBlue4") == 0) { + r = 110; + g = 123; + b = 139; + } else if(strcmp(color, "LightBlue1") == 0) { + r = 191; + g = 239; + b = 255; + } else if(strcmp(color, "LightBlue2") == 0) { + r = 178; + g = 223; + b = 238; + } else if(strcmp(color, "LightBlue3") == 0) { + r = 154; + g = 192; + b = 205; + } else if(strcmp(color, "LightBlue4") == 0) { + r = 104; + g = 131; + b = 139; + } else if(strcmp(color, "LightCyan1") == 0) { + r = 224; + g = 255; + b = 255; + } else if(strcmp(color, "LightCyan2") == 0) { + r = 209; + g = 238; + b = 238; + } else if(strcmp(color, "LightCyan3") == 0) { + r = 180; + g = 205; + b = 205; + } else if(strcmp(color, "LightCyan4") == 0) { + r = 122; + g = 139; + b = 139; + } else if(strcmp(color, "PaleTurquoise1") == 0) { + r = 187; + g = 255; + b = 255; + } else if(strcmp(color, "PaleTurquoise2") == 0) { + r = 174; + g = 238; + b = 238; + } else if(strcmp(color, "PaleTurquoise3") == 0) { + r = 150; + g = 205; + b = 205; + } else if(strcmp(color, "PaleTurquoise4") == 0) { + r = 102; + g = 139; + b = 139; + } else if(strcmp(color, "CadetBlue1") == 0) { + r = 152; + g = 245; + b = 255; + } else if(strcmp(color, "CadetBlue2") == 0) { + r = 142; + g = 229; + b = 238; + } else if(strcmp(color, "CadetBlue3") == 0) { + r = 122; + g = 197; + b = 205; + } else if(strcmp(color, "CadetBlue4") == 0) { + r = 83; + g = 134; + b = 139; + } else if(strcmp(color, "turquoise1") == 0) { + r = 0; + g = 245; + b = 255; + } else if(strcmp(color, "turquoise2") == 0) { + r = 0; + g = 229; + b = 238; + } else if(strcmp(color, "turquoise3") == 0) { + r = 0; + g = 197; + b = 205; + } else if(strcmp(color, "turquoise4") == 0) { + r = 0; + g = 134; + b = 139; + } else if(strcmp(color, "cyan1") == 0) { + r = 0; + g = 255; + b = 255; + } else if(strcmp(color, "cyan2") == 0) { + r = 0; + g = 238; + b = 238; + } else if(strcmp(color, "cyan3") == 0) { + r = 0; + g = 205; + b = 205; + } else if(strcmp(color, "cyan4") == 0) { + r = 0; + g = 139; + b = 139; + } else if(strcmp(color, "DarkSlateGray1") == 0) { + r = 151; + g = 255; + b = 255; + } else if(strcmp(color, "DarkSlateGray2") == 0) { + r = 141; + g = 238; + b = 238; + } else if(strcmp(color, "DarkSlateGray3") == 0) { + r = 121; + g = 205; + b = 205; + } else if(strcmp(color, "DarkSlateGray4") == 0) { + r = 82; + g = 139; + b = 139; + } else if(strcmp(color, "aquamarine1") == 0) { + r = 127; + g = 255; + b = 212; + } else if(strcmp(color, "aquamarine2") == 0) { + r = 118; + g = 238; + b = 198; + } else if(strcmp(color, "aquamarine3") == 0) { + r = 102; + g = 205; + b = 170; + } else if(strcmp(color, "aquamarine4") == 0) { + r = 69; + g = 139; + b = 116; + } else if(strcmp(color, "DarkSeaGreen1") == 0) { + r = 193; + g = 255; + b = 193; + } else if(strcmp(color, "DarkSeaGreen2") == 0) { + r = 180; + g = 238; + b = 180; + } else if(strcmp(color, "DarkSeaGreen3") == 0) { + r = 155; + g = 205; + b = 155; + } else if(strcmp(color, "DarkSeaGreen4") == 0) { + r = 105; + g = 139; + b = 105; + } else if(strcmp(color, "SeaGreen1") == 0) { + r = 84; + g = 255; + b = 159; + } else if(strcmp(color, "SeaGreen2") == 0) { + r = 78; + g = 238; + b = 148; + } else if(strcmp(color, "SeaGreen3") == 0) { + r = 67; + g = 205; + b = 128; + } else if(strcmp(color, "SeaGreen4") == 0) { + r = 46; + g = 139; + b = 87; + } else if(strcmp(color, "PaleGreen1") == 0) { + r = 154; + g = 255; + b = 154; + } else if(strcmp(color, "PaleGreen2") == 0) { + r = 144; + g = 238; + b = 144; + } else if(strcmp(color, "PaleGreen3") == 0) { + r = 124; + g = 205; + b = 124; + } else if(strcmp(color, "PaleGreen4") == 0) { + r = 84; + g = 139; + b = 84; + } else if(strcmp(color, "SpringGreen1") == 0) { + r = 0; + g = 255; + b = 127; + } else if(strcmp(color, "SpringGreen2") == 0) { + r = 0; + g = 238; + b = 118; + } else if(strcmp(color, "SpringGreen3") == 0) { + r = 0; + g = 205; + b = 102; + } else if(strcmp(color, "SpringGreen4") == 0) { + r = 0; + g = 139; + b = 69; + } else if(strcmp(color, "green1") == 0) { + r = 0; + g = 255; + b = 0; + } else if(strcmp(color, "green2") == 0) { + r = 0; + g = 238; + b = 0; + } else if(strcmp(color, "green3") == 0) { + r = 0; + g = 205; + b = 0; + } else if(strcmp(color, "green4") == 0) { + r = 0; + g = 139; + b = 0; + } else if(strcmp(color, "chartreuse1") == 0) { + r = 127; + g = 255; + b = 0; + } else if(strcmp(color, "chartreuse2") == 0) { + r = 118; + g = 238; + b = 0; + } else if(strcmp(color, "chartreuse3") == 0) { + r = 102; + g = 205; + b = 0; + } else if(strcmp(color, "chartreuse4") == 0) { + r = 69; + g = 139; + b = 0; + } else if(strcmp(color, "OliveDrab1") == 0) { + r = 192; + g = 255; + b = 62; + } else if(strcmp(color, "OliveDrab2") == 0) { + r = 179; + g = 238; + b = 58; + } else if(strcmp(color, "OliveDrab3") == 0) { + r = 154; + g = 205; + b = 50; + } else if(strcmp(color, "OliveDrab4") == 0) { + r = 105; + g = 139; + b = 34; + } else if(strcmp(color, "DarkOliveGreen1") == 0) { + r = 202; + g = 255; + b = 112; + } else if(strcmp(color, "DarkOliveGreen2") == 0) { + r = 188; + g = 238; + b = 104; + } else if(strcmp(color, "DarkOliveGreen3") == 0) { + r = 162; + g = 205; + b = 90; + } else if(strcmp(color, "DarkOliveGreen4") == 0) { + r = 110; + g = 139; + b = 61; + } else if(strcmp(color, "khaki1") == 0) { + r = 255; + g = 246; + b = 143; + } else if(strcmp(color, "khaki2") == 0) { + r = 238; + g = 230; + b = 133; + } else if(strcmp(color, "khaki3") == 0) { + r = 205; + g = 198; + b = 115; + } else if(strcmp(color, "khaki4") == 0) { + r = 139; + g = 134; + b = 78; + } else if(strcmp(color, "LightGoldenrod1") == 0) { + r = 255; + g = 236; + b = 139; + } else if(strcmp(color, "LightGoldenrod2") == 0) { + r = 238; + g = 220; + b = 130; + } else if(strcmp(color, "LightGoldenrod3") == 0) { + r = 205; + g = 190; + b = 112; + } else if(strcmp(color, "LightGoldenrod4") == 0) { + r = 139; + g = 129; + b = 76; + } else if(strcmp(color, "LightYellow1") == 0) { + r = 255; + g = 255; + b = 224; + } else if(strcmp(color, "LightYellow2") == 0) { + r = 238; + g = 238; + b = 209; + } else if(strcmp(color, "LightYellow3") == 0) { + r = 205; + g = 205; + b = 180; + } else if(strcmp(color, "LightYellow4") == 0) { + r = 139; + g = 139; + b = 122; + } else if(strcmp(color, "yellow1") == 0) { + r = 255; + g = 255; + b = 0; + } else if(strcmp(color, "yellow2") == 0) { + r = 238; + g = 238; + b = 0; + } else if(strcmp(color, "yellow3") == 0) { + r = 205; + g = 205; + b = 0; + } else if(strcmp(color, "yellow4") == 0) { + r = 139; + g = 139; + b = 0; + } else if(strcmp(color, "gold1") == 0) { + r = 255; + g = 215; + b = 0; + } else if(strcmp(color, "gold2") == 0) { + r = 238; + g = 201; + b = 0; + } else if(strcmp(color, "gold3") == 0) { + r = 205; + g = 173; + b = 0; + } else if(strcmp(color, "gold4") == 0) { + r = 139; + g = 117; + b = 0; + } else if(strcmp(color, "goldenrod1") == 0) { + r = 255; + g = 193; + b = 37; + } else if(strcmp(color, "goldenrod2") == 0) { + r = 238; + g = 180; + b = 34; + } else if(strcmp(color, "goldenrod3") == 0) { + r = 205; + g = 155; + b = 29; + } else if(strcmp(color, "goldenrod4") == 0) { + r = 139; + g = 105; + b = 20; + } else if(strcmp(color, "DarkGoldenrod1") == 0) { + r = 255; + g = 185; + b = 15; + } else if(strcmp(color, "DarkGoldenrod2") == 0) { + r = 238; + g = 173; + b = 14; + } else if(strcmp(color, "DarkGoldenrod3") == 0) { + r = 205; + g = 149; + b = 12; + } else if(strcmp(color, "DarkGoldenrod4") == 0) { + r = 139; + g = 101; + b = 8; + } else if(strcmp(color, "RosyBrown1") == 0) { + r = 255; + g = 193; + b = 193; + } else if(strcmp(color, "RosyBrown2") == 0) { + r = 238; + g = 180; + b = 180; + } else if(strcmp(color, "RosyBrown3") == 0) { + r = 205; + g = 155; + b = 155; + } else if(strcmp(color, "RosyBrown4") == 0) { + r = 139; + g = 105; + b = 105; + } else if(strcmp(color, "IndianRed1") == 0) { + r = 255; + g = 106; + b = 106; + } else if(strcmp(color, "IndianRed2") == 0) { + r = 238; + g = 99; + b = 99; + } else if(strcmp(color, "IndianRed3") == 0) { + r = 205; + g = 85; + b = 85; + } else if(strcmp(color, "IndianRed4") == 0) { + r = 139; + g = 58; + b = 58; + } else if(strcmp(color, "sienna1") == 0) { + r = 255; + g = 130; + b = 71; + } else if(strcmp(color, "sienna2") == 0) { + r = 238; + g = 121; + b = 66; + } else if(strcmp(color, "sienna3") == 0) { + r = 205; + g = 104; + b = 57; + } else if(strcmp(color, "sienna4") == 0) { + r = 139; + g = 71; + b = 38; + } else if(strcmp(color, "burlywood1") == 0) { + r = 255; + g = 211; + b = 155; + } else if(strcmp(color, "burlywood2") == 0) { + r = 238; + g = 197; + b = 145; + } else if(strcmp(color, "burlywood3") == 0) { + r = 205; + g = 170; + b = 125; + } else if(strcmp(color, "burlywood4") == 0) { + r = 139; + g = 115; + b = 85; + } else if(strcmp(color, "wheat1") == 0) { + r = 255; + g = 231; + b = 186; + } else if(strcmp(color, "wheat2") == 0) { + r = 238; + g = 216; + b = 174; + } else if(strcmp(color, "wheat3") == 0) { + r = 205; + g = 186; + b = 150; + } else if(strcmp(color, "wheat4") == 0) { + r = 139; + g = 126; + b = 102; + } else if(strcmp(color, "tan1") == 0) { + r = 255; + g = 165; + b = 79; + } else if(strcmp(color, "tan2") == 0) { + r = 238; + g = 154; + b = 73; + } else if(strcmp(color, "tan3") == 0) { + r = 205; + g = 133; + b = 63; + } else if(strcmp(color, "tan4") == 0) { + r = 139; + g = 90; + b = 43; + } else if(strcmp(color, "chocolate1") == 0) { + r = 255; + g = 127; + b = 36; + } else if(strcmp(color, "chocolate2") == 0) { + r = 238; + g = 118; + b = 33; + } else if(strcmp(color, "chocolate3") == 0) { + r = 205; + g = 102; + b = 29; + } else if(strcmp(color, "chocolate4") == 0) { + r = 139; + g = 69; + b = 19; + } else if(strcmp(color, "firebrick1") == 0) { + r = 255; + g = 48; + b = 48; + } else if(strcmp(color, "firebrick2") == 0) { + r = 238; + g = 44; + b = 44; + } else if(strcmp(color, "firebrick3") == 0) { + r = 205; + g = 38; + b = 38; + } else if(strcmp(color, "firebrick4") == 0) { + r = 139; + g = 26; + b = 26; + } else if(strcmp(color, "brown1") == 0) { + r = 255; + g = 64; + b = 64; + } else if(strcmp(color, "brown2") == 0) { + r = 238; + g = 59; + b = 59; + } else if(strcmp(color, "brown3") == 0) { + r = 205; + g = 51; + b = 51; + } else if(strcmp(color, "brown4") == 0) { + r = 139; + g = 35; + b = 35; + } else if(strcmp(color, "salmon1") == 0) { + r = 255; + g = 140; + b = 105; + } else if(strcmp(color, "salmon2") == 0) { + r = 238; + g = 130; + b = 98; + } else if(strcmp(color, "salmon3") == 0) { + r = 205; + g = 112; + b = 84; + } else if(strcmp(color, "salmon4") == 0) { + r = 139; + g = 76; + b = 57; + } else if(strcmp(color, "LightSalmon1") == 0) { + r = 255; + g = 160; + b = 122; + } else if(strcmp(color, "LightSalmon2") == 0) { + r = 238; + g = 149; + b = 114; + } else if(strcmp(color, "LightSalmon3") == 0) { + r = 205; + g = 129; + b = 98; + } else if(strcmp(color, "LightSalmon4") == 0) { + r = 139; + g = 87; + b = 66; + } else if(strcmp(color, "orange1") == 0) { + r = 255; + g = 165; + b = 0; + } else if(strcmp(color, "orange2") == 0) { + r = 238; + g = 154; + b = 0; + } else if(strcmp(color, "orange3") == 0) { + r = 205; + g = 133; + b = 0; + } else if(strcmp(color, "orange4") == 0) { + r = 139; + g = 90; + b = 0; + } else if(strcmp(color, "DarkOrange1") == 0) { + r = 255; + g = 127; + b = 0; + } else if(strcmp(color, "DarkOrange2") == 0) { + r = 238; + g = 118; + b = 0; + } else if(strcmp(color, "DarkOrange3") == 0) { + r = 205; + g = 102; + b = 0; + } else if(strcmp(color, "DarkOrange4") == 0) { + r = 139; + g = 69; + b = 0; + } else if(strcmp(color, "coral1") == 0) { + r = 255; + g = 114; + b = 86; + } else if(strcmp(color, "coral2") == 0) { + r = 238; + g = 106; + b = 80; + } else if(strcmp(color, "coral3") == 0) { + r = 205; + g = 91; + b = 69; + } else if(strcmp(color, "coral4") == 0) { + r = 139; + g = 62; + b = 47; + } else if(strcmp(color, "tomato1") == 0) { + r = 255; + g = 99; + b = 71; + } else if(strcmp(color, "tomato2") == 0) { + r = 238; + g = 92; + b = 66; + } else if(strcmp(color, "tomato3") == 0) { + r = 205; + g = 79; + b = 57; + } else if(strcmp(color, "tomato4") == 0) { + r = 139; + g = 54; + b = 38; + } else if(strcmp(color, "OrangeRed1") == 0) { + r = 255; + g = 69; + b = 0; + } else if(strcmp(color, "OrangeRed2") == 0) { + r = 238; + g = 64; + b = 0; + } else if(strcmp(color, "OrangeRed3") == 0) { + r = 205; + g = 55; + b = 0; + } else if(strcmp(color, "OrangeRed4") == 0) { + r = 139; + g = 37; + b = 0; + } else if(strcmp(color, "red1") == 0) { + r = 255; + g = 0; + b = 0; + } else if(strcmp(color, "red2") == 0) { + r = 238; + g = 0; + b = 0; + } else if(strcmp(color, "red3") == 0) { + r = 205; + g = 0; + b = 0; + } else if(strcmp(color, "red4") == 0) { + r = 139; + g = 0; + b = 0; + } else if(strcmp(color, "DeepPink1") == 0) { + r = 255; + g = 20; + b = 147; + } else if(strcmp(color, "DeepPink2") == 0) { + r = 238; + g = 18; + b = 137; + } else if(strcmp(color, "DeepPink3") == 0) { + r = 205; + g = 16; + b = 118; + } else if(strcmp(color, "DeepPink4") == 0) { + r = 139; + g = 10; + b = 80; + } else if(strcmp(color, "HotPink1") == 0) { + r = 255; + g = 110; + b = 180; + } else if(strcmp(color, "HotPink2") == 0) { + r = 238; + g = 106; + b = 167; + } else if(strcmp(color, "HotPink3") == 0) { + r = 205; + g = 96; + b = 144; + } else if(strcmp(color, "HotPink4") == 0) { + r = 139; + g = 58; + b = 98; + } else if(strcmp(color, "pink1") == 0) { + r = 255; + g = 181; + b = 197; + } else if(strcmp(color, "pink2") == 0) { + r = 238; + g = 169; + b = 184; + } else if(strcmp(color, "pink3") == 0) { + r = 205; + g = 145; + b = 158; + } else if(strcmp(color, "pink4") == 0) { + r = 139; + g = 99; + b = 108; + } else if(strcmp(color, "LightPink1") == 0) { + r = 255; + g = 174; + b = 185; + } else if(strcmp(color, "LightPink2") == 0) { + r = 238; + g = 162; + b = 173; + } else if(strcmp(color, "LightPink3") == 0) { + r = 205; + g = 140; + b = 149; + } else if(strcmp(color, "LightPink4") == 0) { + r = 139; + g = 95; + b = 101; + } else if(strcmp(color, "PaleVioletRed1") == 0) { + r = 255; + g = 130; + b = 171; + } else if(strcmp(color, "PaleVioletRed2") == 0) { + r = 238; + g = 121; + b = 159; + } else if(strcmp(color, "PaleVioletRed3") == 0) { + r = 205; + g = 104; + b = 137; + } else if(strcmp(color, "PaleVioletRed4") == 0) { + r = 139; + g = 71; + b = 93; + } else if(strcmp(color, "maroon1") == 0) { + r = 255; + g = 52; + b = 179; + } else if(strcmp(color, "maroon2") == 0) { + r = 238; + g = 48; + b = 167; + } else if(strcmp(color, "maroon3") == 0) { + r = 205; + g = 41; + b = 144; + } else if(strcmp(color, "maroon4") == 0) { + r = 139; + g = 28; + b = 98; + } else if(strcmp(color, "VioletRed1") == 0) { + r = 255; + g = 62; + b = 150; + } else if(strcmp(color, "VioletRed2") == 0) { + r = 238; + g = 58; + b = 140; + } else if(strcmp(color, "VioletRed3") == 0) { + r = 205; + g = 50; + b = 120; + } else if(strcmp(color, "VioletRed4") == 0) { + r = 139; + g = 34; + b = 82; + } else if(strcmp(color, "magenta1") == 0) { + r = 255; + g = 0; + b = 255; + } else if(strcmp(color, "magenta2") == 0) { + r = 238; + g = 0; + b = 238; + } else if(strcmp(color, "magenta3") == 0) { + r = 205; + g = 0; + b = 205; + } else if(strcmp(color, "magenta4") == 0) { + r = 139; + g = 0; + b = 139; + } else if(strcmp(color, "orchid1") == 0) { + r = 255; + g = 131; + b = 250; + } else if(strcmp(color, "orchid2") == 0) { + r = 238; + g = 122; + b = 233; + } else if(strcmp(color, "orchid3") == 0) { + r = 205; + g = 105; + b = 201; + } else if(strcmp(color, "orchid4") == 0) { + r = 139; + g = 71; + b = 137; + } else if(strcmp(color, "plum1") == 0) { + r = 255; + g = 187; + b = 255; + } else if(strcmp(color, "plum2") == 0) { + r = 238; + g = 174; + b = 238; + } else if(strcmp(color, "plum3") == 0) { + r = 205; + g = 150; + b = 205; + } else if(strcmp(color, "plum4") == 0) { + r = 139; + g = 102; + b = 139; + } else if(strcmp(color, "MediumOrchid1") == 0) { + r = 224; + g = 102; + b = 255; + } else if(strcmp(color, "MediumOrchid2") == 0) { + r = 209; + g = 95; + b = 238; + } else if(strcmp(color, "MediumOrchid3") == 0) { + r = 180; + g = 82; + b = 205; + } else if(strcmp(color, "MediumOrchid4") == 0) { + r = 122; + g = 55; + b = 139; + } else if(strcmp(color, "DarkOrchid1") == 0) { + r = 191; + g = 62; + b = 255; + } else if(strcmp(color, "DarkOrchid2") == 0) { + r = 178; + g = 58; + b = 238; + } else if(strcmp(color, "DarkOrchid3") == 0) { + r = 154; + g = 50; + b = 205; + } else if(strcmp(color, "DarkOrchid4") == 0) { + r = 104; + g = 34; + b = 139; + } else if(strcmp(color, "purple1") == 0) { + r = 155; + g = 48; + b = 255; + } else if(strcmp(color, "purple2") == 0) { + r = 145; + g = 44; + b = 238; + } else if(strcmp(color, "purple3") == 0) { + r = 125; + g = 38; + b = 205; + } else if(strcmp(color, "purple4") == 0) { + r = 85; + g = 26; + b = 139; + } else if(strcmp(color, "MediumPurple1") == 0) { + r = 171; + g = 130; + b = 255; + } else if(strcmp(color, "MediumPurple2") == 0) { + r = 159; + g = 121; + b = 238; + } else if(strcmp(color, "MediumPurple3") == 0) { + r = 137; + g = 104; + b = 205; + } else if(strcmp(color, "MediumPurple4") == 0) { + r = 93; + g = 71; + b = 139; + } else if(strcmp(color, "thistle1") == 0) { + r = 255; + g = 225; + b = 255; + } else if(strcmp(color, "thistle2") == 0) { + r = 238; + g = 210; + b = 238; + } else if(strcmp(color, "thistle3") == 0) { + r = 205; + g = 181; + b = 205; + } else if(strcmp(color, "thistle4") == 0) { + r = 139; + g = 123; + b = 139; + } else if(strcmp(color, "gray0") == 0) { + r = 0; + g = 0; + b = 0; + } else if(strcmp(color, "grey0") == 0) { + r = 0; + g = 0; + b = 0; + } else if(strcmp(color, "gray1") == 0) { + r = 3; + g = 3; + b = 3; + } else if(strcmp(color, "grey1") == 0) { + r = 3; + g = 3; + b = 3; + } else if(strcmp(color, "gray2") == 0) { + r = 5; + g = 5; + b = 5; + } else if(strcmp(color, "grey2") == 0) { + r = 5; + g = 5; + b = 5; + } else if(strcmp(color, "gray3") == 0) { + r = 8; + g = 8; + b = 8; + } else if(strcmp(color, "grey3") == 0) { + r = 8; + g = 8; + b = 8; + } else if(strcmp(color, "gray4") == 0) { + r = 10; + g = 10; + b = 10; + } else if(strcmp(color, "grey4") == 0) { + r = 10; + g = 10; + b = 10; + } else if(strcmp(color, "gray5") == 0) { + r = 13; + g = 13; + b = 13; + } else if(strcmp(color, "grey5") == 0) { + r = 13; + g = 13; + b = 13; + } else if(strcmp(color, "gray6") == 0) { + r = 15; + g = 15; + b = 15; + } else if(strcmp(color, "grey6") == 0) { + r = 15; + g = 15; + b = 15; + } else if(strcmp(color, "gray7") == 0) { + r = 18; + g = 18; + b = 18; + } else if(strcmp(color, "grey7") == 0) { + r = 18; + g = 18; + b = 18; + } else if(strcmp(color, "gray8") == 0) { + r = 20; + g = 20; + b = 20; + } else if(strcmp(color, "grey8") == 0) { + r = 20; + g = 20; + b = 20; + } else if(strcmp(color, "gray9") == 0) { + r = 23; + g = 23; + b = 23; + } else if(strcmp(color, "grey9") == 0) { + r = 23; + g = 23; + b = 23; + } else if(strcmp(color, "gray10") == 0) { + r = 26; + g = 26; + b = 26; + } else if(strcmp(color, "grey10") == 0) { + r = 26; + g = 26; + b = 26; + } else if(strcmp(color, "gray11") == 0) { + r = 28; + g = 28; + b = 28; + } else if(strcmp(color, "grey11") == 0) { + r = 28; + g = 28; + b = 28; + } else if(strcmp(color, "gray12") == 0) { + r = 31; + g = 31; + b = 31; + } else if(strcmp(color, "grey12") == 0) { + r = 31; + g = 31; + b = 31; + } else if(strcmp(color, "gray13") == 0) { + r = 33; + g = 33; + b = 33; + } else if(strcmp(color, "grey13") == 0) { + r = 33; + g = 33; + b = 33; + } else if(strcmp(color, "gray14") == 0) { + r = 36; + g = 36; + b = 36; + } else if(strcmp(color, "grey14") == 0) { + r = 36; + g = 36; + b = 36; + } else if(strcmp(color, "gray15") == 0) { + r = 38; + g = 38; + b = 38; + } else if(strcmp(color, "grey15") == 0) { + r = 38; + g = 38; + b = 38; + } else if(strcmp(color, "gray16") == 0) { + r = 41; + g = 41; + b = 41; + } else if(strcmp(color, "grey16") == 0) { + r = 41; + g = 41; + b = 41; + } else if(strcmp(color, "gray17") == 0) { + r = 43; + g = 43; + b = 43; + } else if(strcmp(color, "grey17") == 0) { + r = 43; + g = 43; + b = 43; + } else if(strcmp(color, "gray18") == 0) { + r = 46; + g = 46; + b = 46; + } else if(strcmp(color, "grey18") == 0) { + r = 46; + g = 46; + b = 46; + } else if(strcmp(color, "gray19") == 0) { + r = 48; + g = 48; + b = 48; + } else if(strcmp(color, "grey19") == 0) { + r = 48; + g = 48; + b = 48; + } else if(strcmp(color, "gray20") == 0) { + r = 51; + g = 51; + b = 51; + } else if(strcmp(color, "grey20") == 0) { + r = 51; + g = 51; + b = 51; + } else if(strcmp(color, "gray21") == 0) { + r = 54; + g = 54; + b = 54; + } else if(strcmp(color, "grey21") == 0) { + r = 54; + g = 54; + b = 54; + } else if(strcmp(color, "gray22") == 0) { + r = 56; + g = 56; + b = 56; + } else if(strcmp(color, "grey22") == 0) { + r = 56; + g = 56; + b = 56; + } else if(strcmp(color, "gray23") == 0) { + r = 59; + g = 59; + b = 59; + } else if(strcmp(color, "grey23") == 0) { + r = 59; + g = 59; + b = 59; + } else if(strcmp(color, "gray24") == 0) { + r = 61; + g = 61; + b = 61; + } else if(strcmp(color, "grey24") == 0) { + r = 61; + g = 61; + b = 61; + } else if(strcmp(color, "gray25") == 0) { + r = 64; + g = 64; + b = 64; + } else if(strcmp(color, "grey25") == 0) { + r = 64; + g = 64; + b = 64; + } else if(strcmp(color, "gray26") == 0) { + r = 66; + g = 66; + b = 66; + } else if(strcmp(color, "grey26") == 0) { + r = 66; + g = 66; + b = 66; + } else if(strcmp(color, "gray27") == 0) { + r = 69; + g = 69; + b = 69; + } else if(strcmp(color, "grey27") == 0) { + r = 69; + g = 69; + b = 69; + } else if(strcmp(color, "gray28") == 0) { + r = 71; + g = 71; + b = 71; + } else if(strcmp(color, "grey28") == 0) { + r = 71; + g = 71; + b = 71; + } else if(strcmp(color, "gray29") == 0) { + r = 74; + g = 74; + b = 74; + } else if(strcmp(color, "grey29") == 0) { + r = 74; + g = 74; + b = 74; + } else if(strcmp(color, "gray30") == 0) { + r = 77; + g = 77; + b = 77; + } else if(strcmp(color, "grey30") == 0) { + r = 77; + g = 77; + b = 77; + } else if(strcmp(color, "gray31") == 0) { + r = 79; + g = 79; + b = 79; + } else if(strcmp(color, "grey31") == 0) { + r = 79; + g = 79; + b = 79; + } else if(strcmp(color, "gray32") == 0) { + r = 82; + g = 82; + b = 82; + } else if(strcmp(color, "grey32") == 0) { + r = 82; + g = 82; + b = 82; + } else if(strcmp(color, "gray33") == 0) { + r = 84; + g = 84; + b = 84; + } else if(strcmp(color, "grey33") == 0) { + r = 84; + g = 84; + b = 84; + } else if(strcmp(color, "gray34") == 0) { + r = 87; + g = 87; + b = 87; + } else if(strcmp(color, "grey34") == 0) { + r = 87; + g = 87; + b = 87; + } else if(strcmp(color, "gray35") == 0) { + r = 89; + g = 89; + b = 89; + } else if(strcmp(color, "grey35") == 0) { + r = 89; + g = 89; + b = 89; + } else if(strcmp(color, "gray36") == 0) { + r = 92; + g = 92; + b = 92; + } else if(strcmp(color, "grey36") == 0) { + r = 92; + g = 92; + b = 92; + } else if(strcmp(color, "gray37") == 0) { + r = 94; + g = 94; + b = 94; + } else if(strcmp(color, "grey37") == 0) { + r = 94; + g = 94; + b = 94; + } else if(strcmp(color, "gray38") == 0) { + r = 97; + g = 97; + b = 97; + } else if(strcmp(color, "grey38") == 0) { + r = 97; + g = 97; + b = 97; + } else if(strcmp(color, "gray39") == 0) { + r = 99; + g = 99; + b = 99; + } else if(strcmp(color, "grey39") == 0) { + r = 99; + g = 99; + b = 99; + } else if(strcmp(color, "gray40") == 0) { + r = 102; + g = 102; + b = 102; + } else if(strcmp(color, "grey40") == 0) { + r = 102; + g = 102; + b = 102; + } else if(strcmp(color, "gray41") == 0) { + r = 105; + g = 105; + b = 105; + } else if(strcmp(color, "grey41") == 0) { + r = 105; + g = 105; + b = 105; + } else if(strcmp(color, "gray42") == 0) { + r = 107; + g = 107; + b = 107; + } else if(strcmp(color, "grey42") == 0) { + r = 107; + g = 107; + b = 107; + } else if(strcmp(color, "gray43") == 0) { + r = 110; + g = 110; + b = 110; + } else if(strcmp(color, "grey43") == 0) { + r = 110; + g = 110; + b = 110; + } else if(strcmp(color, "gray44") == 0) { + r = 112; + g = 112; + b = 112; + } else if(strcmp(color, "grey44") == 0) { + r = 112; + g = 112; + b = 112; + } else if(strcmp(color, "gray45") == 0) { + r = 115; + g = 115; + b = 115; + } else if(strcmp(color, "grey45") == 0) { + r = 115; + g = 115; + b = 115; + } else if(strcmp(color, "gray46") == 0) { + r = 117; + g = 117; + b = 117; + } else if(strcmp(color, "grey46") == 0) { + r = 117; + g = 117; + b = 117; + } else if(strcmp(color, "gray47") == 0) { + r = 120; + g = 120; + b = 120; + } else if(strcmp(color, "grey47") == 0) { + r = 120; + g = 120; + b = 120; + } else if(strcmp(color, "gray48") == 0) { + r = 122; + g = 122; + b = 122; + } else if(strcmp(color, "grey48") == 0) { + r = 122; + g = 122; + b = 122; + } else if(strcmp(color, "gray49") == 0) { + r = 125; + g = 125; + b = 125; + } else if(strcmp(color, "grey49") == 0) { + r = 125; + g = 125; + b = 125; + } else if(strcmp(color, "gray50") == 0) { + r = 127; + g = 127; + b = 127; + } else if(strcmp(color, "grey50") == 0) { + r = 127; + g = 127; + b = 127; + } else if(strcmp(color, "gray51") == 0) { + r = 130; + g = 130; + b = 130; + } else if(strcmp(color, "grey51") == 0) { + r = 130; + g = 130; + b = 130; + } else if(strcmp(color, "gray52") == 0) { + r = 133; + g = 133; + b = 133; + } else if(strcmp(color, "grey52") == 0) { + r = 133; + g = 133; + b = 133; + } else if(strcmp(color, "gray53") == 0) { + r = 135; + g = 135; + b = 135; + } else if(strcmp(color, "grey53") == 0) { + r = 135; + g = 135; + b = 135; + } else if(strcmp(color, "gray54") == 0) { + r = 138; + g = 138; + b = 138; + } else if(strcmp(color, "grey54") == 0) { + r = 138; + g = 138; + b = 138; + } else if(strcmp(color, "gray55") == 0) { + r = 140; + g = 140; + b = 140; + } else if(strcmp(color, "grey55") == 0) { + r = 140; + g = 140; + b = 140; + } else if(strcmp(color, "gray56") == 0) { + r = 143; + g = 143; + b = 143; + } else if(strcmp(color, "grey56") == 0) { + r = 143; + g = 143; + b = 143; + } else if(strcmp(color, "gray57") == 0) { + r = 145; + g = 145; + b = 145; + } else if(strcmp(color, "grey57") == 0) { + r = 145; + g = 145; + b = 145; + } else if(strcmp(color, "gray58") == 0) { + r = 148; + g = 148; + b = 148; + } else if(strcmp(color, "grey58") == 0) { + r = 148; + g = 148; + b = 148; + } else if(strcmp(color, "gray59") == 0) { + r = 150; + g = 150; + b = 150; + } else if(strcmp(color, "grey59") == 0) { + r = 150; + g = 150; + b = 150; + } else if(strcmp(color, "gray60") == 0) { + r = 153; + g = 153; + b = 153; + } else if(strcmp(color, "grey60") == 0) { + r = 153; + g = 153; + b = 153; + } else if(strcmp(color, "gray61") == 0) { + r = 156; + g = 156; + b = 156; + } else if(strcmp(color, "grey61") == 0) { + r = 156; + g = 156; + b = 156; + } else if(strcmp(color, "gray62") == 0) { + r = 158; + g = 158; + b = 158; + } else if(strcmp(color, "grey62") == 0) { + r = 158; + g = 158; + b = 158; + } else if(strcmp(color, "gray63") == 0) { + r = 161; + g = 161; + b = 161; + } else if(strcmp(color, "grey63") == 0) { + r = 161; + g = 161; + b = 161; + } else if(strcmp(color, "gray64") == 0) { + r = 163; + g = 163; + b = 163; + } else if(strcmp(color, "grey64") == 0) { + r = 163; + g = 163; + b = 163; + } else if(strcmp(color, "gray65") == 0) { + r = 166; + g = 166; + b = 166; + } else if(strcmp(color, "grey65") == 0) { + r = 166; + g = 166; + b = 166; + } else if(strcmp(color, "gray66") == 0) { + r = 168; + g = 168; + b = 168; + } else if(strcmp(color, "grey66") == 0) { + r = 168; + g = 168; + b = 168; + } else if(strcmp(color, "gray67") == 0) { + r = 171; + g = 171; + b = 171; + } else if(strcmp(color, "grey67") == 0) { + r = 171; + g = 171; + b = 171; + } else if(strcmp(color, "gray68") == 0) { + r = 173; + g = 173; + b = 173; + } else if(strcmp(color, "grey68") == 0) { + r = 173; + g = 173; + b = 173; + } else if(strcmp(color, "gray69") == 0) { + r = 176; + g = 176; + b = 176; + } else if(strcmp(color, "grey69") == 0) { + r = 176; + g = 176; + b = 176; + } else if(strcmp(color, "gray70") == 0) { + r = 179; + g = 179; + b = 179; + } else if(strcmp(color, "grey70") == 0) { + r = 179; + g = 179; + b = 179; + } else if(strcmp(color, "gray71") == 0) { + r = 181; + g = 181; + b = 181; + } else if(strcmp(color, "grey71") == 0) { + r = 181; + g = 181; + b = 181; + } else if(strcmp(color, "gray72") == 0) { + r = 184; + g = 184; + b = 184; + } else if(strcmp(color, "grey72") == 0) { + r = 184; + g = 184; + b = 184; + } else if(strcmp(color, "gray73") == 0) { + r = 186; + g = 186; + b = 186; + } else if(strcmp(color, "grey73") == 0) { + r = 186; + g = 186; + b = 186; + } else if(strcmp(color, "gray74") == 0) { + r = 189; + g = 189; + b = 189; + } else if(strcmp(color, "grey74") == 0) { + r = 189; + g = 189; + b = 189; + } else if(strcmp(color, "gray75") == 0) { + r = 191; + g = 191; + b = 191; + } else if(strcmp(color, "grey75") == 0) { + r = 191; + g = 191; + b = 191; + } else if(strcmp(color, "gray76") == 0) { + r = 194; + g = 194; + b = 194; + } else if(strcmp(color, "grey76") == 0) { + r = 194; + g = 194; + b = 194; + } else if(strcmp(color, "gray77") == 0) { + r = 196; + g = 196; + b = 196; + } else if(strcmp(color, "grey77") == 0) { + r = 196; + g = 196; + b = 196; + } else if(strcmp(color, "gray78") == 0) { + r = 199; + g = 199; + b = 199; + } else if(strcmp(color, "grey78") == 0) { + r = 199; + g = 199; + b = 199; + } else if(strcmp(color, "gray79") == 0) { + r = 201; + g = 201; + b = 201; + } else if(strcmp(color, "grey79") == 0) { + r = 201; + g = 201; + b = 201; + } else if(strcmp(color, "gray80") == 0) { + r = 204; + g = 204; + b = 204; + } else if(strcmp(color, "grey80") == 0) { + r = 204; + g = 204; + b = 204; + } else if(strcmp(color, "gray81") == 0) { + r = 207; + g = 207; + b = 207; + } else if(strcmp(color, "grey81") == 0) { + r = 207; + g = 207; + b = 207; + } else if(strcmp(color, "gray82") == 0) { + r = 209; + g = 209; + b = 209; + } else if(strcmp(color, "grey82") == 0) { + r = 209; + g = 209; + b = 209; + } else if(strcmp(color, "gray83") == 0) { + r = 212; + g = 212; + b = 212; + } else if(strcmp(color, "grey83") == 0) { + r = 212; + g = 212; + b = 212; + } else if(strcmp(color, "gray84") == 0) { + r = 214; + g = 214; + b = 214; + } else if(strcmp(color, "grey84") == 0) { + r = 214; + g = 214; + b = 214; + } else if(strcmp(color, "gray85") == 0) { + r = 217; + g = 217; + b = 217; + } else if(strcmp(color, "grey85") == 0) { + r = 217; + g = 217; + b = 217; + } else if(strcmp(color, "gray86") == 0) { + r = 219; + g = 219; + b = 219; + } else if(strcmp(color, "grey86") == 0) { + r = 219; + g = 219; + b = 219; + } else if(strcmp(color, "gray87") == 0) { + r = 222; + g = 222; + b = 222; + } else if(strcmp(color, "grey87") == 0) { + r = 222; + g = 222; + b = 222; + } else if(strcmp(color, "gray88") == 0) { + r = 224; + g = 224; + b = 224; + } else if(strcmp(color, "grey88") == 0) { + r = 224; + g = 224; + b = 224; + } else if(strcmp(color, "gray89") == 0) { + r = 227; + g = 227; + b = 227; + } else if(strcmp(color, "grey89") == 0) { + r = 227; + g = 227; + b = 227; + } else if(strcmp(color, "gray90") == 0) { + r = 229; + g = 229; + b = 229; + } else if(strcmp(color, "grey90") == 0) { + r = 229; + g = 229; + b = 229; + } else if(strcmp(color, "gray91") == 0) { + r = 232; + g = 232; + b = 232; + } else if(strcmp(color, "grey91") == 0) { + r = 232; + g = 232; + b = 232; + } else if(strcmp(color, "gray92") == 0) { + r = 235; + g = 235; + b = 235; + } else if(strcmp(color, "grey92") == 0) { + r = 235; + g = 235; + b = 235; + } else if(strcmp(color, "gray93") == 0) { + r = 237; + g = 237; + b = 237; + } else if(strcmp(color, "grey93") == 0) { + r = 237; + g = 237; + b = 237; + } else if(strcmp(color, "gray94") == 0) { + r = 240; + g = 240; + b = 240; + } else if(strcmp(color, "grey94") == 0) { + r = 240; + g = 240; + b = 240; + } else if(strcmp(color, "gray95") == 0) { + r = 242; + g = 242; + b = 242; + } else if(strcmp(color, "grey95") == 0) { + r = 242; + g = 242; + b = 242; + } else if(strcmp(color, "gray96") == 0) { + r = 245; + g = 245; + b = 245; + } else if(strcmp(color, "grey96") == 0) { + r = 245; + g = 245; + b = 245; + } else if(strcmp(color, "gray97") == 0) { + r = 247; + g = 247; + b = 247; + } else if(strcmp(color, "grey97") == 0) { + r = 247; + g = 247; + b = 247; + } else if(strcmp(color, "gray98") == 0) { + r = 250; + g = 250; + b = 250; + } else if(strcmp(color, "grey98") == 0) { + r = 250; + g = 250; + b = 250; + } else if(strcmp(color, "gray99") == 0) { + r = 252; + g = 252; + b = 252; + } else if(strcmp(color, "grey99") == 0) { + r = 252; + g = 252; + b = 252; + } else if(strcmp(color, "gray100") == 0) { + r = 255; + g = 255; + b = 255; + } else if(strcmp(color, "grey100") == 0) { + r = 255; + g = 255; + b = 255; + } else { + r = 0; + g = 0; + b = 0; + } + return MwLLAllocColor(handle->lowlevel, r, g, b); +} diff --git a/src/draw.c b/src/draw.c index d958405..540e0cd 100644 --- a/src/draw.c +++ b/src/draw.c @@ -52,6 +52,8 @@ MwLLColor MwParseColor(MwWidget handle, const char* text) { r = hex(text + 1, 2); g = hex(text + 3, 2); b = hex(text + 5, 2); + } else { + return MwParseColorName(handle, text); } return MwLLAllocColor(handle->lowlevel, r, g, b); @@ -560,9 +562,26 @@ MwLLPixmap MwLoadImage(MwWidget handle, const char* path) { } MwLLPixmap MwLoadRaw(MwWidget handle, unsigned char* rgb, int width, int height) { - MwLLPixmap px; + MwLLPixmap px; + MwLLColor bg = MwParseColor(handle, MwGetText(handle, MwNbackground)); + unsigned char* out = malloc(width * height * 4); + int y, x; + for(y = 0; y < height; y++) { + for(x = 0; x < width; x++) { + unsigned char* pin = &rgb[(y * width + x) * 4]; + unsigned char* pout = &out[(y * width + x) * 4]; + pout[0] = pin[0] * (pin[3] / 255.0) + bg->red * (1.0 - pin[3] / 255.0); + pout[1] = pin[1] * (pin[3] / 255.0) + bg->green * (1.0 - pin[3] / 255.0); + pout[2] = pin[2] * (pin[3] / 255.0) + bg->blue * (1.0 - pin[3] / 255.0); + pout[3] = 255; + } + } - px = MwLLCreatePixmap(handle->lowlevel, rgb, width, height); + MwLLFreeColor(bg); + + px = MwLLCreatePixmap(handle->lowlevel, out, width, height); + + free(out); return px; } @@ -576,27 +595,75 @@ void MwGetColor(MwLLColor color, int* red, int* green, int* blue) { typedef struct color { char* key; char* value; + int r; + int g; + int b; + int a; } color_t; MwLLPixmap MwLoadXPM(MwWidget handle, char** data) { int col, row, colors, cpp; unsigned char* rgb; MwLLPixmap px; - char k[512]; color_t* c = NULL; - int i; + int i, y, x; + char* comp; sh_new_strdup(c); sscanf(data[0], "%d %d %d %d", &col, &row, &colors, &cpp); for(i = 0; i < colors; i++) { - memcpy(k, data[i + 1], cpp); - k[cpp] = 0; - printf("%s\n", k); + char k[128]; + char* v = data[i + 1] + cpp + 3; + int ind; + if(strcmp(v, "None") == 0) { + memcpy(k, data[i + 1], cpp); + k[cpp] = 0; + + shput(c, k, v); + ind = shgeti(c, k); + + c[ind].r = 0; + c[ind].g = 0; + c[ind].b = 0; + c[ind].a = 0; + } else { + MwLLColor color = MwParseColor(handle, v); + + memcpy(k, data[i + 1], cpp); + k[cpp] = 0; + + shput(c, k, v); + ind = shgeti(c, k); + + c[ind].r = color->red; + c[ind].g = color->green; + c[ind].b = color->blue; + c[ind].a = 255; + + MwLLFreeColor(color); + } } - rgb = malloc(row * col * 4); + rgb = malloc(row * col * 4); + comp = malloc(cpp + 1); + comp[cpp] = 0; + for(y = 0; y < row; y++) { + for(x = 0; x < col; x++) { + unsigned char* pout = &rgb[(y * col + x) * 4]; + color_t colent; + memcpy(comp, &data[1 + colors + y][x * cpp], cpp); + + colent = shgets(c, comp); + + pout[0] = colent.r; + pout[1] = colent.g; + pout[2] = colent.b; + pout[3] = colent.a; + } + } + free(comp); px = MwLoadRaw(handle, rgb, col, row); diff --git a/src/messagebox.c b/src/messagebox.c new file mode 100644 index 0000000..9ab673a --- /dev/null +++ b/src/messagebox.c @@ -0,0 +1,55 @@ +/* $Id$ */ +#include + +MwWidget MwMessageBox(MwWidget handle, const char* text, const char* title, unsigned int flag) { + MwWidget window, ok; + MwPoint p; + int w, h; + + p.x = 0; + p.y = 0; + + window = MwVaCreateWidget(MwWindowClass, "messagebox", handle, 0, 0, (w = 512), (h = 32 * 4), + MwNtitle, title, + NULL); + ok = MwVaCreateWidget(MwButtonClass, "ok", window, w - 8 - 64, h - 8 - 24, 64, 24, + MwNtext, "OK", + NULL); + + if((flag & MwMB_ICONMASK) != 0) { + MwWidget icon; + MwLLPixmap px; + char** data = NULL; + + icon = MwCreateWidget(MwImageClass, "image", window, 16, (h - 48) / 2, 48, 48); + + switch(flag & MwMB_ICONMASK) { + case MwMB_ICONWARNING: { + data = MwIconWarning; + break; + } + case MwMB_ICONINFO: { + data = MwIconInfo; + break; + } + case MwMB_ICONNOTE: { + data = MwIconNote; + break; + } + case MwMB_ICONQUESTION: { + data = MwIconQuestion; + break; + } + } + + px = MwLoadXPM(icon, data); + + MwSetVoid(icon, MwNpixmap, px); + } + + MwLLDetach(window->lowlevel, &p); + MwLLSetSizeHints(window->lowlevel, w, h, w, h); + MwLLMakePopup(window->lowlevel, handle->lowlevel); + + return window; +} diff --git a/src/widget/submenu.c b/src/widget/submenu.c index 895962d..464cc30 100644 --- a/src/widget/submenu.c +++ b/src/widget/submenu.c @@ -174,7 +174,7 @@ void MwSubMenuAppear(MwWidget handle, MwMenu menu, MwPoint* point) { xswa.override_redirect = True; XChangeWindowAttributes(handle->lowlevel->display, handle->lowlevel->window, CWOverrideRedirect, &xswa); - XChangeProperty(handle->lowlevel->display, handle->lowlevel->window, wndtype, 4, 32, PropModeReplace, (unsigned char*)&wndmenu, 1); + XChangeProperty(handle->lowlevel->display, handle->lowlevel->window, wndtype, XA_ATOM, 32, PropModeReplace, (unsigned char*)&wndmenu, 1); #endif handle->internal = menu; diff --git a/tools/color.pl b/tools/color.pl new file mode 100755 index 0000000..f3a219b --- /dev/null +++ b/tools/color.pl @@ -0,0 +1,32 @@ +#!/usr/bin/env perl +# $Id$ + +open(IN, "<", "resource/rgb.txt"); +open(OUT, ">", "src/color.c"); + +print(OUT "/* \$Id\$ */\n"); +print(OUT "#include \n"); +print(OUT "\n"); +print(OUT "MwLLColor MwParseColorName(MwWidget handle, const char* color){\n"); +print(OUT " int r, g, b;\n"); +print(OUT " "); +while (my $l = ) { + $l =~ s/\r?\n$//; + if ($l =~ /^[ \t]*([0-9]+)[ \t]+([0-9]+)[ \t]+([0-9]+)[ \t]+(.+)$/) { + print(OUT "if(strcmp(color, \"$4\") == 0){\n"); + print(OUT " r = $1;\n"); + print(OUT " g = $2;\n"); + print(OUT " b = $3;\n"); + print(OUT " }else "); + } +} +print(OUT "{\n"); +print(OUT " r = 0;\n"); +print(OUT " g = 0;\n"); +print(OUT " b = 0;\n"); +print(OUT " }\n"); +print(OUT " return MwLLAllocColor(handle->lowlevel, r, g, b);\n"); +print(OUT "}\n"); + +close(OUT); +close(IN);