00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
#include <volume_io/internal_volume_io.h>
00017
#include <bicpl/objects.h>
00018
00019
#ifndef lint
00020
static char rcsid[] =
"$Header: /software/source//libraries/bicpl/Objects/colours.c,v 1.10 2000/02/06 15:30:42 stever Exp $";
00021
#endif
00022
00023 private Colour
ANTIQUE_WHITE_COL;
00024 private Colour
ALICE_BLUE_COL;
00025 private Colour
AQUAMARINE_COL;
00026 private Colour
AZURE_COL;
00027 private Colour
BEIGE_COL;
00028 private Colour
BISQUE_COL;
00029 private Colour
BLACK_COL;
00030 private Colour
BLANCHED_ALMOND_COL;
00031 private Colour
BLUE_COL;
00032 private Colour
BLUE_VIOLET_COL;
00033 private Colour
BRIGHT_MUSTARD_COL;
00034 private Colour
BROWN_COL;
00035 private Colour
BURLYWOOD_COL;
00036 private Colour
CADET_BLUE_COL;
00037 private Colour
CHARTREUSE_COL;
00038 private Colour
CHOCOLATE_COL;
00039 private Colour
CORAL_COL;
00040 private Colour
CORNFLOWER_BLUE_COL;
00041 private Colour
CORNSILK_COL;
00042 private Colour
CYAN_COL;
00043 private Colour
DARK_BROWN_COL;
00044 private Colour
DARK_FIREBRICK_COL;
00045 private Colour
DARK_GOLDENROD_COL;
00046 private Colour
DARK_GREEN_COL;
00047 private Colour
DARK_KHAKI_COL;
00048 private Colour
DARK_OLIVE_GREEN_COL;
00049 private Colour
DARK_ORANGE_COL;
00050 private Colour
DARK_ORCHID_COL;
00051 private Colour
DARK_RED_COL;
00052 private Colour
DARK_SALMON_COL;
00053 private Colour
DARK_SEA_GREEN_COL;
00054 private Colour
DARK_SLATE_BLUE_COL;
00055 private Colour
DARK_SLATE_GRAY_COL;
00056 private Colour
DARK_SLATE_GREY_COL;
00057 private Colour
DARK_TURQUOISE_COL;
00058 private Colour
DARK_VIOLET_COL;
00059 private Colour
DEEP_PINK_COL;
00060 private Colour
DEEP_SKY_BLUE_COL;
00061 private Colour
DIM_GRAY_COL;
00062 private Colour
DIM_GREY_COL;
00063 private Colour
DODGER_BLUE_COL;
00064 private Colour
FIREBRICK_COL;
00065 private Colour
FLORAL_WHITE_COL;
00066 private Colour
FOREST_GREEN_COL;
00067 private Colour
GAINSBORO_COL;
00068 private Colour
GHOST_WHITE_COL;
00069 private Colour
GOLDENROD_COL;
00070 private Colour
GOLD_COL;
00071 private Colour
GRAY_COL;
00072 private Colour
GREEN_COL;
00073 private Colour
GREEN_YELLOW_COL;
00074 private Colour
GREY_COL;
00075 private Colour
HONEYDEW_COL;
00076 private Colour
HOT_PINK_COL;
00077 private Colour
INDIAN_RED_COL;
00078 private Colour
IVORY_COL;
00079 private Colour
KHAKI_COL;
00080 private Colour
LAVENDER_BLUSH_COL;
00081 private Colour
LAVENDER_COL;
00082 private Colour
LAWN_GREEN_COL;
00083 private Colour
LEMON_CHIFFON_COL;
00084 private Colour
LIGHT_BLUE_COL;
00085 private Colour
LIGHT_CORAL_COL;
00086 private Colour
LIGHT_CYAN_COL;
00087 private Colour
LIGHT_GOLDENROD_COL;
00088 private Colour
LIGHT_GOLDENROD_YELLOW_COL;
00089 private Colour
LIGHT_GRAY_COL;
00090 private Colour
LIGHT_GREY_COL;
00091 private Colour
LIGHT_PINK_COL;
00092 private Colour
LIGHT_SALMON_COL;
00093 private Colour
LIGHT_SEA_GREEN_COL;
00094 private Colour
LIGHT_SKY_BLUE_COL;
00095 private Colour
LIGHT_SLATE_BLUE_COL;
00096 private Colour
LIGHT_SLATE_GRAY_COL;
00097 private Colour
LIGHT_SLATE_GREY_COL;
00098 private Colour
LIGHT_STEEL_BLUE_COL;
00099 private Colour
LIGHT_YELLOW_COL;
00100 private Colour
LIME_GREEN_COL;
00101 private Colour
LINEN_COL;
00102 private Colour
MAGENTA_COL;
00103 private Colour
MAROON_COL;
00104 private Colour
MEDIUM_AQUAMARINE_COL;
00105 private Colour
MEDIUM_BLUE_COL;
00106 private Colour
MEDIUM_ORCHID_COL;
00107 private Colour
MEDIUM_PURPLE_COL;
00108 private Colour
MEDIUM_SEA_GREEN_COL;
00109 private Colour
MEDIUM_SLATE_BLUE_COL;
00110 private Colour
MEDIUM_SPRING_GREEN_COL;
00111 private Colour
MEDIUM_TURQUOISE_COL;
00112 private Colour
MEDIUM_VIOLET_RED_COL;
00113 private Colour
MIAMI_PINK_COL;
00114 private Colour
MIAMI_TURQUOISE_COL;
00115 private Colour
MIDNIGHT_BLUE_COL;
00116 private Colour
MINT_CREAM_COL;
00117 private Colour
MISTY_ROSE_COL;
00118 private Colour
MOCCASIN_COL;
00119 private Colour
NAVAJO_WHITE_COL;
00120 private Colour
NAVY_BLUE_COL;
00121 private Colour
NAVY_COL;
00122 private Colour
OLD_LACE_COL;
00123 private Colour
OLIVE_DRAB_COL;
00124 private Colour
ORANGE_COL;
00125 private Colour
ORANGE_RED_COL;
00126 private Colour
ORCHID_COL;
00127 private Colour
PALE_GOLDENROD_COL;
00128 private Colour
PALE_GREEN_COL;
00129 private Colour
PALE_TURQUOISE_COL;
00130 private Colour
PALE_VIOLET_RED_COL;
00131 private Colour
PAPAYA_WHIP_COL;
00132 private Colour
PEACH_PUFF_COL;
00133 private Colour
PERU_COL;
00134 private Colour
PINK_COL;
00135 private Colour
PLUM_COL;
00136 private Colour
POWDER_BLUE_COL;
00137 private Colour
PURPLE_COL;
00138 private Colour
RED_COL;
00139 private Colour
ROSY_BROWN_COL;
00140 private Colour
ROYAL_BLUE_COL;
00141 private Colour
SADDLE_BROWN_COL;
00142 private Colour
SALMON_COL;
00143 private Colour
SANDY_BROWN_COL;
00144 private Colour
SEASHELL_COL;
00145 private Colour
SEA_GREEN_COL;
00146 private Colour
SIENNA_COL;
00147 private Colour
SKY_BLUE_COL;
00148 private Colour
SLATE_BLUE_COL;
00149 private Colour
SLATE_GRAY_COL;
00150 private Colour
SLATE_GREY_COL;
00151 private Colour
SNOW_COL;
00152 private Colour
SPRING_GREEN_COL;
00153 private Colour
STEEL_BLUE_COL;
00154 private Colour
TAN_COL;
00155 private Colour
THISTLE_COL;
00156 private Colour
TOMATO_COL;
00157 private Colour
TURQUOISE_COL;
00158 private Colour
VIOLET_COL;
00159 private Colour
VIOLET_RED_COL;
00160 private Colour
WHEAT_COL;
00161 private Colour
WHITE_COL;
00162 private Colour
WHITE_SMOKE_COL;
00163 private Colour
YELLOW_COL;
00164 private Colour
YELLOW_GREEN_COL;
00165 private Colour
TRANSPARENT_COL;
00166
00167 typedef struct
00168
{
00169 STRING name;
00170 Colour *colour;
00171 }
colours_struct;
00172
00173 private colours_struct colour_lookup[] =
00174 {
00175 {
"TRANSPARENT", &
TRANSPARENT_COL },
00176 {
"ALICE_BLUE", &
ALICE_BLUE_COL },
00177 {
"ANTIQUE_WHITE", &
ANTIQUE_WHITE_COL },
00178 {
"AQUAMARINE", &
AQUAMARINE_COL },
00179 {
"AZURE", &
AZURE_COL },
00180 {
"BEIGE", &
BEIGE_COL },
00181 {
"BISQUE", &
BISQUE_COL },
00182 {
"BLACK", &
BLACK_COL },
00183 {
"BLANCHED_ALMOND", &
BLANCHED_ALMOND_COL },
00184 {
"BLUE", &
BLUE_COL },
00185 {
"BLUE_VIOLET", &
BLUE_VIOLET_COL },
00186 {
"BRIGHT_MUSTARD", &
BRIGHT_MUSTARD_COL },
00187 {
"BROWN", &
BROWN_COL },
00188 {
"BURLYWOOD", &
BURLYWOOD_COL },
00189 {
"CADET_BLUE", &
CADET_BLUE_COL },
00190 {
"CHARTREUSE", &
CHARTREUSE_COL },
00191 {
"CHOCOLATE", &
CHOCOLATE_COL },
00192 {
"CORAL", &
CORAL_COL },
00193 {
"CORNFLOWER_BLUE", &
CORNFLOWER_BLUE_COL },
00194 {
"CORNSILK", &
CORNSILK_COL },
00195 {
"CYAN", &
CYAN_COL },
00196 {
"DARK_BROWN", &
DARK_BROWN_COL },
00197 {
"DARK_FIREBRICK", &
DARK_FIREBRICK_COL },
00198 {
"DARK_GOLDENROD", &
DARK_GOLDENROD_COL },
00199 {
"DARK_GREEN", &
DARK_GREEN_COL },
00200 {
"DARK_KHAKI", &
DARK_KHAKI_COL },
00201 {
"DARK_OLIVE_GREEN", &
DARK_OLIVE_GREEN_COL },
00202 {
"DARK_ORANGE", &
DARK_ORANGE_COL },
00203 {
"DARK_ORCHID", &
DARK_ORCHID_COL },
00204 {
"DARK_RED", &
DARK_RED_COL },
00205 {
"DARK_SALMON", &
DARK_SALMON_COL },
00206 {
"DARK_SEA_GREEN", &
DARK_SEA_GREEN_COL },
00207 {
"DARK_SLATE_BLUE", &
DARK_SLATE_BLUE_COL },
00208 {
"DARK_SLATE_GRAY", &
DARK_SLATE_GRAY_COL },
00209 {
"DARK_SLATE_GREY", &
DARK_SLATE_GREY_COL },
00210 {
"DARK_TURQUOISE", &
DARK_TURQUOISE_COL },
00211 {
"DARK_VIOLET", &
DARK_VIOLET_COL },
00212 {
"DEEP_PINK", &
DEEP_PINK_COL },
00213 {
"DEEP_SKY_BLUE", &
DEEP_SKY_BLUE_COL },
00214 {
"DIM_GRAY", &
DIM_GRAY_COL },
00215 {
"DIM_GREY", &
DIM_GREY_COL },
00216 {
"DODGER_BLUE", &
DODGER_BLUE_COL },
00217 {
"FIREBRICK", &
FIREBRICK_COL },
00218 {
"FLORAL_WHITE", &
FLORAL_WHITE_COL },
00219 {
"FOREST_GREEN", &
FOREST_GREEN_COL },
00220 {
"GAINSBORO", &
GAINSBORO_COL },
00221 {
"GHOST_WHITE", &
GHOST_WHITE_COL },
00222 {
"GOLD", &
GOLD_COL },
00223 {
"GOLDENROD", &
GOLDENROD_COL },
00224 {
"GRAY", &
GRAY_COL },
00225 {
"GREEN", &
GREEN_COL },
00226 {
"GREEN_YELLOW", &
GREEN_YELLOW_COL },
00227 {
"GREY", &
GREY_COL },
00228 {
"HONEYDEW", &
HONEYDEW_COL },
00229 {
"HOT_PINK", &
HOT_PINK_COL },
00230 {
"INDIAN_RED", &
INDIAN_RED_COL },
00231 {
"IVORY", &
IVORY_COL },
00232 {
"KHAKI", &
KHAKI_COL },
00233 {
"LAVENDER", &
LAVENDER_COL },
00234 {
"LAVENDER_BLUSH", &
LAVENDER_BLUSH_COL },
00235 {
"LAWN_GREEN", &
LAWN_GREEN_COL },
00236 {
"LEMON_CHIFFON", &
LEMON_CHIFFON_COL },
00237 {
"LIGHT_BLUE", &
LIGHT_BLUE_COL },
00238 {
"LIGHT_CORAL", &
LIGHT_CORAL_COL },
00239 {
"LIGHT_CYAN", &
LIGHT_CYAN_COL },
00240 {
"LIGHT_GOLDENROD", &
LIGHT_GOLDENROD_COL },
00241 {
"LIGHT_GOLDENROD_YELLOW", &
LIGHT_GOLDENROD_YELLOW_COL },
00242 {
"LIGHT_GRAY", &
LIGHT_GRAY_COL },
00243 {
"LIGHT_GREY", &
LIGHT_GREY_COL },
00244 {
"LIGHT_PINK", &
LIGHT_PINK_COL },
00245 {
"LIGHT_SALMON", &
LIGHT_SALMON_COL },
00246 {
"LIGHT_SEA_GREEN", &
LIGHT_SEA_GREEN_COL },
00247 {
"LIGHT_SKY_BLUE", &
LIGHT_SKY_BLUE_COL },
00248 {
"LIGHT_SLATE_BLUE", &
LIGHT_SLATE_BLUE_COL },
00249 {
"LIGHT_SLATE_GRAY", &
LIGHT_SLATE_GRAY_COL },
00250 {
"LIGHT_SLATE_GREY", &
LIGHT_SLATE_GREY_COL },
00251 {
"LIGHT_STEEL_BLUE", &
LIGHT_STEEL_BLUE_COL },
00252 {
"LIGHT_YELLOW", &
LIGHT_YELLOW_COL },
00253 {
"LIME_GREEN", &
LIME_GREEN_COL },
00254 {
"LINEN", &
LINEN_COL },
00255 {
"MAGENTA", &
MAGENTA_COL },
00256 {
"MAROON", &
MAROON_COL },
00257 {
"MEDIUM_AQUAMARINE", &
MEDIUM_AQUAMARINE_COL },
00258 {
"MEDIUM_BLUE", &
MEDIUM_BLUE_COL },
00259 {
"MEDIUM_ORCHID", &
MEDIUM_ORCHID_COL },
00260 {
"MEDIUM_PURPLE", &
MEDIUM_PURPLE_COL },
00261 {
"MEDIUM_SEA_GREEN", &
MEDIUM_SEA_GREEN_COL },
00262 {
"MEDIUM_SLATE_BLUE", &
MEDIUM_SLATE_BLUE_COL },
00263 {
"MEDIUM_SPRING_GREEN", &
MEDIUM_SPRING_GREEN_COL },
00264 {
"MEDIUM_TURQUOISE", &
MEDIUM_TURQUOISE_COL },
00265 {
"MEDIUM_VIOLET_RED", &
MEDIUM_VIOLET_RED_COL },
00266 {
"MIAMI_PINK", &
MIAMI_PINK_COL },
00267 {
"MIAMI_TURQUOISE", &
MIAMI_TURQUOISE_COL },
00268 {
"MIDNIGHT_BLUE", &
MIDNIGHT_BLUE_COL },
00269 {
"MINT_CREAM", &
MINT_CREAM_COL },
00270 {
"MISTY_ROSE", &
MISTY_ROSE_COL },
00271 {
"MOCCASIN", &
MOCCASIN_COL },
00272 {
"NAVAJO_WHITE", &
NAVAJO_WHITE_COL },
00273 {
"NAVY", &
NAVY_COL },
00274 {
"NAVY_BLUE", &
NAVY_BLUE_COL },
00275 {
"OLD_LACE", &
OLD_LACE_COL },
00276 {
"OLIVE_DRAB", &
OLIVE_DRAB_COL },
00277 {
"ORANGE", &
ORANGE_COL },
00278 {
"ORANGE_RED", &
ORANGE_RED_COL },
00279 {
"ORCHID", &
ORCHID_COL },
00280 {
"PALE_GOLDENROD", &
PALE_GOLDENROD_COL },
00281 {
"PALE_GREEN", &
PALE_GREEN_COL },
00282 {
"PALE_TURQUOISE", &
PALE_TURQUOISE_COL },
00283 {
"PALE_VIOLET_RED", &
PALE_VIOLET_RED_COL },
00284 {
"PAPAYA_WHIP", &
PAPAYA_WHIP_COL },
00285 {
"PEACH_PUFF", &
PEACH_PUFF_COL },
00286 {
"PERU", &
PERU_COL },
00287 {
"PINK", &
PINK_COL },
00288 {
"PLUM", &
PLUM_COL },
00289 {
"POWDER_BLUE", &
POWDER_BLUE_COL },
00290 {
"PURPLE", &
PURPLE_COL },
00291 {
"RED", &
RED_COL },
00292 {
"ROSY_BROWN", &
ROSY_BROWN_COL },
00293 {
"ROYAL_BLUE", &
ROYAL_BLUE_COL },
00294 {
"SADDLE_BROWN", &
SADDLE_BROWN_COL },
00295 {
"SALMON", &
SALMON_COL },
00296 {
"SANDY_BROWN", &
SANDY_BROWN_COL },
00297 {
"SEASHELL", &
SEASHELL_COL },
00298 {
"SEA_GREEN", &
SEA_GREEN_COL },
00299 {
"SIENNA", &
SIENNA_COL },
00300 {
"SKY_BLUE", &
SKY_BLUE_COL },
00301 {
"SLATE_BLUE", &
SLATE_BLUE_COL },
00302 {
"SLATE_GRAY", &
SLATE_GRAY_COL },
00303 {
"SLATE_GREY", &
SLATE_GREY_COL },
00304 {
"SNOW", &
SNOW_COL },
00305 {
"SPRING_GREEN", &
SPRING_GREEN_COL },
00306 {
"STEEL_BLUE", &
STEEL_BLUE_COL },
00307 {
"TAN", &
TAN_COL },
00308 {
"THISTLE", &
THISTLE_COL },
00309 {
"TOMATO", &
TOMATO_COL },
00310 {
"TURQUOISE", &
TURQUOISE_COL },
00311 {
"VIOLET", &
VIOLET_COL },
00312 {
"VIOLET_RED", &
VIOLET_RED_COL },
00313 {
"WHEAT", &
WHEAT_COL },
00314 {
"WHITE", &
WHITE_COL },
00315 {
"WHITE_SMOKE", &
WHITE_SMOKE_COL },
00316 {
"YELLOW", &
YELLOW_COL },
00317 {
"YELLOW_GREEN", &
YELLOW_GREEN_COL }
00318 };
00319
00320
private BOOLEAN
strings_equivalent( STRING, STRING );
00321
00322
00323
00324
00325
00326
00327
00328
00329
00330
00331
00332
00333
00334
00335
00336 private void check_initialize_colours(
void )
00337 {
00338
static BOOLEAN first =
TRUE;
00339
00340
if( first )
00341 {
00342 first =
FALSE;
00343
00344
ANTIQUE_WHITE_COL = make_Colour_0_1( 0.980392, 0.921569, 0.843137 );
00345
AQUAMARINE_COL = make_Colour_0_1( 0.498039, 1.0, 0.831373 );
00346
AZURE_COL = make_Colour_0_1( 0.941176, 1.0, 1.0 );
00347
BEIGE_COL = make_Colour_0_1( 0.960784, 0.960784, 0.862745 );
00348
BISQUE_COL = make_Colour_0_1( 1.0, 0.894118, 0.768627 );
00349
BLACK_COL = make_Colour_0_1( 0.0, 0.0, 0.0 );
00350
BLANCHED_ALMOND_COL = make_Colour_0_1( 1.0, 0.921569, 0.803922 );
00351
BLUE_COL = make_Colour_0_1( 0.0, 0.0, 1.0 );
00352
BLUE_VIOLET_COL = make_Colour_0_1( 0.541176, 0.168627, 0.886275 );
00353
BRIGHT_MUSTARD_COL = make_Colour_0_1( 1.0, 0.752941, 0.188235 );
00354
BROWN_COL = make_Colour_0_1( 1.0, 0.25098, 0.25098 );
00355
BURLYWOOD_COL = make_Colour_0_1( 0.870588, 0.721569, 0.529412 );
00356
CADET_BLUE_COL = make_Colour_0_1( 0.372549, 0.619608, 0.627451 );
00357
CHARTREUSE_COL = make_Colour_0_1( 0.498039, 1.0, 0.0 );
00358
CHOCOLATE_COL = make_Colour_0_1( 0.823529, 0.411765, 0.117647 );
00359
CORAL_COL = make_Colour_0_1( 1.0, 0.447059, 0.337255 );
00360
CORNFLOWER_BLUE_COL = make_Colour_0_1( 0.392157, 0.584314, 0.929412 );
00361
CORNSILK_COL = make_Colour_0_1( 1.0, 0.972549, 0.862745 );
00362
CYAN_COL = make_Colour_0_1( 0.0, 1.0, 1.0 );
00363
DARK_BROWN_COL = make_Colour_0_1( 0.313725, 0.156863, 0.117647 );
00364
DARK_FIREBRICK_COL = make_Colour_0_1( 0.52549, 0.101961, 0.101961 );
00365
DARK_GOLDENROD_COL = make_Colour_0_1( 1.0, 0.72549, 0.0588235 );
00366
DARK_GREEN_COL = make_Colour_0_1( 0.0, 0.392157, 0.0 );
00367
DARK_KHAKI_COL = make_Colour_0_1( 0.741176, 0.717647, 0.419608 );
00368
DARK_OLIVE_GREEN_COL = make_Colour_0_1( 0.792157, 1.0, 0.439216 );
00369
DARK_ORANGE_COL = make_Colour_0_1( 1.0, 0.54902, 0.0 );
00370
DARK_ORCHID_COL = make_Colour_0_1( 0.74902, 0.243137, 1.0 );
00371
DARK_RED_COL = make_Colour_0_1( 0.501961, 0.0, 0.0 );
00372
DARK_SALMON_COL = make_Colour_0_1( 0.913725, 0.588235, 0.478431 );
00373
DARK_SEA_GREEN_COL = make_Colour_0_1( 0.756863, 1.0, 0.756863 );
00374
DARK_SLATE_BLUE_COL = make_Colour_0_1( 0.282353, 0.239216, 0.545098 );
00375
DARK_SLATE_GRAY_COL = make_Colour_0_1( 0.592157, 1.0, 1.0 );
00376
DARK_SLATE_GREY_COL = make_Colour_0_1( 0.184314, 0.309804, 0.309804 );
00377
DARK_TURQUOISE_COL = make_Colour_0_1( 0.0, 0.807843, 0.819608 );
00378
DARK_VIOLET_COL = make_Colour_0_1( 0.580392, 0.0, 0.827451 );
00379
DEEP_PINK_COL = make_Colour_0_1( 1.0, 0.0784314, 0.576471 );
00380
DEEP_SKY_BLUE_COL = make_Colour_0_1( 0.0, 0.74902, 1.0 );
00381
DIM_GRAY_COL = make_Colour_0_1( 0.411765, 0.411765, 0.411765 );
00382
DIM_GREY_COL = make_Colour_0_1( 0.411765, 0.411765, 0.411765 );
00383
DODGER_BLUE_COL = make_Colour_0_1( 0.117647, 0.564706, 1.0 );
00384
FIREBRICK_COL = make_Colour_0_1( 0.698039, 0.133333, 0.133333 );
00385
FLORAL_WHITE_COL = make_Colour_0_1( 1.0, 0.980392, 0.941176 );
00386
FOREST_GREEN_COL = make_Colour_0_1( 0.133333, 0.545098, 0.133333 );
00387
GAINSBORO_COL = make_Colour_0_1( 0.862745, 0.862745, 0.862745 );
00388
GHOST_WHITE_COL = make_Colour_0_1( 0.972549, 0.972549, 1.0 );
00389
GOLDENROD_COL = make_Colour_0_1( 1.0, 0.756863, 0.145098 );
00390
GOLD_COL = make_Colour_0_1( 1.0, 0.843137, 0.0 );
00391
GRAY_COL = make_Colour_0_1( 0.752941, 0.752941, 0.752941 );
00392
GREEN_COL = make_Colour_0_1( 0.0, 1.0, 0.0 );
00393
GREEN_YELLOW_COL = make_Colour_0_1( 0.678431, 1.0, 0.184314 );
00394
GREY_COL = make_Colour_0_1( 0.752941, 0.752941, 0.752941 );
00395
HONEYDEW_COL = make_Colour_0_1( 0.941176, 1.0, 0.941176 );
00396
HOT_PINK_COL = make_Colour_0_1( 1.0, 0.431373, 0.705882 );
00397
INDIAN_RED_COL = make_Colour_0_1( 1.0, 0.415686, 0.415686 );
00398
IVORY_COL = make_Colour_0_1( 1.0, 1.0, 0.941176 );
00399
KHAKI_COL = make_Colour_0_1( 1.0, 0.964706, 0.560784 );
00400
LAVENDER_BLUSH_COL = make_Colour_0_1( 1.0, 0.941176, 0.960784 );
00401
LAVENDER_COL = make_Colour_0_1( 0.901961, 0.901961, 0.980392 );
00402
LAWN_GREEN_COL = make_Colour_0_1( 0.486275, 0.988235, 0.0 );
00403
LEMON_CHIFFON_COL = make_Colour_0_1( 1.0, 0.980392, 0.803922 );
00404
LIGHT_BLUE_COL = make_Colour_0_1( 0.74902, 0.937255, 1.0 );
00405
LIGHT_CORAL_COL = make_Colour_0_1( 0.941176, 0.501961, 0.501961 );
00406
LIGHT_CYAN_COL = make_Colour_0_1( 0.878431, 1.0, 1.0 );
00407
LIGHT_GOLDENROD_COL = make_Colour_0_1( 1.0, 0.92549, 0.545098 );
00408
LIGHT_GOLDENROD_YELLOW_COL = make_Colour_0_1( 0.980392, 0.980392, 0.823529 );
00409
LIGHT_GRAY_COL = make_Colour_0_1( 0.827451, 0.827451, 0.827451 );
00410
LIGHT_GREY_COL = make_Colour_0_1( 0.827451, 0.827451, 0.827451 );
00411
LIGHT_PINK_COL = make_Colour_0_1( 1.0, 0.713725, 0.756863 );
00412
LIGHT_SALMON_COL = make_Colour_0_1( 1.0, 0.627451, 0.478431 );
00413
LIGHT_SEA_GREEN_COL = make_Colour_0_1( 0.12549, 0.698039, 0.666667 );
00414
LIGHT_SKY_BLUE_COL = make_Colour_0_1( 0.529412, 0.807843, 0.980392 );
00415
LIGHT_SLATE_BLUE_COL = make_Colour_0_1( 0.517647, 0.439216, 1.0 );
00416
LIGHT_SLATE_GRAY_COL = make_Colour_0_1( 0.466667, 0.533333, 0.6 );
00417
LIGHT_SLATE_GREY_COL = make_Colour_0_1( 0.466667, 0.533333, 0.6 );
00418
LIGHT_STEEL_BLUE_COL = make_Colour_0_1( 0.792157, 0.882353, 1.0 );
00419
LIGHT_YELLOW_COL = make_Colour_0_1( 1.0, 1.0, 0.878431 );
00420
LIME_GREEN_COL = make_Colour_0_1( 0.196078, 0.803922, 0.196078 );
00421
LINEN_COL = make_Colour_0_1( 0.980392, 0.941176, 0.901961 );
00422
MAGENTA_COL = make_Colour_0_1( 1.0, 0.0, 1.0 );
00423
MAROON_COL = make_Colour_0_1( 1.0, 0.203922, 0.701961 );
00424
MEDIUM_AQUAMARINE_COL = make_Colour_0_1( 0.4, 0.803922, 0.666667 );
00425
MEDIUM_BLUE_COL = make_Colour_0_1( 0.0, 0.0, 0.803922 );
00426
MEDIUM_ORCHID_COL = make_Colour_0_1( 0.729412, 0.333333, 0.827451 );
00427
MEDIUM_PURPLE_COL = make_Colour_0_1( 0.670588, 0.509804, 1.0 );
00428
MEDIUM_SEA_GREEN_COL = make_Colour_0_1( 0.235294, 0.701961, 0.443137 );
00429
MEDIUM_SLATE_BLUE_COL = make_Colour_0_1( 0.482353, 0.407843, 0.933333 );
00430
MEDIUM_SPRING_GREEN_COL = make_Colour_0_1( 0.0, 0.980392, 0.603922 );
00431
MEDIUM_TURQUOISE_COL = make_Colour_0_1( 0.282353, 0.819608, 0.8 );
00432
MEDIUM_VIOLET_RED_COL = make_Colour_0_1( 0.780392, 0.0823529, 0.521569 );
00433
MIAMI_PINK_COL = make_Colour_0_1( 1.0, 0.501961, 0.564706 );
00434
MIAMI_TURQUOISE_COL = make_Colour_0_1( 0.313725, 1.0, 1.0 );
00435
MIDNIGHT_BLUE_COL = make_Colour_0_1( 0.0980392, 0.0980392, 0.439216 );
00436
MINT_CREAM_COL = make_Colour_0_1( 0.960784, 1.0, 0.980392 );
00437
MISTY_ROSE_COL = make_Colour_0_1( 1.0, 0.894118, 0.882353 );
00438
MOCCASIN_COL = make_Colour_0_1( 1.0, 0.894118, 0.709804 );
00439
NAVAJO_WHITE_COL = make_Colour_0_1( 1.0, 0.870588, 0.678431 );
00440
NAVY_BLUE_COL = make_Colour_0_1( 0.0, 0.0, 0.501961 );
00441
NAVY_COL = make_Colour_0_1( 0.0, 0.0, 0.501961 );
00442
OLD_LACE_COL = make_Colour_0_1( 0.992157, 0.960784, 0.901961 );
00443
OLIVE_DRAB_COL = make_Colour_0_1( 0.419608, 0.556863, 0.137255 );
00444
ORANGE_COL = make_Colour_0_1( 1.0, 0.647059, 0.0 );
00445
ORANGE_RED_COL = make_Colour_0_1( 1.0, 0.270588, 0.0 );
00446
ORCHID_COL = make_Colour_0_1( 0.854902, 0.439216, 0.839216 );
00447
PALE_GOLDENROD_COL = make_Colour_0_1( 0.933333, 0.909804, 0.666667 );
00448
PALE_GREEN_COL = make_Colour_0_1( 0.603922, 1.0, 0.603922 );
00449
PALE_TURQUOISE_COL = make_Colour_0_1( 0.733333, 1.0, 1.0 );
00450
PALE_VIOLET_RED_COL = make_Colour_0_1( 1.0, 0.509804, 0.670588 );
00451
PAPAYA_WHIP_COL = make_Colour_0_1( 1.0, 0.937255, 0.835294 );
00452
PEACH_PUFF_COL = make_Colour_0_1( 1.0, 0.854902, 0.72549 );
00453
PERU_COL = make_Colour_0_1( 0.803922, 0.521569, 0.247059 );
00454
PINK_COL = make_Colour_0_1( 1.0, 0.752941, 0.796078 );
00455
PLUM_COL = make_Colour_0_1( 1.0, 0.733333, 1.0 );
00456
POWDER_BLUE_COL = make_Colour_0_1( 0.690196, 0.878431, 0.901961 );
00457
PURPLE_COL = make_Colour_0_1( 0.627451, 0.12549, 0.941176 );
00458
RED_COL = make_Colour_0_1( 1.0, 0.0, 0.0 );
00459
ROSY_BROWN_COL = make_Colour_0_1( 1.0, 0.756863, 0.756863 );
00460
ROYAL_BLUE_COL = make_Colour_0_1( 0.282353, 0.462745, 1.0 );
00461
SADDLE_BROWN_COL = make_Colour_0_1( 0.545098, 0.270588, 0.0745098 );
00462
SALMON_COL = make_Colour_0_1( 1.0, 0.54902, 0.411765 );
00463
SANDY_BROWN_COL = make_Colour_0_1( 0.956863, 0.643137, 0.376471 );
00464
SEASHELL_COL = make_Colour_0_1( 1.0, 0.960784, 0.933333 );
00465
SEA_GREEN_COL = make_Colour_0_1( 0.329412, 1.0, 0.623529 );
00466
SIENNA_COL = make_Colour_0_1( 1.0, 0.509804, 0.278431 );
00467
SKY_BLUE_COL = make_Colour_0_1( 0.529412, 0.807843, 1.0 );
00468
SLATE_BLUE_COL = make_Colour_0_1( 0.513725, 0.435294, 1.0 );
00469
SLATE_GRAY_COL = make_Colour_0_1( 0.776471, 0.886275, 1.0 );
00470
SLATE_GREY_COL = make_Colour_0_1( 0.439216, 0.501961, 0.564706 );
00471
SNOW_COL = make_Colour_0_1( 1.0, 0.980392, 0.980392 );
00472
SPRING_GREEN_COL = make_Colour_0_1( 0.0, 1.0, 0.498039 );
00473
STEEL_BLUE_COL = make_Colour_0_1( 0.388235, 0.721569, 1.0 );
00474
TAN_COL = make_Colour_0_1( 1.0, 0.647059, 0.309804 );
00475
THISTLE_COL = make_Colour_0_1( 1.0, 0.882353, 1.0 );
00476
TOMATO_COL = make_Colour_0_1( 1.0, 0.388235, 0.278431 );
00477
TURQUOISE_COL = make_Colour_0_1( 0.25098, 0.878431, 0.815686 );
00478
VIOLET_COL = make_Colour_0_1( 0.933333, 0.509804, 0.933333 );
00479
VIOLET_RED_COL = make_Colour_0_1( 1.0, 0.243137, 0.588235 );
00480
WHEAT_COL = make_Colour_0_1( 1.0, 0.905882, 0.729412 );
00481
WHITE_COL = make_Colour_0_1( 1.0, 1.0, 1.0 );
00482
WHITE_SMOKE_COL = make_Colour_0_1( 0.960784, 0.960784, 0.960784 );
00483
YELLOW_COL = make_Colour_0_1( 1.0, 1.0, 0.0 );
00484
YELLOW_GREEN_COL = make_Colour_0_1( 0.603922, 0.803922, 0.196078 );
00485
TRANSPARENT_COL = make_rgba_Colour( 0, 0, 0, 0 );
00486 }
00487 }
00488
00489
00490
00491
00492
00493
00494
00495
00496
00497
00498
00499
00500
00501
00502 public void get_default_surfprop(
00503 Surfprop *surfprop )
00504 {
00505 Surfprop_a(*surfprop) = 0.3f;
00506 Surfprop_d(*surfprop) = 0.3f;
00507 Surfprop_s(*surfprop) = 0.4f;
00508 Surfprop_se(*surfprop) = 10.0f;
00509 Surfprop_t(*surfprop) = 1.0f;
00510 }
00511
00512
00513
00514
00515
00516
00517
00518
00519
00520
00521
00522
00523
00524
00525
00526 public BOOLEAN
lookup_colour(
00527 STRING colour_name,
00528 Colour *col )
00529 {
00530 BOOLEAN found;
00531
int i;
00532
00533
check_initialize_colours();
00534
00535 found =
FALSE;
00536
00537 for_less( i, 0, SIZEOF_STATIC_ARRAY(
colour_lookup) )
00538 {
00539
if(
strings_equivalent(
colour_lookup[i].name, colour_name ) )
00540 {
00541 *col = *
colour_lookup[i].
colour;
00542 found =
TRUE;
00543
break;
00544 }
00545 }
00546
00547
return( found );
00548 }
00549
00550
00551
00552
00553
00554
00555
00556
00557
00558
00559
00560
00561
00562
00563
00564 public BOOLEAN
lookup_colour_name(
00565 Colour col,
00566 STRING *colour_name )
00567 {
00568 BOOLEAN found;
00569
int i;
00570
00571
check_initialize_colours();
00572
00573 found =
FALSE;
00574
00575 for_less( i, 0, SIZEOF_STATIC_ARRAY(
colour_lookup) )
00576 {
00577
if( col == *
colour_lookup[i].
colour )
00578 {
00579 *colour_name = create_string(
colour_lookup[i].name );
00580 found =
TRUE;
00581
break;
00582 }
00583 }
00584
00585
return( found );
00586 }
00587
00588
00589
00590
00591
00592
00593
00594
00595
00596
00597
00598
00599
00600
00601
00602
00603 private BOOLEAN
strings_equivalent(
00604 STRING str1,
00605 STRING str2 )
00606 {
00607 BOOLEAN equivalent;
00608
int i1, i2;
00609
00610 equivalent =
TRUE;
00611 i1 = 0;
00612 i2 = 0;
00613
00614
while( str1[i1] != END_OF_STRING || str2[i2] != END_OF_STRING )
00615 {
00616
if( str1[i1] ==
' ' || str1[i1] ==
'\t' || str1[i1] ==
'_' )
00617 ++i1;
00618
else if( str2[i2] ==
' ' || str2[i2] ==
'\t' || str2[i2] ==
'_' )
00619 ++i2;
00620
else if( get_lower_case(str1[i1]) == get_lower_case(str2[i2]) )
00621 {
00622 ++i1;
00623 ++i2;
00624 }
00625
else
00626 {
00627 equivalent =
FALSE;
00628
break;
00629 }
00630 }
00631
00632
return( equivalent );
00633 }
00634
00635
00636
00637
00638
00639
00640
00641
00642
00643
00644
00645
00646
00647
00648
00649
00650
00651
00652
00653 public void rgb_to_hsl(
00654 Real r,
00655 Real g,
00656 Real b,
00657 Real *h,
00658 Real *s,
00659 Real *l )
00660 {
00661 Real v, m, vm, r2, g2, b2;
00662
00663
check_initialize_colours();
00664
00665 v = MAX3( r, g, b );
00666
00667 m = MIN3( r, g, b );
00668
00669 *l = (m + v) / 2.0;
00670
00671
if( *l > 0.0 )
00672 {
00673 vm = v - m;
00674 *s = vm;
00675
00676
if( *s > 0.0 )
00677 {
00678
if( *l <= 0.5 )
00679 *s /= v + m;
00680
else
00681 *s /= 2.0 - v - m;
00682
00683 r2 = (v - r) / vm;
00684 g2 = (v - g) / vm;
00685 b2 = (v - b) / vm;
00686
00687
if( r == v )
00688 {
00689
if( g == m )
00690 *h = 5.0 + b2;
00691
else
00692 *h = 1.0 - g2;
00693 }
00694
else if( g == v )
00695 {
00696
if( b == m )
00697 *h = 1.0 + r2;
00698
else
00699 *h = 3.0 - b2;
00700 }
00701
else
00702 {
00703
if( r == m )
00704 *h = 3.0 + g2;
00705
else
00706 *h = 5.0 - r2;
00707 }
00708
00709 *h /= 6.0;
00710 }
00711 }
00712 }
00713
00714
00715
00716
00717
00718
00719
00720
00721
00722
00723
00724
00725
00726
00727
00728
00729
00730
00731
00732 public void hsl_to_rgb(
00733 Real h,
00734 Real sl,
00735 Real l,
00736 Real *r,
00737 Real *g,
00738 Real *b )
00739 {
00740 Real v;
00741 Real m, sv;
00742
int sextant;
00743 Real fract, vsf, mid1, mid2;
00744
00745
if( l <= 0.5 )
00746 {
00747 v = l * (1.0 + sl);
00748 }
00749
else
00750 {
00751 v = l + sl - l * sl;
00752 }
00753
00754
if( v <= 0.0 )
00755 {
00756 *r = 0.0;
00757 *g = 0.0;
00758 *b = 0.0;
00759 }
00760
else
00761 {
00762 m = l + l - v;
00763 sv = (v - m) / v;
00764 h *= 6.0;
00765 sextant = (
int) h;
00766 fract = h - (Real) sextant;
00767 vsf = v * sv * fract;
00768 mid1 = m + vsf;
00769 mid2 = v - vsf;
00770
00771
switch( sextant )
00772 {
00773
case 0:
00774
case 6: *r = v; *g = mid1; *b = m;
break;
00775
case 1: *r = mid2; *g = v; *b = m;
break;
00776
case 2: *r = m; *g = v; *b = mid1;
break;
00777
case 3: *r = m; *g = mid2; *b = v;
break;
00778
case 4: *r = mid1; *g = m; *b = v;
break;
00779
case 5: *r = v; *g = m; *b = mid2;
break;
00780 }
00781 }
00782 }
00783
00784
00785
00786
00787
00788
00789
00790
00791
00792
00793
00794
00795
00796
00797 public void convert_colour_to_hsl(
00798 Colour rgb,
00799 Colour *hsl )
00800 {
00801 Real h, s, l;
00802
00803
rgb_to_hsl( get_Colour_r_0_1(rgb),
00804 get_Colour_g_0_1(rgb),
00805 get_Colour_b_0_1(rgb),
00806 &h, &s, &l );
00807
00808 *hsl = make_Colour_0_1( h, s, l );
00809 }
00810
00811
00812
00813
00814
00815
00816
00817
00818
00819
00820
00821
00822
00823
00824 public void convert_colour_to_rgb(
00825 Colour hsl,
00826 Colour *rgb )
00827 {
00828 Real r, g, b;
00829
00830
hsl_to_rgb( get_Colour_r_0_1(hsl),
00831 get_Colour_g_0_1(hsl),
00832 get_Colour_b_0_1(hsl),
00833 &r, &g, &b );
00834
00835 *rgb = make_Colour_0_1( r, g, b );
00836 }
00837
00838
00839
00840
00841
00842
00843
00844
00845
00846
00847
00848
00849
00850
00851
00852 public BOOLEAN
equal_colours(
00853 Colour col1,
00854 Colour col2 )
00855 {
00856
return( col1 == col2 );
00857 }
00858
00859
00860
00861
00862
00863
00864
00865
00866
00867
00868
00869
00870
00871
00872
00873
00874
00875 public STRING
convert_colour_to_string(
00876 Colour col )
00877 {
00878
char buffer[EXTREMELY_LARGE_STRING_SIZE];
00879 STRING string;
00880
00881
if( !
lookup_colour_name( col, &string ) )
00882 {
00883 (
void) sprintf( buffer,
"%g %g %g",
00884 get_Colour_r_0_1(col),
00885 get_Colour_g_0_1(col),
00886 get_Colour_b_0_1(col) );
00887 string = create_string( buffer );
00888 }
00889
00890
return( string );
00891 }
00892
00893
00894
00895
00896
00897
00898
00899
00900
00901
00902
00903
00904
00905
00906
00907
00908
00909 public Colour
convert_string_to_colour(
00910 STRING string )
00911 {
00912 Colour colour;
00913
double r, g, b, a;
00914
00915
if( !
lookup_colour( string, &colour ) )
00916 {
00917
if( sscanf( string,
"%lf %lf %lf %lf", &r, &g, &b, &a ) == 4 )
00918 colour = make_rgba_Colour_0_1( r, g, b, a );
00919
else if( sscanf( string,
"%lf,%lf,%lf,%lf", &r, &g, &b, &a ) == 4 )
00920 colour = make_rgba_Colour_0_1( r, g, b, a );
00921
else if( sscanf( string,
"%lf %lf %lf", &r, &g, &b ) == 3 )
00922 colour = make_Colour_0_1( r, g, b );
00923
else if( sscanf( string,
"%lf,%lf,%lf", &r, &g, &b ) == 3 )
00924 colour = make_Colour_0_1( r, g, b );
00925
else
00926 colour = make_Colour( 0, 0, 0 );
00927 }
00928
00929
return( colour );
00930 }
00931
00932
00933
00934
00935
00936
00937
00938
00939
00940
00941
00942
00943
00944
00945
00946
00947
00948
00949 public int get_colour_distance(
00950
int r,
00951
int g,
00952
int b,
00953 Colour c2 )
00954 {
00955
int dr, dg, db;
00956
00957 dr = r - get_Colour_r( c2 );
00958 dg = g - get_Colour_g( c2 );
00959 db = b - get_Colour_b( c2 );
00960
00961
return( dr * dr + dg * dg + db * db );
00962 }
00963
00964
00965
00966
00967
00968
00969
00970
00971
00972
00973
00974
00975
00976
00977
00978
00979
00980
00981
00982 public int find_closest_colour(
00983
int r,
00984
int g,
00985
int b,
00986
int n_colours,
00987 Colour colours[] )
00988 {
00989
int i, dist, min_dist, min_index;
00990
00991 min_index = -1;
00992 min_dist = 0;
00993
00994 for_less( i, 0, n_colours )
00995 {
00996 dist =
get_colour_distance( r, g, b, colours[i] );
00997
if( i == 0 || dist < min_dist )
00998 {
00999 min_index = i;
01000 min_dist = dist;
01001 }
01002 }
01003
01004
return( min_index );
01005 }
01006
01007
01008
01009
01010
01011
01012
01013
01014
01015
01016
01017
01018
01019
01020 public int get_Colour_luminance(
01021 Colour colour )
01022 {
01023
return( ROUND( 0.299 * (Real) get_Colour_r(colour) +
01024 0.587 * (Real) get_Colour_g(colour) +
01025 0.114 * (Real) get_Colour_b(colour) ) );
01026 }
01027
01028
01029
01030
01031
01032
01033
01034
01035
01036
01037
01038
01039
01040
01041
01042
01043 public Colour
scale_colour(
01044 Colour colour,
01045 Real factor )
01046 {
01047
return( make_rgba_Colour( ROUND( (Real) get_Colour_r(colour) * factor ),
01048 ROUND( (Real) get_Colour_g(colour) * factor ),
01049 ROUND( (Real) get_Colour_b(colour) * factor ),
01050 get_Colour_a(colour) ) );
01051 }