Index: win/tkWinGDI.c ================================================================== --- win/tkWinGDI.c +++ win/tkWinGDI.c @@ -61,14 +61,11 @@ int argc, const char **argv); static int GdiCopyBits(ClientData clientData, Tcl_Interp *interp, int argc, const char **argv); /* Local copies of similar routines elsewhere in Tcl/Tk. */ -static int GdiParseColor(const char *name, unsigned long *color); -static int GdiGetColor(const char *name, unsigned long *color); -static int TkGdiMakeBezierCurve(Tk_Canvas, double *, int, int, - XPoint[], double[]); +static int GdiGetColor(const char *name, COLORREF *color); /* * Helper functions. */ static int GdiMakeLogFont(Tcl_Interp *interp, const char *str, @@ -618,11 +615,11 @@ /* TODO: unreachable */ Tcl_Free((void *) inPointList); return 0; } - nbpoints = TkGdiMakeBezierCurve(NULL, inPointList, npoly, nStep, + nbpoints = TkMakeBezierCurve(NULL, inPointList, npoly, nStep, NULL, outPointList); Tcl_Free((void *) inPointList); bpoints = (POINT *) Tcl_AttemptAlloc(sizeof(POINT)*nbpoints); if (bpoints == 0) { @@ -2867,11 +2864,10 @@ /* * Utility functions from elsewhere in Tcl. * Functions have removed reliance on X and Tk libraries, as well as removing * the need for TkWindows. * GdiGetColor is a copy of a TkpGetColor from tkWinColor.c - * GdiParseColor is a copy of XParseColor from xcolors.c */ typedef struct { const char *name; int index; } SystemColorEntry; @@ -2904,760 +2900,10 @@ {"WindowFrame", COLOR_WINDOWFRAME}, {"WindowText", COLOR_WINDOWTEXT} }; static int numsyscolors = 0; - -typedef struct { - const char *name; - unsigned char red; - unsigned char green; - unsigned char blue; -} XColorEntry; - -static const XColorEntry xColors[] = { - {"alice blue", 240, 248, 255}, - {"AliceBlue", 240, 248, 255}, - {"antique white", 250, 235, 215}, - {"AntiqueWhite", 250, 235, 215}, - {"AntiqueWhite1", 255, 239, 219}, - {"AntiqueWhite2", 238, 223, 204}, - {"AntiqueWhite3", 205, 192, 176}, - {"AntiqueWhite4", 139, 131, 120}, - {"aquamarine", 127, 255, 212}, - {"aquamarine1", 127, 255, 212}, - {"aquamarine2", 118, 238, 198}, - {"aquamarine3", 102, 205, 170}, - {"aquamarine4", 69, 139, 116}, - {"azure", 240, 255, 255}, - {"azure1", 240, 255, 255}, - {"azure2", 224, 238, 238}, - {"azure3", 193, 205, 205}, - {"azure4", 131, 139, 139}, - {"beige", 245, 245, 220}, - {"bisque", 255, 228, 196}, - {"bisque1", 255, 228, 196}, - {"bisque2", 238, 213, 183}, - {"bisque3", 205, 183, 158}, - {"bisque4", 139, 125, 107}, - {"black", 0, 0, 0}, - {"blanched almond", 255, 235, 205}, - {"BlanchedAlmond", 255, 235, 205}, - {"blue", 0, 0, 255}, - {"blue violet", 138, 43, 226}, - {"blue1", 0, 0, 255}, - {"blue2", 0, 0, 238}, - {"blue3", 0, 0, 205}, - {"blue4", 0, 0, 139}, - {"BlueViolet", 138, 43, 226}, - {"brown", 165, 42, 42}, - {"brown1", 255, 64, 64}, - {"brown2", 238, 59, 59}, - {"brown3", 205, 51, 51}, - {"brown4", 139, 35, 35}, - {"burlywood", 222, 184, 135}, - {"burlywood1", 255, 211, 155}, - {"burlywood2", 238, 197, 145}, - {"burlywood3", 205, 170, 125}, - {"burlywood4", 139, 115, 85}, - {"cadet blue", 95, 158, 160}, - {"CadetBlue", 95, 158, 160}, - {"CadetBlue1", 152, 245, 255}, - {"CadetBlue2", 142, 229, 238}, - {"CadetBlue3", 122, 197, 205}, - {"CadetBlue4", 83, 134, 139}, - {"chartreuse", 127, 255, 0}, - {"chartreuse1", 127, 255, 0}, - {"chartreuse2", 118, 238, 0}, - {"chartreuse3", 102, 205, 0}, - {"chartreuse4", 69, 139, 0}, - {"chocolate", 210, 105, 30}, - {"chocolate1", 255, 127, 36}, - {"chocolate2", 238, 118, 33}, - {"chocolate3", 205, 102, 29}, - {"chocolate4", 139, 69, 19}, - {"coral", 255, 127, 80}, - {"coral1", 255, 114, 86}, - {"coral2", 238, 106, 80}, - {"coral3", 205, 91, 69}, - {"coral4", 139, 62, 47}, - {"cornflower blue", 100, 149, 237}, - {"CornflowerBlue", 100, 149, 237}, - {"cornsilk", 255, 248, 220}, - {"cornsilk1", 255, 248, 220}, - {"cornsilk2", 238, 232, 205}, - {"cornsilk3", 205, 200, 177}, - {"cornsilk4", 139, 136, 120}, - {"cyan", 0, 255, 255}, - {"cyan1", 0, 255, 255}, - {"cyan2", 0, 238, 238}, - {"cyan3", 0, 205, 205}, - {"cyan4", 0, 139, 139}, - {"dark goldenrod", 184, 134, 11}, - {"dark green", 0, 100, 0}, - {"dark khaki", 189, 183, 107}, - {"dark olive green", 85, 107, 47}, - {"dark orange", 255, 140, 0}, - {"dark orchid", 153, 50, 204}, - {"dark salmon", 233, 150, 122}, - {"dark sea green", 143, 188, 143}, - {"dark slate blue", 72, 61, 139}, - {"dark slate gray", 47, 79, 79}, - {"dark slate grey", 47, 79, 79}, - {"dark turquoise", 0, 206, 209}, - {"dark violet", 148, 0, 211}, - {"DarkGoldenrod", 184, 134, 11}, - {"DarkGoldenrod1", 255, 185, 15}, - {"DarkGoldenrod2", 238, 173, 14}, - {"DarkGoldenrod3", 205, 149, 12}, - {"DarkGoldenrod4", 139, 101, 8}, - {"DarkGreen", 0, 100, 0}, - {"DarkKhaki", 189, 183, 107}, - {"DarkOliveGreen", 85, 107, 47}, - {"DarkOliveGreen1", 202, 255, 112}, - {"DarkOliveGreen2", 188, 238, 104}, - {"DarkOliveGreen3", 162, 205, 90}, - {"DarkOliveGreen4", 110, 139, 61}, - {"DarkOrange", 255, 140, 0}, - {"DarkOrange1", 255, 127, 0}, - {"DarkOrange2", 238, 118, 0}, - {"DarkOrange3", 205, 102, 0}, - {"DarkOrange4", 139, 69, 0}, - {"DarkOrchid", 153, 50, 204}, - {"DarkOrchid1", 191, 62, 255}, - {"DarkOrchid2", 178, 58, 238}, - {"DarkOrchid3", 154, 50, 205}, - {"DarkOrchid4", 104, 34, 139}, - {"DarkSalmon", 233, 150, 122}, - {"DarkSeaGreen", 143, 188, 143}, - {"DarkSeaGreen1", 193, 255, 193}, - {"DarkSeaGreen2", 180, 238, 180}, - {"DarkSeaGreen3", 155, 205, 155}, - {"DarkSeaGreen4", 105, 139, 105}, - {"DarkSlateBlue", 72, 61, 139}, - {"DarkSlateGray", 47, 79, 79}, - {"DarkSlateGray1", 151, 255, 255}, - {"DarkSlateGray2", 141, 238, 238}, - {"DarkSlateGray3", 121, 205, 205}, - {"DarkSlateGray4", 82, 139, 139}, - {"DarkSlateGrey", 47, 79, 79}, - {"DarkTurquoise", 0, 206, 209}, - {"DarkViolet", 148, 0, 211}, - {"deep pink", 255, 20, 147}, - {"deep sky blue", 0, 191, 255}, - {"DeepPink", 255, 20, 147}, - {"DeepPink1", 255, 20, 147}, - {"DeepPink2", 238, 18, 137}, - {"DeepPink3", 205, 16, 118}, - {"DeepPink4", 139, 10, 80}, - {"DeepSkyBlue", 0, 191, 255}, - {"DeepSkyBlue1", 0, 191, 255}, - {"DeepSkyBlue2", 0, 178, 238}, - {"DeepSkyBlue3", 0, 154, 205}, - {"DeepSkyBlue4", 0, 104, 139}, - {"dim gray", 105, 105, 105}, - {"dim grey", 105, 105, 105}, - {"DimGray", 105, 105, 105}, - {"DimGrey", 105, 105, 105}, - {"dodger blue", 30, 144, 255}, - {"DodgerBlue", 30, 144, 255}, - {"DodgerBlue1", 30, 144, 255}, - {"DodgerBlue2", 28, 134, 238}, - {"DodgerBlue3", 24, 116, 205}, - {"DodgerBlue4", 16, 78, 139}, - {"firebrick", 178, 34, 34}, - {"firebrick1", 255, 48, 48}, - {"firebrick2", 238, 44, 44}, - {"firebrick3", 205, 38, 38}, - {"firebrick4", 139, 26, 26}, - {"floral white", 255, 250, 240}, - {"FloralWhite", 255, 250, 240}, - {"forest green", 34, 139, 34}, - {"ForestGreen", 34, 139, 34}, - {"gainsboro", 220, 220, 220}, - {"ghost white", 248, 248, 255}, - {"GhostWhite", 248, 248, 255}, - {"gold", 255, 215, 0}, - {"gold1", 255, 215, 0}, - {"gold2", 238, 201, 0}, - {"gold3", 205, 173, 0}, - {"gold4", 139, 117, 0}, - {"goldenrod", 218, 165, 32}, - {"goldenrod1", 255, 193, 37}, - {"goldenrod2", 238, 180, 34}, - {"goldenrod3", 205, 155, 29}, - {"goldenrod4", 139, 105, 20}, - {"gray", 190, 190, 190}, - {"gray0", 0, 0, 0}, - {"gray1", 3, 3, 3}, - {"gray10", 26, 26, 26}, - {"gray100", 255, 255, 255}, - {"gray11", 28, 28, 28}, - {"gray12", 31, 31, 31}, - {"gray13", 33, 33, 33}, - {"gray14", 36, 36, 36}, - {"gray15", 38, 38, 38}, - {"gray16", 41, 41, 41}, - {"gray17", 43, 43, 43}, - {"gray18", 46, 46, 46}, - {"gray19", 48, 48, 48}, - {"gray2", 5, 5, 5}, - {"gray20", 51, 51, 51}, - {"gray21", 54, 54, 54}, - {"gray22", 56, 56, 56}, - {"gray23", 59, 59, 59}, - {"gray24", 61, 61, 61}, - {"gray25", 64, 64, 64}, - {"gray26", 66, 66, 66}, - {"gray27", 69, 69, 69}, - {"gray28", 71, 71, 71}, - {"gray29", 74, 74, 74}, - {"gray3", 8, 8, 8}, - {"gray30", 77, 77, 77}, - {"gray31", 79, 79, 79}, - {"gray32", 82, 82, 82}, - {"gray33", 84, 84, 84}, - {"gray34", 87, 87, 87}, - {"gray35", 89, 89, 89}, - {"gray36", 92, 92, 92}, - {"gray37", 94, 94, 94}, - {"gray38", 97, 97, 97}, - {"gray39", 99, 99, 99}, - {"gray4", 10, 10, 10}, - {"gray40", 102, 102, 102}, - {"gray41", 105, 105, 105}, - {"gray42", 107, 107, 107}, - {"gray43", 110, 110, 110}, - {"gray44", 112, 112, 112}, - {"gray45", 115, 115, 115}, - {"gray46", 117, 117, 117}, - {"gray47", 120, 120, 120}, - {"gray48", 122, 122, 122}, - {"gray49", 125, 125, 125}, - {"gray5", 13, 13, 13}, - {"gray50", 127, 127, 127}, - {"gray51", 130, 130, 130}, - {"gray52", 133, 133, 133}, - {"gray53", 135, 135, 135}, - {"gray54", 138, 138, 138}, - {"gray55", 140, 140, 140}, - {"gray56", 143, 143, 143}, - {"gray57", 145, 145, 145}, - {"gray58", 148, 148, 148}, - {"gray59", 150, 150, 150}, - {"gray6", 15, 15, 15}, - {"gray60", 153, 153, 153}, - {"gray61", 156, 156, 156}, - {"gray62", 158, 158, 158}, - {"gray63", 161, 161, 161}, - {"gray64", 163, 163, 163}, - {"gray65", 166, 166, 166}, - {"gray66", 168, 168, 168}, - {"gray67", 171, 171, 171}, - {"gray68", 173, 173, 173}, - {"gray69", 176, 176, 176}, - {"gray7", 18, 18, 18}, - {"gray70", 179, 179, 179}, - {"gray71", 181, 181, 181}, - {"gray72", 184, 184, 184}, - {"gray73", 186, 186, 186}, - {"gray74", 189, 189, 189}, - {"gray75", 191, 191, 191}, - {"gray76", 194, 194, 194}, - {"gray77", 196, 196, 196}, - {"gray78", 199, 199, 199}, - {"gray79", 201, 201, 201}, - {"gray8", 20, 20, 20}, - {"gray80", 204, 204, 204}, - {"gray81", 207, 207, 207}, - {"gray82", 209, 209, 209}, - {"gray83", 212, 212, 212}, - {"gray84", 214, 214, 214}, - {"gray85", 217, 217, 217}, - {"gray86", 219, 219, 219}, - {"gray87", 222, 222, 222}, - {"gray88", 224, 224, 224}, - {"gray89", 227, 227, 227}, - {"gray9", 23, 23, 23}, - {"gray90", 229, 229, 229}, - {"gray91", 232, 232, 232}, - {"gray92", 235, 235, 235}, - {"gray93", 237, 237, 237}, - {"gray94", 240, 240, 240}, - {"gray95", 242, 242, 242}, - {"gray96", 245, 245, 245}, - {"gray97", 247, 247, 247}, - {"gray98", 250, 250, 250}, - {"gray99", 252, 252, 252}, - {"green", 0, 255, 0}, - {"green yellow", 173, 255, 47}, - {"green1", 0, 255, 0}, - {"green2", 0, 238, 0}, - {"green3", 0, 205, 0}, - {"green4", 0, 139, 0}, - {"GreenYellow", 173, 255, 47}, - {"grey", 190, 190, 190}, - {"grey0", 0, 0, 0}, - {"grey1", 3, 3, 3}, - {"grey10", 26, 26, 26}, - {"grey100", 255, 255, 255}, - {"grey11", 28, 28, 28}, - {"grey12", 31, 31, 31}, - {"grey13", 33, 33, 33}, - {"grey14", 36, 36, 36}, - {"grey15", 38, 38, 38}, - {"grey16", 41, 41, 41}, - {"grey17", 43, 43, 43}, - {"grey18", 46, 46, 46}, - {"grey19", 48, 48, 48}, - {"grey2", 5, 5, 5}, - {"grey20", 51, 51, 51}, - {"grey21", 54, 54, 54}, - {"grey22", 56, 56, 56}, - {"grey23", 59, 59, 59}, - {"grey24", 61, 61, 61}, - {"grey25", 64, 64, 64}, - {"grey26", 66, 66, 66}, - {"grey27", 69, 69, 69}, - {"grey28", 71, 71, 71}, - {"grey29", 74, 74, 74}, - {"grey3", 8, 8, 8}, - {"grey30", 77, 77, 77}, - {"grey31", 79, 79, 79}, - {"grey32", 82, 82, 82}, - {"grey33", 84, 84, 84}, - {"grey34", 87, 87, 87}, - {"grey35", 89, 89, 89}, - {"grey36", 92, 92, 92}, - {"grey37", 94, 94, 94}, - {"grey38", 97, 97, 97}, - {"grey39", 99, 99, 99}, - {"grey4", 10, 10, 10}, - {"grey40", 102, 102, 102}, - {"grey41", 105, 105, 105}, - {"grey42", 107, 107, 107}, - {"grey43", 110, 110, 110}, - {"grey44", 112, 112, 112}, - {"grey45", 115, 115, 115}, - {"grey46", 117, 117, 117}, - {"grey47", 120, 120, 120}, - {"grey48", 122, 122, 122}, - {"grey49", 125, 125, 125}, - {"grey5", 13, 13, 13}, - {"grey50", 127, 127, 127}, - {"grey51", 130, 130, 130}, - {"grey52", 133, 133, 133}, - {"grey53", 135, 135, 135}, - {"grey54", 138, 138, 138}, - {"grey55", 140, 140, 140}, - {"grey56", 143, 143, 143}, - {"grey57", 145, 145, 145}, - {"grey58", 148, 148, 148}, - {"grey59", 150, 150, 150}, - {"grey6", 15, 15, 15}, - {"grey60", 153, 153, 153}, - {"grey61", 156, 156, 156}, - {"grey62", 158, 158, 158}, - {"grey63", 161, 161, 161}, - {"grey64", 163, 163, 163}, - {"grey65", 166, 166, 166}, - {"grey66", 168, 168, 168}, - {"grey67", 171, 171, 171}, - {"grey68", 173, 173, 173}, - {"grey69", 176, 176, 176}, - {"grey7", 18, 18, 18}, - {"grey70", 179, 179, 179}, - {"grey71", 181, 181, 181}, - {"grey72", 184, 184, 184}, - {"grey73", 186, 186, 186}, - {"grey74", 189, 189, 189}, - {"grey75", 191, 191, 191}, - {"grey76", 194, 194, 194}, - {"grey77", 196, 196, 196}, - {"grey78", 199, 199, 199}, - {"grey79", 201, 201, 201}, - {"grey8", 20, 20, 20}, - {"grey80", 204, 204, 204}, - {"grey81", 207, 207, 207}, - {"grey82", 209, 209, 209}, - {"grey83", 212, 212, 212}, - {"grey84", 214, 214, 214}, - {"grey85", 217, 217, 217}, - {"grey86", 219, 219, 219}, - {"grey87", 222, 222, 222}, - {"grey88", 224, 224, 224}, - {"grey89", 227, 227, 227}, - {"grey9", 23, 23, 23}, - {"grey90", 229, 229, 229}, - {"grey91", 232, 232, 232}, - {"grey92", 235, 235, 235}, - {"grey93", 237, 237, 237}, - {"grey94", 240, 240, 240}, - {"grey95", 242, 242, 242}, - {"grey96", 245, 245, 245}, - {"grey97", 247, 247, 247}, - {"grey98", 250, 250, 250}, - {"grey99", 252, 252, 252}, - {"honeydew", 240, 255, 240}, - {"honeydew1", 240, 255, 240}, - {"honeydew2", 224, 238, 224}, - {"honeydew3", 193, 205, 193}, - {"honeydew4", 131, 139, 131}, - {"hot pink", 255, 105, 180}, - {"HotPink", 255, 105, 180}, - {"HotPink1", 255, 110, 180}, - {"HotPink2", 238, 106, 167}, - {"HotPink3", 205, 96, 144}, - {"HotPink4", 139, 58, 98}, - {"indian red", 205, 92, 92}, - {"IndianRed", 205, 92, 92}, - {"IndianRed1", 255, 106, 106}, - {"IndianRed2", 238, 99, 99}, - {"IndianRed3", 205, 85, 85}, - {"IndianRed4", 139, 58, 58}, - {"ivory", 255, 255, 240}, - {"ivory1", 255, 255, 240}, - {"ivory2", 238, 238, 224}, - {"ivory3", 205, 205, 193}, - {"ivory4", 139, 139, 131}, - {"khaki", 240, 230, 140}, - {"khaki1", 255, 246, 143}, - {"khaki2", 238, 230, 133}, - {"khaki3", 205, 198, 115}, - {"khaki4", 139, 134, 78}, - {"lavender", 230, 230, 250}, - {"lavender blush", 255, 240, 245}, - {"LavenderBlush", 255, 240, 245}, - {"LavenderBlush1", 255, 240, 245}, - {"LavenderBlush2", 238, 224, 229}, - {"LavenderBlush3", 205, 193, 197}, - {"LavenderBlush4", 139, 131, 134}, - {"lawn green", 124, 252, 0}, - {"LawnGreen", 124, 252, 0}, - {"lemon chiffon", 255, 250, 205}, - {"LemonChiffon", 255, 250, 205}, - {"LemonChiffon1", 255, 250, 205}, - {"LemonChiffon2", 238, 233, 191}, - {"LemonChiffon3", 205, 201, 165}, - {"LemonChiffon4", 139, 137, 112}, - {"light blue", 173, 216, 230}, - {"light coral", 240, 128, 128}, - {"light cyan", 224, 255, 255}, - {"light goldenrod", 238, 221, 130}, - {"light goldenrod yellow", 250, 250, 210}, - {"light gray", 211, 211, 211}, - {"light grey", 211, 211, 211}, - {"light pink", 255, 182, 193}, - {"light salmon", 255, 160, 122}, - {"light sea green", 32, 178, 170}, - {"light sky blue", 135, 206, 250}, - {"light slate blue", 132, 112, 255}, - {"light slate gray", 119, 136, 153}, - {"light slate grey", 119, 136, 153}, - {"light steel blue", 176, 196, 222}, - {"light yellow", 255, 255, 224}, - {"LightBlue", 173, 216, 230}, - {"LightBlue1", 191, 239, 255}, - {"LightBlue2", 178, 223, 238}, - {"LightBlue3", 154, 192, 205}, - {"LightBlue4", 104, 131, 139}, - {"LightCoral", 240, 128, 128}, - {"LightCyan", 224, 255, 255}, - {"LightCyan1", 224, 255, 255}, - {"LightCyan2", 209, 238, 238}, - {"LightCyan3", 180, 205, 205}, - {"LightCyan4", 122, 139, 139}, - {"LightGoldenrod", 238, 221, 130}, - {"LightGoldenrod1", 255, 236, 139}, - {"LightGoldenrod2", 238, 220, 130}, - {"LightGoldenrod3", 205, 190, 112}, - {"LightGoldenrod4", 139, 129, 76}, - {"LightGoldenrodYellow", 250, 250, 210}, - {"LightGray", 211, 211, 211}, - {"LightGrey", 211, 211, 211}, - {"LightPink", 255, 182, 193}, - {"LightPink1", 255, 174, 185}, - {"LightPink2", 238, 162, 173}, - {"LightPink3", 205, 140, 149}, - {"LightPink4", 139, 95, 101}, - {"LightSalmon", 255, 160, 122}, - {"LightSalmon1", 255, 160, 122}, - {"LightSalmon2", 238, 149, 114}, - {"LightSalmon3", 205, 129, 98}, - {"LightSalmon4", 139, 87, 66}, - {"LightSeaGreen", 32, 178, 170}, - {"LightSkyBlue", 135, 206, 250}, - {"LightSkyBlue1", 176, 226, 255}, - {"LightSkyBlue2", 164, 211, 238}, - {"LightSkyBlue3", 141, 182, 205}, - {"LightSkyBlue4", 96, 123, 139}, - {"LightSlateBlue", 132, 112, 255}, - {"LightSlateGray", 119, 136, 153}, - {"LightSlateGrey", 119, 136, 153}, - {"LightSteelBlue", 176, 196, 222}, - {"LightSteelBlue1", 202, 225, 255}, - {"LightSteelBlue2", 188, 210, 238}, - {"LightSteelBlue3", 162, 181, 205}, - {"LightSteelBlue4", 110, 123, 139}, - {"LightYellow", 255, 255, 224}, - {"LightYellow1", 255, 255, 224}, - {"LightYellow2", 238, 238, 209}, - {"LightYellow3", 205, 205, 180}, - {"LightYellow4", 139, 139, 122}, - {"lime green", 50, 205, 50}, - {"LimeGreen", 50, 205, 50}, - {"linen", 250, 240, 230}, - {"magenta", 255, 0, 255}, - {"magenta1", 255, 0, 255}, - {"magenta2", 238, 0, 238}, - {"magenta3", 205, 0, 205}, - {"magenta4", 139, 0, 139}, - {"maroon", 176, 48, 96}, - {"maroon1", 255, 52, 179}, - {"maroon2", 238, 48, 167}, - {"maroon3", 205, 41, 144}, - {"maroon4", 139, 28, 98}, - {"medium aquamarine", 102, 205, 170}, - {"medium blue", 0, 0, 205}, - {"medium orchid", 186, 85, 211}, - {"medium purple", 147, 112, 219}, - {"medium sea green", 60, 179, 113}, - {"medium slate blue", 123, 104, 238}, - {"medium spring green", 0, 250, 154}, - {"medium turquoise", 72, 209, 204}, - {"medium violet red", 199, 21, 133}, - {"MediumAquamarine", 102, 205, 170}, - {"MediumBlue", 0, 0, 205}, - {"MediumOrchid", 186, 85, 211}, - {"MediumOrchid1", 224, 102, 255}, - {"MediumOrchid2", 209, 95, 238}, - {"MediumOrchid3", 180, 82, 205}, - {"MediumOrchid4", 122, 55, 139}, - {"MediumPurple", 147, 112, 219}, - {"MediumPurple1", 171, 130, 255}, - {"MediumPurple2", 159, 121, 238}, - {"MediumPurple3", 137, 104, 205}, - {"MediumPurple4", 93, 71, 139}, - {"MediumSeaGreen", 60, 179, 113}, - {"MediumSlateBlue", 123, 104, 238}, - {"MediumSpringGreen", 0, 250, 154}, - {"MediumTurquoise", 72, 209, 204}, - {"MediumVioletRed", 199, 21, 133}, - {"midnight blue", 25, 25, 112}, - {"MidnightBlue", 25, 25, 112}, - {"mint cream", 245, 255, 250}, - {"MintCream", 245, 255, 250}, - {"misty rose", 255, 228, 225}, - {"MistyRose", 255, 228, 225}, - {"MistyRose1", 255, 228, 225}, - {"MistyRose2", 238, 213, 210}, - {"MistyRose3", 205, 183, 181}, - {"MistyRose4", 139, 125, 123}, - {"moccasin", 255, 228, 181}, - {"navajo white", 255, 222, 173}, - {"NavajoWhite", 255, 222, 173}, - {"NavajoWhite1", 255, 222, 173}, - {"NavajoWhite2", 238, 207, 161}, - {"NavajoWhite3", 205, 179, 139}, - {"NavajoWhite4", 139, 121, 94}, - {"navy", 0, 0, 128}, - {"navy blue", 0, 0, 128}, - {"NavyBlue", 0, 0, 128}, - {"old lace", 253, 245, 230}, - {"OldLace", 253, 245, 230}, - {"olive drab", 107, 142, 35}, - {"OliveDrab", 107, 142, 35}, - {"OliveDrab1", 192, 255, 62}, - {"OliveDrab2", 179, 238, 58}, - {"OliveDrab3", 154, 205, 50}, - {"OliveDrab4", 105, 139, 34}, - {"orange", 255, 165, 0}, - {"orange red", 255, 69, 0}, - {"orange1", 255, 165, 0}, - {"orange2", 238, 154, 0}, - {"orange3", 205, 133, 0}, - {"orange4", 139, 90, 0}, - {"OrangeRed", 255, 69, 0}, - {"OrangeRed1", 255, 69, 0}, - {"OrangeRed2", 238, 64, 0}, - {"OrangeRed3", 205, 55, 0}, - {"OrangeRed4", 139, 37, 0}, - {"orchid", 218, 112, 214}, - {"orchid1", 255, 131, 250}, - {"orchid2", 238, 122, 233}, - {"orchid3", 205, 105, 201}, - {"orchid4", 139, 71, 137}, - {"pale goldenrod", 238, 232, 170}, - {"pale green", 152, 251, 152}, - {"pale turquoise", 175, 238, 238}, - {"pale violet red", 219, 112, 147}, - {"PaleGoldenrod", 238, 232, 170}, - {"PaleGreen", 152, 251, 152}, - {"PaleGreen1", 154, 255, 154}, - {"PaleGreen2", 144, 238, 144}, - {"PaleGreen3", 124, 205, 124}, - {"PaleGreen4", 84, 139, 84}, - {"PaleTurquoise", 175, 238, 238}, - {"PaleTurquoise1", 187, 255, 255}, - {"PaleTurquoise2", 174, 238, 238}, - {"PaleTurquoise3", 150, 205, 205}, - {"PaleTurquoise4", 102, 139, 139}, - {"PaleVioletRed", 219, 112, 147}, - {"PaleVioletRed1", 255, 130, 171}, - {"PaleVioletRed2", 238, 121, 159}, - {"PaleVioletRed3", 205, 104, 137}, - {"PaleVioletRed4", 139, 71, 93}, - {"papaya whip", 255, 239, 213}, - {"PapayaWhip", 255, 239, 213}, - {"peach puff", 255, 218, 185}, - {"PeachPuff", 255, 218, 185}, - {"PeachPuff1", 255, 218, 185}, - {"PeachPuff2", 238, 203, 173}, - {"PeachPuff3", 205, 175, 149}, - {"PeachPuff4", 139, 119, 101}, - {"peru", 205, 133, 63}, - {"pink", 255, 192, 203}, - {"pink1", 255, 181, 197}, - {"pink2", 238, 169, 184}, - {"pink3", 205, 145, 158}, - {"pink4", 139, 99, 108}, - {"plum", 221, 160, 221}, - {"plum1", 255, 187, 255}, - {"plum2", 238, 174, 238}, - {"plum3", 205, 150, 205}, - {"plum4", 139, 102, 139}, - {"powder blue", 176, 224, 230}, - {"PowderBlue", 176, 224, 230}, - {"purple", 160, 32, 240}, - {"purple1", 155, 48, 255}, - {"purple2", 145, 44, 238}, - {"purple3", 125, 38, 205}, - {"purple4", 85, 26, 139}, - {"red", 255, 0, 0}, - {"red1", 255, 0, 0}, - {"red2", 238, 0, 0}, - {"red3", 205, 0, 0}, - {"red4", 139, 0, 0}, - {"rosy brown", 188, 143, 143}, - {"RosyBrown", 188, 143, 143}, - {"RosyBrown1", 255, 193, 193}, - {"RosyBrown2", 238, 180, 180}, - {"RosyBrown3", 205, 155, 155}, - {"RosyBrown4", 139, 105, 105}, - {"royal blue", 65, 105, 225}, - {"RoyalBlue", 65, 105, 225}, - {"RoyalBlue1", 72, 118, 255}, - {"RoyalBlue2", 67, 110, 238}, - {"RoyalBlue3", 58, 95, 205}, - {"RoyalBlue4", 39, 64, 139}, - {"saddle brown", 139, 69, 19}, - {"SaddleBrown", 139, 69, 19}, - {"salmon", 250, 128, 114}, - {"salmon1", 255, 140, 105}, - {"salmon2", 238, 130, 98}, - {"salmon3", 205, 112, 84}, - {"salmon4", 139, 76, 57}, - {"sandy brown", 244, 164, 96}, - {"SandyBrown", 244, 164, 96}, - {"sea green", 46, 139, 87}, - {"SeaGreen", 46, 139, 87}, - {"SeaGreen1", 84, 255, 159}, - {"SeaGreen2", 78, 238, 148}, - {"SeaGreen3", 67, 205, 128}, - {"SeaGreen4", 46, 139, 87}, - {"seashell", 255, 245, 238}, - {"seashell1", 255, 245, 238}, - {"seashell2", 238, 229, 222}, - {"seashell3", 205, 197, 191}, - {"seashell4", 139, 134, 130}, - {"sienna", 160, 82, 45}, - {"sienna1", 255, 130, 71}, - {"sienna2", 238, 121, 66}, - {"sienna3", 205, 104, 57}, - {"sienna4", 139, 71, 38}, - {"sky blue", 135, 206, 235}, - {"SkyBlue", 135, 206, 235}, - {"SkyBlue1", 135, 206, 255}, - {"SkyBlue2", 126, 192, 238}, - {"SkyBlue3", 108, 166, 205}, - {"SkyBlue4", 74, 112, 139}, - {"slate blue", 106, 90, 205}, - {"slate gray", 112, 128, 144}, - {"slate grey", 112, 128, 144}, - {"SlateBlue", 106, 90, 205}, - {"SlateBlue1", 131, 111, 255}, - {"SlateBlue2", 122, 103, 238}, - {"SlateBlue3", 105, 89, 205}, - {"SlateBlue4", 71, 60, 139}, - {"SlateGray", 112, 128, 144}, - {"SlateGray1", 198, 226, 255}, - {"SlateGray2", 185, 211, 238}, - {"SlateGray3", 159, 182, 205}, - {"SlateGray4", 108, 123, 139}, - {"SlateGrey", 112, 128, 144}, - {"snow", 255, 250, 250}, - {"snow1", 255, 250, 250}, - {"snow2", 238, 233, 233}, - {"snow3", 205, 201, 201}, - {"snow4", 139, 137, 137}, - {"spring green", 0, 255, 127}, - {"SpringGreen", 0, 255, 127}, - {"SpringGreen1", 0, 255, 127}, - {"SpringGreen2", 0, 238, 118}, - {"SpringGreen3", 0, 205, 102}, - {"SpringGreen4", 0, 139, 69}, - {"steel blue", 70, 130, 180}, - {"SteelBlue", 70, 130, 180}, - {"SteelBlue1", 99, 184, 255}, - {"SteelBlue2", 92, 172, 238}, - {"SteelBlue3", 79, 148, 205}, - {"SteelBlue4", 54, 100, 139}, - {"tan", 210, 180, 140}, - {"tan1", 255, 165, 79}, - {"tan2", 238, 154, 73}, - {"tan3", 205, 133, 63}, - {"tan4", 139, 90, 43}, - {"thistle", 216, 191, 216}, - {"thistle1", 255, 225, 255}, - {"thistle2", 238, 210, 238}, - {"thistle3", 205, 181, 205}, - {"thistle4", 139, 123, 139}, - {"tomato", 255, 99, 71}, - {"tomato1", 255, 99, 71}, - {"tomato2", 238, 92, 66}, - {"tomato3", 205, 79, 57}, - {"tomato4", 139, 54, 38}, - {"turquoise", 64, 224, 208}, - {"turquoise1", 0, 245, 255}, - {"turquoise2", 0, 229, 238}, - {"turquoise3", 0, 197, 205}, - {"turquoise4", 0, 134, 139}, - {"violet", 238, 130, 238}, - {"violet red", 208, 32, 144}, - {"VioletRed", 208, 32, 144}, - {"VioletRed1", 255, 62, 150}, - {"VioletRed2", 238, 58, 140}, - {"VioletRed3", 205, 50, 120}, - {"VioletRed4", 139, 34, 82}, - {"wheat", 245, 222, 179}, - {"wheat1", 255, 231, 186}, - {"wheat2", 238, 216, 174}, - {"wheat3", 205, 186, 150}, - {"wheat4", 139, 126, 102}, - {"white", 255, 255, 255}, - {"white smoke", 245, 245, 245}, - {"WhiteSmoke", 245, 245, 245}, - {"yellow", 255, 255, 0}, - {"yellow green", 154, 205, 50}, - {"yellow1", 255, 255, 0}, - {"yellow2", 238, 238, 0}, - {"yellow3", 205, 205, 0}, - {"yellow4", 139, 139, 0}, - {"YellowGreen", 154, 205, 50}, -}; - -static int numxcolors = 0; /* *---------------------------------------------------------------------- * * GdiGetColor -- @@ -3670,11 +2916,11 @@ *---------------------------------------------------------------------- */ static int GdiGetColor( const char *name, - unsigned long *color) + COLORREF *color) { if (numsyscolors == 0) { numsyscolors = sizeof(sysColors) / sizeof(SystemColorEntry); } if (_strnicmp(name, "system", 6) == 0) { @@ -3697,93 +2943,16 @@ return 0; } *color = GetSysColor(sysColors[i].index); return 1; } else { - return GdiParseColor(name, color); - } -} - -/* - *---------------------------------------------------------------------- - * - * GdiParseColor -- - * - * Convert color specification string (which could be an RGB string) - * to a color RGB triple. - * - * Results: - * Color specification converted. - * - *---------------------------------------------------------------------- - */ - -static int GdiParseColor( - const char *name, - unsigned long *color) -{ - /* TODO: replace with XParseColor, used by rest of Tk */ - if (name[0] == '#') { - char fmt[40]; - int i; - unsigned red, green, blue; - - if ((i = strlen(name+1))%3 != 0 || i > 12 || i < 3) { - return 0; - } - i /= 3; - sprintf(fmt, "%%%dx%%%dx%%%dx", i, i, i); - if (sscanf(name+1, fmt, &red, &green, &blue) != 3) { - return 0; - } - /* Now this is Windows-specific -- each component is at most 8 bits. */ - switch (i) { - case 1: - red <<= 4; - green <<= 4; - blue <<= 4; - break; - case 2: - break; - case 3: - red >>= 4; - green >>= 4; - blue >>= 4; - break; - case 4: - red >>= 8; - green >>= 8; - blue >>= 8; - break; - } - *color = RGB(red, green, blue); - return 1; - } else { - int i, u, r, l; - - if (numxcolors == 0) { - numxcolors = sizeof(xColors) / sizeof(XColorEntry); - } - l = 0; - u = numxcolors; - - while (l <= u) { - i = (l + u) / 2; - if ((r = _strcmpi(name, xColors[i].name)) == 0) { - break; - } - if (r < 0) { - u = i - 1; - } else { - l = i + 1; - } - } - if (l > u) { - return 0; - } - *color = RGB(xColors[i].red, xColors[i].green, xColors[i].blue); - return 1; + int result; + XColor xcolor; + result = XParseColor(NULL, 0, name, &xcolor); + *color = ((xcolor.red & 0xFF00)>>8) | (xcolor.green & 0xFF00) + | ((xcolor.blue & 0xFF00)<<8); + return result; } } /* * Beginning of functions for screen-to-dib translations. @@ -4398,281 +3567,10 @@ PrintOpenPage, NULL, NULL); Tcl_CreateObjCommand(interp, "::tk::print::_closepage", PrintClosePage, NULL, NULL); return TCL_OK; } - -/* - * The following functions are adapted from tkTrig.c. - */ - -/* - *-------------------------------------------------------------- - * - * TkGdiBezierScreenPoints -- - * - * Given four control points, create a larger set of XPoints for a Bezier - * spline based on the points. - * - * Results: - * The array at *xPointPtr gets filled in with numSteps XPoints - * corresponding to the Bezier spline defined by the four control points. - * - * Note: no output point is generated for the first input point, but an - * output point *is* generated for the last input point. - * - * Side effects: - * None. - * - *-------------------------------------------------------------- - */ - -static void -TkGdiBezierScreenPoints( - Tk_Canvas canvas, /* Canvas in which curve is to be drawn.. */ - double control[], /* Array of coordinates for four control - * points: x0, y0, x1, y1, ... x3 y3.. */ - int numSteps, /* Number of curve points to generate. */ - register XPoint *xPointPtr) /* Where to put new points.. */ -{ - int i; - double u, u2, u3, t, t2, t3; - - for (i = 1; i <= numSteps; i++, xPointPtr++) { - t = ((double) i)/((double) numSteps); - t2 = t*t; - t3 = t2*t; - u = 1.0 - t; - u2 = u*u; - u3 = u2*u; - Tk_CanvasDrawableCoords(canvas, - (control[0]*u3 + 3.0 * (control[2]*t*u2 + control[4]*t2*u) - + control[6]*t3), - (control[1]*u3 + 3.0 * (control[3]*t*u2 + control[5]*t2*u) - + control[7]*t3), - &xPointPtr->x, &xPointPtr->y); - } -} - -/* - *-------------------------------------------------------------- - * - * TkGdiBezierPoints -- - * - * Given four control points, create a larger set of points for a Bezier - * spline based on the points. - * - * Results: - * The array at *coordPtr gets filled in with 2*numSteps coordinates, - * which correspond to the Bezier spline defined by the four control - * points. - * - * Note: no output point is generated for the first input point, but an - * output point *is* generated for the last input point. - * - * Side effects: - * None. - * - *-------------------------------------------------------------- - */ - -static void -TkGdiBezierPoints( - double control[], /* Array of coordinates for four control - * points: x0, y0, x1, y1, ... x3 y3.. */ - int numSteps, /* Number of curve points to generate. */ - register double *coordPtr) /* Where to put new points.. */ -{ - int i; - double u, u2, u3, t, t2, t3; - - for (i = 1; i <= numSteps; i++, coordPtr += 2) { - t = ((double) i)/((double) numSteps); - t2 = t*t; - t3 = t2*t; - u = 1.0 - t; - u2 = u*u; - u3 = u2*u; - coordPtr[0] = control[0]*u3 - + 3.0 * (control[2]*t*u2 + control[4]*t2*u) + control[6]*t3; - coordPtr[1] = control[1]*u3 - + 3.0 * (control[3]*t*u2 + control[5]*t2*u) + control[7]*t3; - } -} - -/* - *-------------------------------------------------------------- - * - * TkGdiMakeBezierCurve -- - * - * Given a set of points, create a new set of points that fit parabolic - * splines to the line segments connecting the original points. Produces - * output points in either of two forms. - * - * Note: in spite of this procedure's name, it does *not* generate Bezier - * curves. Since only three control points are used for each curve - * segment, not four, the curves are actually just parabolic. - * - * Results: - * - * Either or both of the xPoints or dblPoints arrays are filled in. The - * return value is the number of points placed in the arrays. - * - * Note: if the first and last points are the same, then a closed curve - * is generated. - * - * Side effects: - * None. - * - *-------------------------------------------------------------- - */ -static int -TkGdiMakeBezierCurve( - Tk_Canvas canvas, /* Canvas in which curve is to be drawn.*/ - double *pointPtr, /* Array of input coordinates: - * x0, y0, x1, y1, etc... */ - int numPoints, /* Number of points at pointPtr.. */ - int numSteps, /* Number of steps to use for each spline - * segments. */ - XPoint xPoints[], /* Array of XPoints to fill in. */ - double dblPoints[]) /* Array of points to fill in as doubles, in - * the form x0, y0, x1, y1. */ - -{ - int closed, outputPoints, i; - int numCoords = numPoints*2; - double control[8]; - - /* - * If the curve is a closed one then generate a special spline that spans - * the last points and the first ones. Otherwise just put the first point - * into the output. - */ - - if (!pointPtr) { - /* - * Of pointPtr == NULL, this function returns an upper limit of the - * array size to store the coordinates. This can be used to allocate - * storage, before the actual coordinates are calculated. - */ - return 1 + numPoints * numSteps; - } - - outputPoints = 0; - if ((pointPtr[0] == pointPtr[numCoords-2]) - && (pointPtr[1] == pointPtr[numCoords-1])) { - closed = 1; - control[0] = 0.5*pointPtr[numCoords-4] + 0.5*pointPtr[0]; - control[1] = 0.5*pointPtr[numCoords-3] + 0.5*pointPtr[1]; - control[2] = 0.167*pointPtr[numCoords-4] + 0.833*pointPtr[0]; - control[3] = 0.167*pointPtr[numCoords-3] + 0.833*pointPtr[1]; - control[4] = 0.833*pointPtr[0] + 0.167*pointPtr[2]; - control[5] = 0.833*pointPtr[1] + 0.167*pointPtr[3]; - control[6] = 0.5*pointPtr[0] + 0.5*pointPtr[2]; - control[7] = 0.5*pointPtr[1] + 0.5*pointPtr[3]; - if (xPoints != NULL) { - Tk_CanvasDrawableCoords(canvas, control[0], control[1], - &xPoints->x, &xPoints->y); - TkGdiBezierScreenPoints(canvas, control, numSteps, xPoints+1); - xPoints += numSteps+1; - } - if (dblPoints != NULL) { - dblPoints[0] = control[0]; - dblPoints[1] = control[1]; - TkGdiBezierPoints(control, numSteps, dblPoints+2); - dblPoints += 2*(numSteps+1); - } - outputPoints += numSteps+1; - } else { - closed = 0; - if (xPoints != NULL) { - Tk_CanvasDrawableCoords(canvas, pointPtr[0], pointPtr[1], - &xPoints->x, &xPoints->y); - xPoints += 1; - } - if (dblPoints != NULL) { - dblPoints[0] = pointPtr[0]; - dblPoints[1] = pointPtr[1]; - dblPoints += 2; - } - outputPoints += 1; - } - - for (i = 2; i < numPoints; i++, pointPtr += 2) { - /* - * Set up the first two control points. This is done differently for - * the first spline of an open curve than for other cases. - */ - - if ((i == 2) && !closed) { - control[0] = pointPtr[0]; - control[1] = pointPtr[1]; - control[2] = 0.333*pointPtr[0] + 0.667*pointPtr[2]; - control[3] = 0.333*pointPtr[1] + 0.667*pointPtr[3]; - } else { - control[0] = 0.5*pointPtr[0] + 0.5*pointPtr[2]; - control[1] = 0.5*pointPtr[1] + 0.5*pointPtr[3]; - control[2] = 0.167*pointPtr[0] + 0.833*pointPtr[2]; - control[3] = 0.167*pointPtr[1] + 0.833*pointPtr[3]; - } - - /* - * Set up the last two control points. This is done differently for - * the last spline of an open curve than for other cases. - */ - - if ((i == (numPoints-1)) && !closed) { - control[4] = .667*pointPtr[2] + .333*pointPtr[4]; - control[5] = .667*pointPtr[3] + .333*pointPtr[5]; - control[6] = pointPtr[4]; - control[7] = pointPtr[5]; - } else { - control[4] = .833*pointPtr[2] + .167*pointPtr[4]; - control[5] = .833*pointPtr[3] + .167*pointPtr[5]; - control[6] = 0.5*pointPtr[2] + 0.5*pointPtr[4]; - control[7] = 0.5*pointPtr[3] + 0.5*pointPtr[5]; - } - - /* - * If the first two points coincide, or if the last two points - * coincide, then generate a single straight-line segment by - * outputting the last control point. - */ - - if (((pointPtr[0] == pointPtr[2]) && (pointPtr[1] == pointPtr[3])) - || ((pointPtr[2] == pointPtr[4]) - && (pointPtr[3] == pointPtr[5]))) { - if (xPoints != NULL) { - Tk_CanvasDrawableCoords(canvas, control[6], control[7], - &xPoints[0].x, &xPoints[0].y); - xPoints++; - } - if (dblPoints != NULL) { - dblPoints[0] = control[6]; - dblPoints[1] = control[7]; - dblPoints += 2; - } - outputPoints += 1; - continue; - } - - /* - * Generate a Bezier spline using the control points. - */ - - if (xPoints != NULL) { - TkGdiBezierScreenPoints(canvas, control, numSteps, xPoints); - xPoints += numSteps; - } - if (dblPoints != NULL) { - TkGdiBezierPoints(control, numSteps, dblPoints); - dblPoints += 2*numSteps; - } - outputPoints += numSteps; - } - return outputPoints; -} /* Print API functions. */ /*---------------------------------------------------------------------- *