mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-10 10:50:10 +00:00
f0175e1ff6
2005-03-07 Matthias Clasen <mclasen@redhat.com> * io-xpm.c: Use a generated table of offsets into a big const string to avoid relocations in the rgb color table. (#168901, Tommi Komulainen) * gen-color-table.pl: Script to generate the table, copied from Owen Taylors script by the same name in Pango. * xpm-color-table.h: The generated table.
75 lines
1.2 KiB
Perl
Executable File
75 lines
1.2 KiB
Perl
Executable File
#!/usr/bin/perl -w
|
|
|
|
if (@ARGV != 1) {
|
|
die "Usage: gen-color-table.pl rgb.txt > xpm-color-table.h\n";
|
|
}
|
|
|
|
open IN, $ARGV[0] || die "Cannot open $ARGV[0]: $!\n";
|
|
|
|
@colors = ();
|
|
while (defined($_ = <IN>)) {
|
|
next if /^!/;
|
|
if (!/^\s*([0-9]+)\s+([0-9]+)\s+([0-9]+)\s+(.*\S)\s+$/) {
|
|
die "Cannot parse line $_";
|
|
}
|
|
|
|
push @colors, [$1, $2, $3, $4];
|
|
}
|
|
|
|
@colors = sort { lc($a->[3]) cmp lc($b->[3]) } @colors;
|
|
|
|
$offset = 0;
|
|
|
|
$date = gmtime;
|
|
|
|
print <<EOT;
|
|
/* xpm-color-table.h: Generated by gen-color-table.pl from rgb.txt
|
|
*
|
|
* Date: $date
|
|
*
|
|
* Do not edit.
|
|
*/
|
|
static const char color_names[] =
|
|
EOT
|
|
|
|
for $color (@colors) {
|
|
$name = $color->[3];
|
|
|
|
if ($offset != 0) {
|
|
print qq(\n);
|
|
}
|
|
print qq( "$name\\0");
|
|
|
|
$color->[4] = $offset;
|
|
$offset += length($name) + 1;
|
|
}
|
|
|
|
print ";\n\n";
|
|
|
|
print <<EOT;
|
|
typedef struct {
|
|
guint16 name_offset;
|
|
guchar red;
|
|
guchar green;
|
|
guchar blue;
|
|
} XPMColorEntry;
|
|
|
|
static const XPMColorEntry xColors[] = {
|
|
EOT
|
|
|
|
$i = 0;
|
|
for $color (@colors) {
|
|
$red = $color->[0];
|
|
$green = $color->[1];
|
|
$blue = $color->[2];
|
|
$offset = $color->[4];
|
|
|
|
if ($i != 0) {
|
|
print ",\n";
|
|
}
|
|
print " { $offset, $red, $green, $blue }";
|
|
$i++;
|
|
}
|
|
|
|
print "\n};\n";
|