static int inkpot_scheme_name_cmpf ( const void *key, const void *base)
{
const char *k = (const char*)key;
- const char *b = &TAB_STRINGS[((inkpot_scheme_name_t *)base)->string_idx];
+ const char *b = &TAB_SCHEME_STRINGS[((inkpot_scheme_name_t *)base)->string_idx];
return string_cmpf(k, b);
}
static int inkpot_scheme_index_cmpf ( const void *key, const void *base)
{
const char *k = (const char*)key;
- const char *b = &TAB_STRINGS[((inkpot_scheme_index_t *)base)->string_idx];
+ const char *b = &TAB_SCHEME_STRINGS[((inkpot_scheme_index_t *)base)->string_idx];
return string_cmpf(k, b);
}
static int inkpot_name_cmpf ( const void *key, const void *base)
{
const char *k = (const char*)key;
- const char *b = &TAB_STRINGS[((inkpot_name_t *)base)->string_idx];
+ const char *b = &TAB_COLOR_STRINGS[((inkpot_name_t *)base)->string_idx];
return string_cmpf(k, b);
}
continue;
cache_name_idx = inkpot->cache[i].name_idx;
- cache_color = &TAB_STRINGS[TAB_NAMES[cache_name_idx].string_idx];
+ cache_color = &TAB_COLOR_STRINGS[TAB_NAMES[cache_name_idx].string_idx];
if (cache_color[0] != color[0] || (strcmp(cache_color, color) != 0))
continue;
*++q = '\0';
for (i=0; i < inkpot->active_schemes; i++) {
j = inkpot->scheme_list[i];
- p = &TAB_STRINGS[TAB_SCHEMES_INDEX[j].string_idx];
+ p = &TAB_SCHEME_STRINGS[TAB_SCHEMES_INDEX[j].string_idx];
if (*p != *s || strcmp(p, s) != 0)
continue;
first = TAB_SCHEMES_INDEX[j].first_value_idx;
out_name = inkpot->out_name;
if (out_name) { /* if we have a cached name */
- *color = &TAB_STRINGS[out_name->string_idx];
+ *color = &TAB_COLOR_STRINGS[out_name->string_idx];
return ((inkpot->status = INKPOT_SUCCESS));
}
break;
if (out_name->scheme_bits & inkpot->out_scheme_bit) {
inkpot->out_name = out_name;
- *color = &TAB_STRINGS[out_name->string_idx];
+ *color = &TAB_COLOR_STRINGS[out_name->string_idx];
return ((inkpot->status = INKPOT_SUCCESS));
}
}
maybe++;
if (inkpot->out_scheme_bit & TAB_ALTS[i].scheme_bits) {
inkpot->out_name = out_name;
- *color = &TAB_STRINGS[out_name->string_idx];
+ *color = &TAB_COLOR_STRINGS[out_name->string_idx];
return ((inkpot->status = INKPOT_SUCCESS));
}
}
found = 0;
if ((1<<i) & inkpot->scheme_bits) {
errputs(inkpot, " ");
- errputs(inkpot, &TAB_STRINGS[TAB_SCHEMES[i].string_idx]);
- errputs(inkpot, "(names) (in)");
+ errputs(inkpot, &TAB_SCHEME_STRINGS[TAB_SCHEMES[i].string_idx]);
+ errputs(inkpot, "(in)");
found++;
}
if ((1<<i) & inkpot->out_scheme_bit) {
if (! found) {
errputs(inkpot, " ");
- errputs(inkpot, &TAB_STRINGS[TAB_SCHEMES[i].string_idx]);
- errputs(inkpot, "(names)");
+ errputs(inkpot, &TAB_SCHEME_STRINGS[TAB_SCHEMES[i].string_idx]);
+ errputs(inkpot, "(out)");
}
- errputs(inkpot, " (out)");
}
}
for (j = 0; j < inkpot->active_schemes; j++) {
errputs(inkpot, " ");
- errputs(inkpot, &TAB_STRINGS[TAB_SCHEMES_INDEX[inkpot->scheme_list[j]].string_idx]);
- errputs(inkpot, "(index) (in)\n");
+ errputs(inkpot, &TAB_SCHEME_STRINGS[TAB_SCHEMES_INDEX[inkpot->scheme_list[j]].string_idx]);
+ errputs(inkpot, "#(in)");
}
for (j = 0; j < inkpot->active_out_schemes; j++) {
errputs(inkpot, " ");
- errputs(inkpot, &TAB_STRINGS[TAB_SCHEMES_INDEX[inkpot->out_scheme_list[j]].string_idx]);
- errputs(inkpot, "(index) (out)\n");
+ errputs(inkpot, &TAB_SCHEME_STRINGS[TAB_SCHEMES_INDEX[inkpot->out_scheme_list[j]].string_idx]);
+ errputs(inkpot, "#(out)");
}
errputs(inkpot, "\n");
if ((1 << i) & scheme_bits) {
if (found++)
errputs(inkpot, " ");
- errputs(inkpot, &TAB_STRINGS[TAB_SCHEMES_NAME[i].string_idx]);
+ errputs(inkpot, &TAB_SCHEME_STRINGS[TAB_SCHEMES_NAME[i].string_idx]);
}
}
errputs(inkpot, ")");
for (i = 0; i < SZT_NAMES; i++) {
name = &TAB_NAMES[i];
if (scheme_bits & name->scheme_bits) {
- errputs(inkpot, &TAB_STRINGS[TAB_NAMES[i].string_idx]);
+ errputs(inkpot, &TAB_SCHEME_STRINGS[TAB_NAMES[i].string_idx]);
inkpot_debug_scheme_names(inkpot, scheme_bits);
errputs(inkpot, " ");
inkpot_debug_rgba(inkpot, TAB_VALUES[name->value_idx].value);
v = TAB_IXVALUES[k];
sprintf(buf, "%d(", k - first);
errputs(inkpot, buf);
- errputs(inkpot, &TAB_STRINGS[scheme_index->string_idx]);
+ errputs(inkpot, &TAB_COLOR_STRINGS[scheme_index->string_idx]);
errputs(inkpot, ") ");
if (v < SZT_VALUES)
inkpot_debug_rgba(inkpot, TAB_VALUES[v].value);
else
inkpot_debug_rgba(inkpot, TAB_VALUES[i].value);
errputs(inkpot, " ");
- errputs(inkpot, &TAB_STRINGS[name->string_idx]);
+ errputs(inkpot, &TAB_COLOR_STRINGS[name->string_idx]);
inkpot_debug_scheme_names(inkpot, scheme_bits);
}
}
#define SZT_MRU_CACHE 4
typedef struct inkpot_scheme_name_s {
- IDX_STRINGS
+ IDX_SCHEME_STRINGS
string_idx; /* The scheme name in TAB_STRINGS. (e.g. "x11") */
} inkpot_scheme_name_t;
typedef struct inkpot_scheme_index_s {
- IDX_STRINGS
+ IDX_SCHEME_STRINGS
string_idx; /* The indexed scheme name in TAB_STRINGS.
* e.g "blues7" from Brewer */
IDX_IXVALUES
* inkpot_names_t are alpha sorted in
* TAB_NAMES[] */
- IDX_STRINGS
- string_idx; /* The color name in TAB_STRINGS.
+ IDX_COLOR_STRINGS
+ string_idx; /* The color name in TAB_COLOR_STRINGS.
* (e.g. "green") */
IDX_VALUES
value->vtype = VTYPE_rgba; /* FIXME */
}
else if (value->index - SZT_VALUES < SZT_NONAME_VALUES) {
- value->value = TAB_NONAME_VALUES[value->index - SZT_VALUES];
+ i = 3 * value->index;
+
+ value->value = TAB_NONAME_VALUES_24[i++] << 16;
+ value->value |= TAB_NONAME_VALUES_24[i++] << 16;
+ value->value |= TAB_NONAME_VALUES_24[i] << 16;
+ value->value |= 0xff;
+ value->value |= value->value << 8;
+
value->vtype = VTYPE_rgba; /* FIXME */
}
else if (value->index == SZT_VALUES + SZT_NONAME_VALUES) {
* AT&T Research, Florham Park NJ *
**********************************************************/
-typedef unsigned int IDX_STRINGS;
-#define SZT_STRINGS 79
-#define SZL_STRINGS 6
+#define SZT_COLOR_STRINGS 57
+#define SZL_COLOR_STRINGS 6
+typedef unsigned int IDX_COLOR_STRINGS;
+#define SZT_SCHEME_STRINGS 23
+#define SZL_SCHEME_STRINGS 6
+typedef unsigned int IDX_SCHEME_STRINGS;
+
+#define SZT_SCHEMES 3
typedef unsigned short MSK_SCHEMES;
typedef unsigned char IDX_SCHEMES;
-#define SZT_SCHEMES 3
-typedef unsigned char IDX_SCHEMES_INDEX;
#define SZT_SCHEMES_INDEX 2
+typedef unsigned char IDX_SCHEMES_INDEX;
-typedef unsigned int IDX_NAMES;
#define SZT_NAMES 10
+typedef unsigned int IDX_NAMES;
-typedef unsigned char IDX_ALTS;
#define SZT_ALTS 2
+typedef unsigned char IDX_ALTS;
-typedef unsigned int IDX_IXVALUES;
#define SZT_IXVALUES 7
+typedef unsigned int IDX_IXVALUES;
-typedef unsigned int IDX_VALUE_TO;
#define SZT_VALUE_TO 7
+typedef unsigned int IDX_VALUE_TO;
-typedef unsigned int IDX_TO_NAMES;
#define SZT_TO_NAMES 11
+typedef unsigned int IDX_TO_NAMES;
+
-typedef unsigned int IDX_VALUES;
#define SZT_VALUES 7
+typedef unsigned char IDX_VALUES;
+
+#define SZT_VALUES_64 7
+typedef unsigned char IDX_VALUES_64;
+
+#define SZT_VALUES_24 21
+typedef unsigned char IDX_VALUES_24;
+
#define SZT_NONAME_VALUES 4
+#define SZT_NONAME_VALUES_64 4
+#define SZT_NONAME_VALUES_24 12
* AT&T Research, Florham Park NJ *
**********************************************************/
-const char TAB_STRINGS[SZT_STRINGS] = {
- "french\0"
- "svg\0"
- "x11\0"
+const char TAB_COLOR_STRINGS[SZT_COLOR_STRINGS] = {
"black\0"
"bleu\0"
"blue\0"
"red\0"
"rouge\0"
"vert\0"
- "yellow\0"
"white\0"
+ "yellow\0"
+};
+
+const char TAB_SCHEME_STRINGS[SZT_SCHEME_STRINGS] = {
+ "french\0"
+ "svg\0"
+ "x11\0"
"xxx\0"
"yyy\0"
};
};
inkpot_scheme_index_t TAB_SCHEMES_INDEX[SZT_SCHEMES_INDEX] = { /* schemes of indexed colors */
- { 71, 0, }, /* xxx */
- { 75, 5, }, /* yyy */
+ { 15, 0, }, /* xxx */
+ { 19, 5, }, /* yyy */
};
inkpot_name_t TAB_NAMES[SZT_NAMES] = { /* Must be LC_ALL=C sort'ed by name with each alt */
- { 15, 0, 0x6, }, /* black */
- { 21, 1, 0x1, }, /* bleu */
- { 26, 1, 0x6, }, /* blue */
- { 31, 2, 0x6, }, /* green */
- { 37, 5, 0x1, }, /* jaune */
- { 43, 3, 0x6, }, /* red */
- { 47, 3, 0x1, }, /* rouge */
- { 53, 2, 0x1, }, /* vert */
- { 65, 6, 0x6, }, /* white */
- { 58, 0, 0, }, /* yellow */
+ { 0, 0, 0x6, }, /* black */
+ { 6, 1, 0x1, }, /* bleu */
+ { 11, 1, 0x6, }, /* blue */
+ { 16, 2, 0x6, }, /* green */
+ { 22, 5, 0x1, }, /* jaune */
+ { 28, 3, 0x6, }, /* red */
+ { 32, 3, 0x1, }, /* rouge */
+ { 38, 2, 0x1, }, /* vert */
+ { 43, 6, 0x6, }, /* white */
+ { 50, 0, 0, }, /* yellow (w. alts) */
};
inkpot_name_t TAB_ALTS[SZT_ALTS] = {
* AT&T Research, Florham Park NJ *
**********************************************************/
-unsigned long TAB_VALUES[SZT_VALUES] = {
+unsigned long TAB_VALUES_64[SZT_VALUES_64] = {
0x000000000000ffff, /* black */
0x00000000ffffffff, /* bleu, blue */
0x0000ffff0000ffff, /* green, vert */
0xffffffffffffffff, /* white */
};
-unsigned long TAB_NONAME_VALUES[SZT_NONAME_VALUES] = {
+unsigned long TAB_NONAME_VALUES_64[SZT_NONAME_VALUES_64] = {
0x000000008000ffff,
0x00000000a400ffff,
0x00000000c800ffff,
0x00000000ea00ffff,
};
+
+unsigned char TAB_VALUES_24[SZT_VALUES_24] = {
+ 0, 0, 0, /* black */
+ 0, 0, 255, /* bleu, blue */
+ 0, 255, 0, /* green, vert */
+ 255, 0, 0, /* red, rouge */
+ 255, 192, 0, /* yellow (svg) */
+ 255, 255, 255, /* yellow (x11), jaune */
+ 255, 255, 255, /* white */
+};
+
+unsigned char TAB_NONAME_VALUES_24[SZT_NONAME_VALUES_24] = {
+ 0, 0, 128,
+ 0, 0, 160,
+ 0, 0, 192,
+ 0, 0, 224,
+};