]> granicus.if.org Git - graphviz/commitdiff
- add internal support for alpha channel in HSV colors
authorellson <devnull@localhost>
Mon, 10 Jul 2006 23:25:37 +0000 (23:25 +0000)
committerellson <devnull@localhost>
Mon, 10 Jul 2006 23:25:37 +0000 (23:25 +0000)
- save both rgba and hsva color values in colortbl.h  - share 'a' value
- only "transparent" has an "a" value of 0  - couold be others one day
- -Tps generator does binary test on "a" value of color - skip rendering if "transparent"

awk/colortbl.awk
lib/common/color.h
lib/common/color_names
lib/common/colxlate.c
lib/common/mpgen.c
lib/common/picgen.c
plugin/core/gvrender_core_ps.c

index 781c416c011615a102ee37726ce4928aed8cf065..5a91a7a471a43fb9ce917cdb4cf0767726ed59ad 100644 (file)
@@ -12,7 +12,7 @@
 # *              AT&T Research, Florham Park NJ             *
 # **********************************************************/
 
-function rgb_to_hsb(r,g,b) {
+function rgb_to_hsv(r,g,b) {
        r = r / 255.0; g = g / 255.0; b = b / 255.0;
        max = r; if (max < g) max = g; if (max < b) max = b;
        min = r; if (min > g) min = g; if (min > b) min = b;
@@ -38,11 +38,11 @@ function rgb_to_hsb(r,g,b) {
        v = v * 255.0;
 }
 
-BEGIN  { s = ARGV[1]; gsub("\\.","_",s); printf("hsbcolor_t %s[] = {\n",s); }
+BEGIN  { s = ARGV[1]; gsub("\\.","_",s); printf("hsvrgbacolor_t %s[] = {\n",s); }
 /^$/   { next; }
 /^#/   { next; }
                {
-                       rgb_to_hsb($2,$3,$4);
-                       printf("{\"%s\",%d,%d,%d},\n",$1,h,s,v);
+                       rgb_to_hsv($2,$3,$4);
+                       printf("{\"%s\",%d,%d,%d,%d,%d,%d,%d},\n",$1,h,s,v,$2,$3,$4,$5);
                }
 END            { printf("};\n"); }
index 161f137e1a6e81a44ae1a33546bebee1c12bf3d7..442b5d53e57892dfb12cf7a81cd6faf3a2039bb6 100644 (file)
 extern "C" {
 #endif
 
-typedef struct hsbcolor_t {
+typedef struct hsvrgbacolor_t {
     char *name;
-    unsigned char h, s, b;
-} hsbcolor_t;
+    unsigned char h, s, v;
+    unsigned char r, g, b, a;
+} hsvrgbacolor_t;
 
 /* possible representations of color in gvcolor_t */
-typedef enum { HSV_DOUBLE, RGBA_BYTE, RGBA_WORD, CMYK_BYTE,
+typedef enum { HSVA_DOUBLE, RGBA_BYTE, RGBA_WORD, CMYK_BYTE,
                RGBA_DOUBLE, COLOR_STRING, COLOR_INDEX } color_type_t;
 
 /* gvcolor_t can hold a color spec in a choice or representations */
 typedef struct color_s {
     union {
        double RGBA[4];
-       double HSV[3];
+       double HSVA[4];
        unsigned char rgba[4];
        unsigned char cmyk[4];
        int rrggbbaa[4];
index 7c206657fe6d7e839973758d44741bc92af856af..bae41b22f0790ab434dbbfe13a14c91e6ea9818b 100644 (file)
-aliceblue 240 248 255
-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
-blanchedalmond 255 235 205
-blue 0 0 255
-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
-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
-cornflowerblue 100 149 237
-cornsilk 255 248 220
-cornsilk1 255 248 220
-cornsilk2 238 232 205
-cornsilk3 205 200 177
-cornsilk4 139 136 120
-crimson 220 20 60
-cyan 0 255 255
-cyan1 0 255 255
-cyan2 0 238 238
-cyan3 0 205 205
-cyan4 0 139 139
-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
-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
-dimgray 105 105 105
-dimgrey 105 105 105
-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
-floralwhite 255 250 240
-forestgreen 34 139 34
-gainsboro 220 220 220
-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 192 192 192
-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
-green1 0 255 0
-green2 0 238 0
-green3 0 205 0
-green4 0 139 0
-greenyellow 173 255 47
-grey 192 192 192
-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
-hotpink 255 105 180
-hotpink1 255 110 180
-hotpink2 238 106 167
-hotpink3 205 96 144
-hotpink4 139 58 98
-indianred 205 92 92
-indianred1 255 106 106
-indianred2 238 99 99
-indianred3 205 85 85
-indianred4 139 58 58
-indigo 75 0 130
-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
-lavenderblush 255 240 245
-lavenderblush1 255 240 245
-lavenderblush2 238 224 229
-lavenderblush3 205 193 197
-lavenderblush4 139 131 134
-lawngreen 124 252 0
-lemonchiffon 255 250 205
-lemonchiffon1 255 250 205
-lemonchiffon2 238 233 191
-lemonchiffon3 205 201 165
-lemonchiffon4 139 137 112
-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
-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
-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
-midnightblue 25 25 112
-mintcream 245 255 250
-mistyrose 255 228 225
-mistyrose1 255 228 225
-mistyrose2 238 213 210
-mistyrose3 205 183 181
-mistyrose4 139 125 123
-moccasin 255 228 181
-navajowhite 255 222 173
-navajowhite1 255 222 173
-navajowhite2 238 207 161
-navajowhite3 205 179 139
-navajowhite4 139 121 94
-navy 0 0 128
-navyblue 0 0 128
-oldlace 253 245 230
-olivedrab 107 142 35
-olivedrab1 192 255 62
-olivedrab2 179 238 58
-olivedrab3 154 205 50
-olivedrab4 105 139 34
-orange 255 165 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
-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
-papayawhip 255 239 213
-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
-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
-rosybrown 188 143 143
-rosybrown1 255 193 193
-rosybrown2 238 180 180
-rosybrown3 205 155 155
-rosybrown4 139 105 105
-royalblue 65 105 225
-royalblue1 72 118 255
-royalblue2 67 110 238
-royalblue3 58 95 205
-royalblue4 39 64 139
-saddlebrown 139 69 19
-salmon 250 128 114
-salmon1 255 140 105
-salmon2 238 130 98
-salmon3 205 112 84
-salmon4 139 76 57
-sandybrown 244 164 96
-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
-skyblue 135 206 235
-skyblue1 135 206 255
-skyblue2 126 192 238
-skyblue3 108 166 205
-skyblue4 74 112 139
-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
-springgreen 0 255 127
-springgreen1 0 255 127
-springgreen2 0 238 118
-springgreen3 0 205 102
-springgreen4 0 139 69
-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
-transparent 255 255 254
-turquoise 64 224 208
-turquoise1 0 245 255
-turquoise2 0 229 238
-turquoise3 0 197 205
-turquoise4 0 134 139
-violet 238 130 238
-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
-whitesmoke 245 245 245
-yellow 255 255 0
-yellow1 255 255 0
-yellow2 238 238 0
-yellow3 205 205 0
-yellow4 139 139 0
-yellowgreen 154 205 50
+aliceblue 240 248 255 255
+antiquewhite 250 235 215 255
+antiquewhite1 255 239 219 255
+antiquewhite2 238 223 204 255
+antiquewhite3 205 192 176 255
+antiquewhite4 139 131 120 255
+aquamarine 127 255 212 255
+aquamarine1 127 255 212 255
+aquamarine2 118 238 198 255
+aquamarine3 102 205 170 255
+aquamarine4 69 139 116 255
+azure 240 255 255 255
+azure1 240 255 255 255
+azure2 224 238 238 255
+azure3 193 205 205 255
+azure4 131 139 139 255
+beige 245 245 220 255
+bisque 255 228 196 255
+bisque1 255 228 196 255
+bisque2 238 213 183 255
+bisque3 205 183 158 255
+bisque4 139 125 107 255
+black 0 0 0 255
+blanchedalmond 255 235 205 255
+blue 0 0 255 255
+blue1 0 0 255 255
+blue2 0 0 238 255
+blue3 0 0 205 255
+blue4 0 0 139 255
+blueviolet 138 43 226 255
+brown 165 42 42 255
+brown1 255 64 64 255
+brown2 238 59 59 255
+brown3 205 51 51 255
+brown4 139 35 35 255
+burlywood 222 184 135 255
+burlywood1 255 211 155 255
+burlywood2 238 197 145 255
+burlywood3 205 170 125 255
+burlywood4 139 115 85 255
+cadetblue 95 158 160 255
+cadetblue1 152 245 255 255
+cadetblue2 142 229 238 255
+cadetblue3 122 197 205 255
+cadetblue4 83 134 139 255
+chartreuse 127 255 0 255
+chartreuse1 127 255 0 255
+chartreuse2 118 238 0 255
+chartreuse3 102 205 0 255
+chartreuse4 69 139 0 255
+chocolate 210 105 30 255
+chocolate1 255 127 36 255
+chocolate2 238 118 33 255
+chocolate3 205 102 29 255
+chocolate4 139 69 19 255
+coral 255 127 80 255
+coral1 255 114 86 255
+coral2 238 106 80 255
+coral3 205 91 69 255
+coral4 139 62 47 255
+cornflowerblue 100 149 237 255
+cornsilk 255 248 220 255
+cornsilk1 255 248 220 255
+cornsilk2 238 232 205 255
+cornsilk3 205 200 177 255
+cornsilk4 139 136 120 255
+crimson 220 20 60 255
+cyan 0 255 255 255
+cyan1 0 255 255 255
+cyan2 0 238 238 255
+cyan3 0 205 205 255
+cyan4 0 139 139 255
+darkgoldenrod 184 134 11 255
+darkgoldenrod1 255 185 15 255
+darkgoldenrod2 238 173 14 255
+darkgoldenrod3 205 149 12 255
+darkgoldenrod4 139 101 8 255
+darkgreen 0 100 0 255
+darkkhaki 189 183 107 255
+darkolivegreen 85 107 47 255
+darkolivegreen1 202 255 112 255
+darkolivegreen2 188 238 104 255
+darkolivegreen3 162 205 90 255
+darkolivegreen4 110 139 61 255
+darkorange 255 140 0 255
+darkorange1 255 127 0 255
+darkorange2 238 118 0 255
+darkorange3 205 102 0 255
+darkorange4 139 69 0 255
+darkorchid 153 50 204 255
+darkorchid1 191 62 255 255
+darkorchid2 178 58 238 255
+darkorchid3 154 50 205 255
+darkorchid4 104 34 139 255
+darksalmon 233 150 122 255
+darkseagreen 143 188 143 255
+darkseagreen1 193 255 193 255
+darkseagreen2 180 238 180 255
+darkseagreen3 155 205 155 255
+darkseagreen4 105 139 105 255
+darkslateblue 72 61 139 255
+darkslategray 47 79 79 255
+darkslategray1 151 255 255 255
+darkslategray2 141 238 238 255
+darkslategray3 121 205 205 255
+darkslategray4 82 139 139 255
+darkslategrey 47 79 79 255
+darkturquoise 0 206 209 255
+darkviolet 148 0 211 255
+deeppink 255 20 147 255
+deeppink1 255 20 147 255
+deeppink2 238 18 137 255
+deeppink3 205 16 118 255
+deeppink4 139 10 80 255
+deepskyblue 0 191 255 255
+deepskyblue1 0 191 255 255
+deepskyblue2 0 178 238 255
+deepskyblue3 0 154 205 255
+deepskyblue4 0 104 139 255
+dimgray 105 105 105 255
+dimgrey 105 105 105 255
+dodgerblue 30 144 255 255
+dodgerblue1 30 144 255 255
+dodgerblue2 28 134 238 255
+dodgerblue3 24 116 205 255
+dodgerblue4 16 78 139 255
+firebrick 178 34 34 255
+firebrick1 255 48 48 255
+firebrick2 238 44 44 255
+firebrick3 205 38 38 255
+firebrick4 139 26 26 255
+floralwhite 255 250 240 255
+forestgreen 34 139 34 255
+gainsboro 220 220 220 255
+ghostwhite 248 248 255 255
+gold 255 215 0 255
+gold1 255 215 0 255
+gold2 238 201 0 255
+gold3 205 173 0 255
+gold4 139 117 0 255
+goldenrod 218 165 32 255
+goldenrod1 255 193 37 255
+goldenrod2 238 180 34 255
+goldenrod3 205 155 29 255
+goldenrod4 139 105 20 255
+gray 192 192 192 255
+gray0 0 0 0 255
+gray1 3 3 3 255
+gray10 26 26 26 255
+gray100 255 255 255 255
+gray11 28 28 28 255
+gray12 31 31 31 255
+gray13 33 33 33 255
+gray14 36 36 36 255
+gray15 38 38 38 255
+gray16 41 41 41 255
+gray17 43 43 43 255
+gray18 46 46 46 255
+gray19 48 48 48 255
+gray2 5 5 5 255
+gray20 51 51 51 255
+gray21 54 54 54 255
+gray22 56 56 56 255
+gray23 59 59 59 255
+gray24 61 61 61 255
+gray25 64 64 64 255
+gray26 66 66 66 255
+gray27 69 69 69 255
+gray28 71 71 71 255
+gray29 74 74 74 255
+gray3 8 8 8 255
+gray30 77 77 77 255
+gray31 79 79 79 255
+gray32 82 82 82 255
+gray33 84 84 84 255
+gray34 87 87 87 255
+gray35 89 89 89 255
+gray36 92 92 92 255
+gray37 94 94 94 255
+gray38 97 97 97 255
+gray39 99 99 99 255
+gray4 10 10 10 255
+gray40 102 102 102 255
+gray41 105 105 105 255
+gray42 107 107 107 255
+gray43 110 110 110 255
+gray44 112 112 112 255
+gray45 115 115 115 255
+gray46 117 117 117 255
+gray47 120 120 120 255
+gray48 122 122 122 255
+gray49 125 125 125 255
+gray5 13 13 13 255
+gray50 127 127 127 255
+gray51 130 130 130 255
+gray52 133 133 133 255
+gray53 135 135 135 255
+gray54 138 138 138 255
+gray55 140 140 140 255
+gray56 143 143 143 255
+gray57 145 145 145 255
+gray58 148 148 148 255
+gray59 150 150 150 255
+gray6 15 15 15 255
+gray60 153 153 153 255
+gray61 156 156 156 255
+gray62 158 158 158 255
+gray63 161 161 161 255
+gray64 163 163 163 255
+gray65 166 166 166 255
+gray66 168 168 168 255
+gray67 171 171 171 255
+gray68 173 173 173 255
+gray69 176 176 176 255
+gray7 18 18 18 255
+gray70 179 179 179 255
+gray71 181 181 181 255
+gray72 184 184 184 255
+gray73 186 186 186 255
+gray74 189 189 189 255
+gray75 191 191 191 255
+gray76 194 194 194 255
+gray77 196 196 196 255
+gray78 199 199 199 255
+gray79 201 201 201 255
+gray8 20 20 20 255
+gray80 204 204 204 255
+gray81 207 207 207 255
+gray82 209 209 209 255
+gray83 212 212 212 255
+gray84 214 214 214 255
+gray85 217 217 217 255
+gray86 219 219 219 255
+gray87 222 222 222 255
+gray88 224 224 224 255
+gray89 227 227 227 255
+gray9 23 23 23 255
+gray90 229 229 229 255
+gray91 232 232 232 255
+gray92 235 235 235 255
+gray93 237 237 237 255
+gray94 240 240 240 255
+gray95 242 242 242 255
+gray96 245 245 245 255
+gray97 247 247 247 255
+gray98 250 250 250 255
+gray99 252 252 252 255
+green 0 255 0 255
+green1 0 255 0 255
+green2 0 238 0 255
+green3 0 205 0 255
+green4 0 139 0 255
+greenyellow 173 255 47 255
+grey 192 192 192 255
+grey0 0 0 0 255
+grey1 3 3 3 255
+grey10 26 26 26 255
+grey100 255 255 255 255
+grey11 28 28 28 255
+grey12 31 31 31 255
+grey13 33 33 33 255
+grey14 36 36 36 255
+grey15 38 38 38 255
+grey16 41 41 41 255
+grey17 43 43 43 255
+grey18 46 46 46 255
+grey19 48 48 48 255
+grey2 5 5 5 255
+grey20 51 51 51 255
+grey21 54 54 54 255
+grey22 56 56 56 255
+grey23 59 59 59 255
+grey24 61 61 61 255
+grey25 64 64 64 255
+grey26 66 66 66 255
+grey27 69 69 69 255
+grey28 71 71 71 255
+grey29 74 74 74 255
+grey3 8 8 8 255
+grey30 77 77 77 255
+grey31 79 79 79 255
+grey32 82 82 82 255
+grey33 84 84 84 255
+grey34 87 87 87 255
+grey35 89 89 89 255
+grey36 92 92 92 255
+grey37 94 94 94 255
+grey38 97 97 97 255
+grey39 99 99 99 255
+grey4 10 10 10 255
+grey40 102 102 102 255
+grey41 105 105 105 255
+grey42 107 107 107 255
+grey43 110 110 110 255
+grey44 112 112 112 255
+grey45 115 115 115 255
+grey46 117 117 117 255
+grey47 120 120 120 255
+grey48 122 122 122 255
+grey49 125 125 125 255
+grey5 13 13 13 255
+grey50 127 127 127 255
+grey51 130 130 130 255
+grey52 133 133 133 255
+grey53 135 135 135 255
+grey54 138 138 138 255
+grey55 140 140 140 255
+grey56 143 143 143 255
+grey57 145 145 145 255
+grey58 148 148 148 255
+grey59 150 150 150 255
+grey6 15 15 15 255
+grey60 153 153 153 255
+grey61 156 156 156 255
+grey62 158 158 158 255
+grey63 161 161 161 255
+grey64 163 163 163 255
+grey65 166 166 166 255
+grey66 168 168 168 255
+grey67 171 171 171 255
+grey68 173 173 173 255
+grey69 176 176 176 255
+grey7 18 18 18 255
+grey70 179 179 179 255
+grey71 181 181 181 255
+grey72 184 184 184 255
+grey73 186 186 186 255
+grey74 189 189 189 255
+grey75 191 191 191 255
+grey76 194 194 194 255
+grey77 196 196 196 255
+grey78 199 199 199 255
+grey79 201 201 201 255
+grey8 20 20 20 255
+grey80 204 204 204 255
+grey81 207 207 207 255
+grey82 209 209 209 255
+grey83 212 212 212 255
+grey84 214 214 214 255
+grey85 217 217 217 255
+grey86 219 219 219 255
+grey87 222 222 222 255
+grey88 224 224 224 255
+grey89 227 227 227 255
+grey9 23 23 23 255
+grey90 229 229 229 255
+grey91 232 232 232 255
+grey92 235 235 235 255
+grey93 237 237 237 255
+grey94 240 240 240 255
+grey95 242 242 242 255
+grey96 245 245 245 255
+grey97 247 247 247 255
+grey98 250 250 250 255
+grey99 252 252 252 255
+honeydew 240 255 240 255
+honeydew1 240 255 240 255
+honeydew2 224 238 224 255
+honeydew3 193 205 193 255
+honeydew4 131 139 131 255
+hotpink 255 105 180 255
+hotpink1 255 110 180 255
+hotpink2 238 106 167 255
+hotpink3 205 96 144 255
+hotpink4 139 58 98 255
+indianred 205 92 92 255
+indianred1 255 106 106 255
+indianred2 238 99 99 255
+indianred3 205 85 85 255
+indianred4 139 58 58 255
+indigo 75 0 130 255
+ivory 255 255 240 255
+ivory1 255 255 240 255
+ivory2 238 238 224 255
+ivory3 205 205 193 255
+ivory4 139 139 131 255
+khaki 240 230 140 255
+khaki1 255 246 143 255
+khaki2 238 230 133 255
+khaki3 205 198 115 255
+khaki4 139 134 78 255
+lavender 230 230 250 255
+lavenderblush 255 240 245 255
+lavenderblush1 255 240 245 255
+lavenderblush2 238 224 229 255
+lavenderblush3 205 193 197 255
+lavenderblush4 139 131 134 255
+lawngreen 124 252 0 255
+lemonchiffon 255 250 205 255
+lemonchiffon1 255 250 205 255
+lemonchiffon2 238 233 191 255
+lemonchiffon3 205 201 165 255
+lemonchiffon4 139 137 112 255
+lightblue 173 216 230 255
+lightblue1 191 239 255 255
+lightblue2 178 223 238 255
+lightblue3 154 192 205 255
+lightblue4 104 131 139 255
+lightcoral 240 128 128 255
+lightcyan 224 255 255 255
+lightcyan1 224 255 255 255
+lightcyan2 209 238 238 255
+lightcyan3 180 205 205 255
+lightcyan4 122 139 139 255
+lightgoldenrod 238 221 130 255
+lightgoldenrod1 255 236 139 255
+lightgoldenrod2 238 220 130 255
+lightgoldenrod3 205 190 112 255
+lightgoldenrod4 139 129 76 255
+lightgoldenrodyellow 250 250 210 255
+lightgray 211 211 211 255
+lightgrey 211 211 211 255
+lightpink 255 182 193 255
+lightpink1 255 174 185 255
+lightpink2 238 162 173 255
+lightpink3 205 140 149 255
+lightpink4 139 95 101 255
+lightsalmon 255 160 122 255
+lightsalmon1 255 160 122 255
+lightsalmon2 238 149 114 255
+lightsalmon3 205 129 98 255
+lightsalmon4 139 87 66 255
+lightseagreen 32 178 170 255
+lightskyblue 135 206 250 255
+lightskyblue1 176 226 255 255
+lightskyblue2 164 211 238 255
+lightskyblue3 141 182 205 255
+lightskyblue4 96 123 139 255
+lightslateblue 132 112 255 255
+lightslategray 119 136 153 255
+lightslategrey 119 136 153 255
+lightsteelblue 176 196 222 255
+lightsteelblue1 202 225 255 255
+lightsteelblue2 188 210 238 255
+lightsteelblue3 162 181 205 255
+lightsteelblue4 110 123 139 255
+lightyellow 255 255 224 255
+lightyellow1 255 255 224 255
+lightyellow2 238 238 209 255
+lightyellow3 205 205 180 255
+lightyellow4 139 139 122 255
+limegreen 50 205 50 255
+linen 250 240 230 255
+magenta 255 0 255 255
+magenta1 255 0 255 255
+magenta2 238 0 238 255
+magenta3 205 0 205 255
+magenta4 139 0 139 255
+maroon 176 48 96 255
+maroon1 255 52 179 255
+maroon2 238 48 167 255
+maroon3 205 41 144 255
+maroon4 139 28 98 255
+mediumaquamarine 102 205 170 255
+mediumblue 0 0 205 255
+mediumorchid 186 85 211 255
+mediumorchid1 224 102 255 255
+mediumorchid2 209 95 238 255
+mediumorchid3 180 82 205 255
+mediumorchid4 122 55 139 255
+mediumpurple 147 112 219 255
+mediumpurple1 171 130 255 255
+mediumpurple2 159 121 238 255
+mediumpurple3 137 104 205 255
+mediumpurple4 93 71 139 255
+mediumseagreen 60 179 113 255
+mediumslateblue 123 104 238 255
+mediumspringgreen 0 250 154 255
+mediumturquoise 72 209 204 255
+mediumvioletred 199 21 133 255
+midnightblue 25 25 112 255
+mintcream 245 255 250 255
+mistyrose 255 228 225 255
+mistyrose1 255 228 225 255
+mistyrose2 238 213 210 255
+mistyrose3 205 183 181 255
+mistyrose4 139 125 123 255
+moccasin 255 228 181 255
+navajowhite 255 222 173 255
+navajowhite1 255 222 173 255
+navajowhite2 238 207 161 255
+navajowhite3 205 179 139 255
+navajowhite4 139 121 94 255
+navy 0 0 128 255
+navyblue 0 0 128 255
+oldlace 253 245 230 255
+olivedrab 107 142 35 255
+olivedrab1 192 255 62 255
+olivedrab2 179 238 58 255
+olivedrab3 154 205 50 255
+olivedrab4 105 139 34 255
+orange 255 165 0 255
+orange1 255 165 0 255
+orange2 238 154 0 255
+orange3 205 133 0 255
+orange4 139 90 0 255
+orangered 255 69 0 255
+orangered1 255 69 0 255
+orangered2 238 64 0 255
+orangered3 205 55 0 255
+orangered4 139 37 0 255
+orchid 218 112 214 255
+orchid1 255 131 250 255
+orchid2 238 122 233 255
+orchid3 205 105 201 255
+orchid4 139 71 137 255
+palegoldenrod 238 232 170 255
+palegreen 152 251 152 255
+palegreen1 154 255 154 255
+palegreen2 144 238 144 255
+palegreen3 124 205 124 255
+palegreen4 84 139 84 255
+paleturquoise 175 238 238 255
+paleturquoise1 187 255 255 255
+paleturquoise2 174 238 238 255
+paleturquoise3 150 205 205 255
+paleturquoise4 102 139 139 255
+palevioletred 219 112 147 255
+palevioletred1 255 130 171 255
+palevioletred2 238 121 159 255
+palevioletred3 205 104 137 255
+palevioletred4 139 71 93 255
+papayawhip 255 239 213 255
+peachpuff 255 218 185 255
+peachpuff1 255 218 185 255
+peachpuff2 238 203 173 255
+peachpuff3 205 175 149 255
+peachpuff4 139 119 101 255
+peru 205 133 63 255
+pink 255 192 203 255
+pink1 255 181 197 255
+pink2 238 169 184 255
+pink3 205 145 158 255
+pink4 139 99 108 255
+plum 221 160 221 255
+plum1 255 187 255 255
+plum2 238 174 238 255
+plum3 205 150 205 255
+plum4 139 102 139 255
+powderblue 176 224 230 255
+purple 160 32 240 255
+purple1 155 48 255 255
+purple2 145 44 238 255
+purple3 125 38 205 255
+purple4 85 26 139 255
+red 255 0 0 255
+red1 255 0 0 255
+red2 238 0 0 255
+red3 205 0 0 255
+red4 139 0 0 255
+rosybrown 188 143 143 255
+rosybrown1 255 193 193 255
+rosybrown2 238 180 180 255
+rosybrown3 205 155 155 255
+rosybrown4 139 105 105 255
+royalblue 65 105 225 255
+royalblue1 72 118 255 255
+royalblue2 67 110 238 255
+royalblue3 58 95 205 255
+royalblue4 39 64 139 255
+saddlebrown 139 69 19 255
+salmon 250 128 114 255
+salmon1 255 140 105 255
+salmon2 238 130 98 255
+salmon3 205 112 84 255
+salmon4 139 76 57 255
+sandybrown 244 164 96 255
+seagreen 46 139 87 255
+seagreen1 84 255 159 255
+seagreen2 78 238 148 255
+seagreen3 67 205 128 255
+seagreen4 46 139 87 255
+seashell 255 245 238 255
+seashell1 255 245 238 255
+seashell2 238 229 222 255
+seashell3 205 197 191 255
+seashell4 139 134 130 255
+sienna 160 82 45 255
+sienna1 255 130 71 255
+sienna2 238 121 66 255
+sienna3 205 104 57 255
+sienna4 139 71 38 255
+skyblue 135 206 235 255
+skyblue1 135 206 255 255
+skyblue2 126 192 238 255
+skyblue3 108 166 205 255
+skyblue4 74 112 139 255
+slateblue 106 90 205 255
+slateblue1 131 111 255 255
+slateblue2 122 103 238 255
+slateblue3 105 89 205 255
+slateblue4 71 60 139 255
+slategray 112 128 144 255
+slategray1 198 226 255 255
+slategray2 185 211 238 255
+slategray3 159 182 205 255
+slategray4 108 123 139 255
+slategrey 112 128 144 255
+snow 255 250 250 255
+snow1 255 250 250 255
+snow2 238 233 233 255
+snow3 205 201 201 255
+snow4 139 137 137 255
+springgreen 0 255 127 255
+springgreen1 0 255 127 255
+springgreen2 0 238 118 255
+springgreen3 0 205 102 255
+springgreen4 0 139 69 255
+steelblue 70 130 180 255
+steelblue1 99 184 255 255
+steelblue2 92 172 238 255
+steelblue3 79 148 205 255
+steelblue4 54 100 139 255
+tan 210 180 140 255
+tan1 255 165 79 255
+tan2 238 154 73 255
+tan3 205 133 63 255
+tan4 139 90 43 255
+thistle 216 191 216 255
+thistle1 255 225 255 255
+thistle2 238 210 238 255
+thistle3 205 181 205 255
+thistle4 139 123 139 255
+tomato 255 99 71 255
+tomato1 255 99 71 255
+tomato2 238 92 66 255
+tomato3 205 79 57 255
+tomato4 139 54 38 255
+transparent 255 255 254 0
+turquoise 64 224 208 255
+turquoise1 0 245 255 255
+turquoise2 0 229 238 255
+turquoise3 0 197 205 255
+turquoise4 0 134 139 255
+violet 238 130 238 255
+violetred 208 32 144 255
+violetred1 255 62 150 255
+violetred2 238 58 140 255
+violetred3 205 50 120 255
+violetred4 139 34 82 255
+wheat 245 222 179 255
+wheat1 255 231 186 255
+wheat2 238 216 174 255
+wheat3 205 186 150 255
+wheat4 139 126 102 255
+white 255 255 255 255
+whitesmoke 245 245 245 255
+yellow 255 255 0 255
+yellow1 255 255 0 255
+yellow2 238 238 0 255
+yellow3 205 205 0 255
+yellow4 139 139 0 255
+yellowgreen 154 205 50 255
index 10e5b50a1b080afafbed3062fba2431a0d58b393..d2f43e000f100ebac15d8ff2cd60dd5d5abad5a8 100644 (file)
@@ -129,10 +129,10 @@ static void rgb2cmyk(double r, double g, double b, double *c, double *m,
 static int colorcmpf(const void *p0, const void *p1)
 {
     /* fast comparison of first character */
-    int i = (((hsbcolor_t *) p0)->name[0] - ((hsbcolor_t *) p1)->name[0]);
+    int i = (((hsvrgbacolor_t *) p0)->name[0] - ((hsvrgbacolor_t *) p1)->name[0]);
     /* if first character matches then compare full color name */
     return (i ? i :
-           strcmp(((hsbcolor_t *) p0)->name, ((hsbcolor_t *) p1)->name));
+           strcmp(((hsvrgbacolor_t *) p0)->name, ((hsvrgbacolor_t *) p1)->name));
 }
 
 char *canontoken(char *str)
@@ -237,13 +237,13 @@ static char* resolveColor (char* str)
 
 int colorxlate(char *str, gvcolor_t * color, color_type_t target_type)
 {
-    static hsbcolor_t *last;
+    static hsvrgbacolor_t *last;
     static unsigned char *canon;
     static int allocated;
     unsigned char *p, *q;
-    hsbcolor_t fake;
+    hsvrgbacolor_t fake;
     unsigned char c;
-    double H, S, V, R, G, B;
+    double H, S, V, A, R, G, B;
     double C, M, Y, K;
     unsigned int r, g, b, a;
     int len, rc;
@@ -260,14 +260,16 @@ int colorxlate(char *str, gvcolor_t * color, color_type_t target_type)
     if ((*p == '#')
        && (sscanf((char *) p, "#%2x%2x%2x%2x", &r, &g, &b, &a) >= 3)) {
        switch (target_type) {
-       case HSV_DOUBLE:
+       case HSVA_DOUBLE:
            R = (double) r / 255.0;
            G = (double) g / 255.0;
            B = (double) b / 255.0;
+           A = (double) a / 255.0;
            rgb2hsv(R, G, B, &H, &S, &V);
-           color->u.HSV[0] = H;
-           color->u.HSV[1] = S;
-           color->u.HSV[2] = V;
+           color->u.HSVA[0] = H;
+           color->u.HSVA[1] = S;
+           color->u.HSVA[2] = V;
+           color->u.HSVA[3] = A;
            break;
        case RGBA_BYTE:
            color->u.rgba[0] = r;
@@ -330,10 +332,11 @@ int colorxlate(char *str, gvcolor_t * color, color_type_t target_type)
            S = MAX(MIN(S, 1.0), 0.0);
            V = MAX(MIN(V, 1.0), 0.0);
            switch (target_type) {
-           case HSV_DOUBLE:
-               color->u.HSV[0] = H;
-               color->u.HSV[1] = S;
-               color->u.HSV[2] = V;
+           case HSVA_DOUBLE:
+               color->u.HSVA[0] = H;
+               color->u.HSVA[1] = S;
+               color->u.HSVA[2] = V;
+               color->u.HSVA[3] = 1.0; /* opaque */
                break;
            case RGBA_BYTE:
                hsv2rgb(H, S, V, &R, &G, &B);
@@ -380,59 +383,47 @@ int colorxlate(char *str, gvcolor_t * color, color_type_t target_type)
     if ((last == NULL)
        || (last->name[0] != fake.name[0])
        || (strcmp(last->name, fake.name))) {
-       last = (hsbcolor_t *) bsearch((void *) &fake,
+       last = (hsvrgbacolor_t *) bsearch((void *) &fake,
                                      (void *) color_lib,
                                      sizeof(color_lib) /
-                                     sizeof(hsbcolor_t), sizeof(fake),
+                                     sizeof(hsvrgbacolor_t), sizeof(fake),
                                      colorcmpf);
     }
     if (last != NULL) {
        switch (target_type) {
-       case HSV_DOUBLE:
-           color->u.HSV[0] = ((double) last->h) / 255.0;
-           color->u.HSV[1] = ((double) last->s) / 255.0;
-           color->u.HSV[2] = ((double) last->b) / 255.0;
+       case HSVA_DOUBLE:
+           color->u.HSVA[0] = ((double) last->h) / 255.0;
+           color->u.HSVA[1] = ((double) last->s) / 255.0;
+           color->u.HSVA[2] = ((double) last->b) / 255.0;
+           color->u.HSVA[3] = ((double) last->a) / 255.0;
            break;
        case RGBA_BYTE:
-           H = (last->h) / 255.0;
-           S = (last->s) / 255.0;
-           V = (last->b) / 255.0;
-           hsv2rgb(H, S, V, &R, &G, &B);
-           color->u.rgba[0] = (int) (R * 255);
-           color->u.rgba[1] = (int) (G * 255);
-           color->u.rgba[2] = (int) (B * 255);
-           color->u.rgba[3] = 255;     /* opaque */
+           color->u.rgba[0] = last->r;
+           color->u.rgba[1] = last->g;
+           color->u.rgba[2] = last->b;
+           color->u.rgba[3] = last->a;
            break;
        case CMYK_BYTE:
-           H = (last->h) / 255.0;
-           S = (last->s) / 255.0;
-           V = (last->b) / 255.0;
-           hsv2rgb(H, S, V, &R, &G, &B);
+           R = (last->r) / 255.0;
+           G = (last->g) / 255.0;
+           B = (last->b) / 255.0;
            rgb2cmyk(R, G, B, &C, &M, &Y, &K);
-           color->u.cmyk[0] = (int) C *255;
-           color->u.cmyk[1] = (int) M *255;
-           color->u.cmyk[2] = (int) Y *255;
-           color->u.cmyk[3] = (int) K *255;
+           color->u.cmyk[0] = (int) C * 255;
+           color->u.cmyk[1] = (int) M * 255;
+           color->u.cmyk[2] = (int) Y * 255;
+           color->u.cmyk[3] = (int) K * 255;
            break;
        case RGBA_WORD:
-           H = (last->h) / 255.0;
-           S = (last->s) / 255.0;
-           V = (last->b) / 255.0;
-           hsv2rgb(H, S, V, &R, &G, &B);
-           color->u.rrggbbaa[0] = (int) (R * 65535);
-           color->u.rrggbbaa[1] = (int) (G * 65535);
-           color->u.rrggbbaa[2] = (int) (B * 65535);
-           color->u.rrggbbaa[3] = 65535;       /* opaque */
+           color->u.rrggbbaa[0] = last->r * 65535 / 255;
+           color->u.rrggbbaa[1] = last->g * 65535 / 255;
+           color->u.rrggbbaa[2] = last->b * 65535 / 255;
+           color->u.rrggbbaa[3] = last->a * 65535 / 255;
            break;
        case RGBA_DOUBLE:
-           H = (last->h) / 255.0;
-           S = (last->s) / 255.0;
-           V = (last->b) / 255.0;
-           hsv2rgb(H, S, V, &R, &G, &B);
-           color->u.RGBA[0] = R;
-           color->u.RGBA[1] = G;
-           color->u.RGBA[2] = B;
-           color->u.RGBA[3] = 1.0;     /* opaque */
+           color->u.RGBA[0] = last->r / 255.0;
+           color->u.RGBA[1] = last->g / 255.0;
+           color->u.RGBA[2] = last->b / 255.0;
+           color->u.RGBA[3] = last->a / 255.0;
            break;
        case COLOR_STRING:
            break;
@@ -445,8 +436,9 @@ int colorxlate(char *str, gvcolor_t * color, color_type_t target_type)
     /* if we're still here then we failed to find a valid color spec */
     rc = COLOR_UNKNOWN;
     switch (target_type) {
-    case HSV_DOUBLE:
-       color->u.HSV[0] = color->u.HSV[1] = color->u.HSV[2] = 0.0;
+    case HSVA_DOUBLE:
+       color->u.HSVA[0] = color->u.HSVA[1] = color->u.HSVA[2] = 0.0;
+       color->u.HSVA[3] = 1.0; /* opaque */
        break;
     case RGBA_BYTE:
        color->u.rgba[0] = color->u.rgba[1] = color->u.rgba[2] = 0;
@@ -457,8 +449,7 @@ int colorxlate(char *str, gvcolor_t * color, color_type_t target_type)
            color->u.cmyk[1] = color->u.cmyk[2] = color->u.cmyk[3] = 0;
        break;
     case RGBA_WORD:
-       color->u.rrggbbaa[0] =
-           color->u.rrggbbaa[1] = color->u.rrggbbaa[2] = 0;
+       color->u.rrggbbaa[0] = color->u.rrggbbaa[1] = color->u.rrggbbaa[2] = 0;
        color->u.rrggbbaa[3] = 65535;   /* opaque */
        break;
     case RGBA_DOUBLE:
index ce1d8c8aeb60b52ed0be8787eb1d95c932b56b19..915887854f5c478507954147a44a9b759b6588e3 100644 (file)
@@ -134,9 +134,9 @@ static void mp_set_color(char *name)
     gvcolor_t color;
 
     if (strcmp(name, S[SP].color)) {
-       colorxlate(name, &color, HSV_DOUBLE);
+       colorxlate(name, &color, HSVA_DOUBLE);
        fprintf(Output_file, "%% GV set color: %.3f %.3f %.3f %scolor\n",
-               color.u.HSV[0], color.u.HSV[1], color.u.HSV[2], op[Obj]);
+               color.u.HSVA[0], color.u.HSVA[1], color.u.HSVA[2], op[Obj]);
     }
     S[SP].color = name;
 }
index 1f2c2c8d4ef45bb7ac5f5aeb06ec296f8760d113..6b85a83af612da41f06c532e6d2b27cb5a871f43 100644 (file)
@@ -455,9 +455,9 @@ static void pic_set_color(char *name)
     gvcolor_t color;
 
     S[SP].color = name;
-    colorxlate(name, &color, HSV_DOUBLE);
+    colorxlate(name, &color, HSVA_DOUBLE);
     /* just v used to set grayscale value */
-    fprintf(Output_file, "setfillval %f\n", color.u.HSV[2]);
+    fprintf(Output_file, "setfillval %f\n", color.u.HSVA[2]);
 }
 
 static void pic_set_style(char **s)
@@ -535,8 +535,8 @@ static void pic_polygon(point * A, int n, int filled)
        if (filled) {
            gvcolor_t color;
 
-           colorxlate(S[SP].color, &color, HSV_DOUBLE);
-           fprintf(Output_file, "setfillval %f\n", color.u.HSV[2]);
+           colorxlate(S[SP].color, &color, HSVA_DOUBLE);
+           fprintf(Output_file, "setfillval %f\n", color.u.HSVA[2]);
        }
        fprintf(Output_file, "box attrs%d %swid %.5f ht %.5f at (%.5f,%.5f);\n", SP, filled ? "fill " : "", Scale * fabs(pf1.x - pf2.x), Scale * fabs(pf1.y - pf2.y),   /* width, height */
                Scale * (pf1.x + pf2.x) / 2.0, Scale * (pf1.y + pf2.y) / 2.0);  /* center coordinates */
index 4cd766dbb66ee765e99530faaaa0bcdb2787a420..cadddf714bb70581d232243814eda9bf8d9ad894 100644 (file)
@@ -60,9 +60,10 @@ static void psgen_begin_job(GVJ_t * job)
 {
     last_fontname = NULL;
     last_fontsize = 0.0;
-    last_color.u.HSV[0] = 0;
-    last_color.u.HSV[1] = 0;
-    last_color.u.HSV[2] = 0;
+    last_color.u.HSVA[0] = 0.0;
+    last_color.u.HSVA[1] = 0.0;
+    last_color.u.HSVA[2] = 0.0;
+    last_color.u.HSVA[3] = 1.0;  /* opaque */
 
     fprintf(job->output_file, "%%!PS-Adobe-2.0\n");
     fprintf(job->output_file, "%%%%Creator: %s version %s (%s)\n",
@@ -117,6 +118,10 @@ static void psgen_begin_page(GVJ_t * job)
 {
     box pbr = job->pageBoundingBox;
 
+// FIXME
+    point page = {0,0};
+    int N_pages = 0;
+
     fprintf(job->output_file, "%%%%Page: %d %d\n",
            job->common->viewNum + 1, job->common->viewNum + 1);
     if (job->common->show_boxes == NULL)
@@ -124,13 +129,19 @@ static void psgen_begin_page(GVJ_t * job)
            pbr.LL.x, pbr.LL.y, pbr.UR.x, pbr.UR.y);
     fprintf(job->output_file, "%%%%PageOrientation: %s\n",
            (job->rotation ? "Landscape" : "Portrait"));
+#if 0
+   if (Output_lang == PDF)
+        fprintf(Output_file, "<< /PageSize [%d %d] >> setpagedevice\n",
+            sz.x, sz.y);
+#endif
     if (job->common->show_boxes == NULL)
         fprintf(job->output_file, "gsave\n%d %d %d %d boxprim clip newpath\n",
            pbr.LL.x, pbr.LL.y, pbr.UR.x, pbr.UR.y);
-       fprintf(job->output_file, "gsave %g %g set_scale %d rotate %g %g translate\n",
-               job->scale.x, job->scale.y,
-               job->rotation,
-               job->translation.x, job->translation.y);
+    fprintf(job->output_file, "%d %d %d beginpage\n", page.x, page.y, N_pages);
+    fprintf(job->output_file, "%g %g set_scale %d rotate %g %g translate\n",
+           job->scale.x, job->scale.y,
+           job->rotation,
+           job->translation.x, job->translation.y);
 
     /*  Define the size of the PS canvas  */
     if (job->render.id == FORMAT_PS2) {
@@ -145,8 +156,8 @@ static void psgen_begin_page(GVJ_t * job)
 
 static void psgen_end_page(GVJ_t * job)
 {
-    if (job->common->show_boxes)
-       cat_libfile(job->output_file, NULL, job->common->show_boxes + 1);
+//    if (job->common->show_boxes)
+//     cat_libfile(job->output_file, NULL, job->common->show_boxes + 1);
     /* the showpage is really a no-op, but at least one PS processor
      * out there needs to see this literal token.  endpage does the real work.
      */
@@ -281,21 +292,24 @@ static void ps_set_color(GVJ_t *job, gvcolor_t *color)
        if (job->obj->g)
           objtype = "graph";
        else if (job->obj->sg)
-          objtype = "cluster";
+          objtype = "graph";
        else if (job->obj->n)
           objtype = "node";
        else if (job->obj->e)
           objtype = "edge";
        else
           objtype = "sethsb";
-       if ( last_color.u.HSV[0] != color->u.HSV[0]
-         || last_color.u.HSV[1] != color->u.HSV[1]
-         || last_color.u.HSV[2] != color->u.HSV[2]) {
+       if ( last_color.u.HSVA[0] != color->u.HSVA[0]
+         || last_color.u.HSVA[1] != color->u.HSVA[1]
+         || last_color.u.HSVA[2] != color->u.HSVA[2]
+         || last_color.u.HSVA[3] != color->u.HSVA[3]
+         || (job->obj->g && (job->obj->g == job->obj->g->root))) {
            fprintf(job->output_file, "%.3f %.3f %.3f %scolor\n",
-               color->u.HSV[0], color->u.HSV[1], color->u.HSV[2], objtype);
-           last_color.u.HSV[0] = color->u.HSV[0];
-           last_color.u.HSV[1] = color->u.HSV[1];
-           last_color.u.HSV[2] = color->u.HSV[2];
+               color->u.HSVA[0], color->u.HSVA[1], color->u.HSVA[2], objtype);
+           last_color.u.HSVA[0] = color->u.HSVA[0];
+           last_color.u.HSVA[1] = color->u.HSVA[1];
+           last_color.u.HSVA[2] = color->u.HSVA[2];
+           last_color.u.HSVA[3] = color->u.HSVA[3];
        }
     }
 }
@@ -305,6 +319,9 @@ static void psgen_textpara(GVJ_t * job, pointf p, textpara_t * para)
     double adj, sz;
     char *str;
 
+    if (job->style->pencolor.u.HSVA[3] < .5)
+       return;  /* skip transparent text */
+
     ps_set_color(job, &(job->style->pencolor));
     if (para->fontname) {
        sz = para->fontsize;
@@ -354,15 +371,17 @@ static void psgen_ellipse(GVJ_t * job, pointf * A, int filled)
 {
     /* A[] contains 2 points: the center and corner. */
 
-    if (filled) {
+    if (filled && job->style->fillcolor.u.HSVA[3] > .5) {
        ps_set_color(job, &(job->style->fillcolor));
        fprintf(job->output_file, "%g %g %g %g ellipse_path fill\n",
            A[0].x, A[0].y, fabs(A[1].x - A[0].x), fabs(A[1].y - A[0].y));
     }
-    ps_set_pen_style(job);
-    ps_set_color(job, &(job->style->pencolor));
-    fprintf(job->output_file, "%g %g %g %g ellipse_path stroke\n",
-       A[0].x, A[0].y, fabs(A[1].x - A[0].x), fabs(A[1].y - A[0].y));
+    if (job->style->pencolor.u.HSVA[3] > .5) {
+        ps_set_pen_style(job);
+        ps_set_color(job, &(job->style->pencolor));
+        fprintf(job->output_file, "%g %g %g %g ellipse_path stroke\n",
+           A[0].x, A[0].y, fabs(A[1].x - A[0].x), fabs(A[1].y - A[0].y));
+    }
 }
 
 static void
@@ -371,7 +390,7 @@ psgen_bezier(GVJ_t * job, pointf * A, int n, int arrow_at_start,
 {
     int j;
 
-    if (filled) {
+    if (filled && job->style->fillcolor.u.HSVA[3] > .5) {
        ps_set_color(job, &(job->style->fillcolor));
        fprintf(job->output_file, "newpath %g %g moveto\n", A[0].x, A[0].y);
        for (j = 1; j < n; j += 3)
@@ -380,45 +399,51 @@ psgen_bezier(GVJ_t * job, pointf * A, int n, int arrow_at_start,
                A[j + 2].y);
        fprintf(job->output_file, "closepath fill\n");
     }
-    ps_set_pen_style(job);
-    ps_set_color(job, &(job->style->pencolor));
-    fprintf(job->output_file, "newpath %g %g moveto\n", A[0].x, A[0].y);
-    for (j = 1; j < n; j += 3)
-       fprintf(job->output_file, "%g %g %g %g %g %g curveto\n",
-               A[j].x, A[j].y, A[j + 1].x, A[j + 1].y, A[j + 2].x,
-               A[j + 2].y);
-    fprintf(job->output_file, "stroke\n");
+    if (job->style->pencolor.u.HSVA[3] > .5) {
+        ps_set_pen_style(job);
+        ps_set_color(job, &(job->style->pencolor));
+        fprintf(job->output_file, "newpath %g %g moveto\n", A[0].x, A[0].y);
+        for (j = 1; j < n; j += 3)
+           fprintf(job->output_file, "%g %g %g %g %g %g curveto\n",
+                   A[j].x, A[j].y, A[j + 1].x, A[j + 1].y, A[j + 2].x,
+                   A[j + 2].y);
+        fprintf(job->output_file, "stroke\n");
+    }
 }
 
 static void psgen_polygon(GVJ_t * job, pointf * A, int n, int filled)
 {
     int j;
 
-    if (filled) {
+    if (filled && job->style->fillcolor.u.HSVA[3] > .5) {
        ps_set_color(job, &(job->style->fillcolor));
        fprintf(job->output_file, "newpath %g %g moveto\n", A[0].x, A[0].y);
        for (j = 1; j < n; j++)
            fprintf(job->output_file, "%g %g lineto\n", A[j].x, A[j].y);
        fprintf(job->output_file, "closepath fill\n");
     }
-    ps_set_pen_style(job);
-    ps_set_color(job, &(job->style->pencolor));
-    fprintf(job->output_file, "newpath %g %g moveto\n", A[0].x, A[0].y);
-    for (j = 1; j < n; j++)
-       fprintf(job->output_file, "%g %g lineto\n", A[j].x, A[j].y);
-    fprintf(job->output_file, "closepath stroke\n");
+    if (job->style->pencolor.u.HSVA[3] > .5) {
+        ps_set_pen_style(job);
+        ps_set_color(job, &(job->style->pencolor));
+        fprintf(job->output_file, "newpath %g %g moveto\n", A[0].x, A[0].y);
+        for (j = 1; j < n; j++)
+           fprintf(job->output_file, "%g %g lineto\n", A[j].x, A[j].y);
+        fprintf(job->output_file, "closepath stroke\n");
+    }
 }
 
 static void psgen_polyline(GVJ_t * job, pointf * A, int n)
 {
     int j;
 
-    ps_set_pen_style(job);
-    ps_set_color(job, &(job->style->pencolor));
-    fprintf(job->output_file, "newpath %g %g moveto\n", A[0].x, A[0].y);
-    for (j = 1; j < n; j++)
-       fprintf(job->output_file, "%g %g lineto\n", A[j].x, A[j].y);
-    fprintf(job->output_file, "stroke\n");
+    if (job->style->pencolor.u.HSVA[3] > .5) {
+        ps_set_pen_style(job);
+        ps_set_color(job, &(job->style->pencolor));
+        fprintf(job->output_file, "newpath %g %g moveto\n", A[0].x, A[0].y);
+        for (j = 1; j < n; j++)
+           fprintf(job->output_file, "%g %g lineto\n", A[j].x, A[j].y);
+        fprintf(job->output_file, "stroke\n");
+    }
 }
 
 static void psgen_comment(GVJ_t * job, char *str)
@@ -465,7 +490,7 @@ static gvrender_features_t psgen_features = {
     {72.,72.},                 /* default dpi */
     NULL,                      /* knowncolors */
     0,                         /* sizeof knowncolors */
-    HSV_DOUBLE,                        /* color_type */
+    HSVA_DOUBLE,               /* color_type */
     NULL,                       /* device */
     "ps",                       /* gvloadimage target for usershapes */
 };