Add tools and images used for creating the check/radio button images in
Sat Feb 9 13:19:20 2002 Owen Taylor <otaylor@redhat.com> * configure.in gtk/Makefile.am gtk/theme-bits/*: Add tools and images used for creating the check/radio button images in the default theme.
This commit is contained in:
parent
c890585867
commit
368d401585
@ -1343,6 +1343,7 @@ gtk/makefile.msc
|
||||
gtk/gtkversion.h
|
||||
gtk/gtk-win32.rc
|
||||
gtk/stock-icons/Makefile
|
||||
gtk/theme-bits/Makefile
|
||||
modules/Makefile
|
||||
modules/input/Makefile
|
||||
contrib/Makefile
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Makefile.am for gtk+/gtk
|
||||
|
||||
SUBDIRS=stock-icons
|
||||
SUBDIRS=stock-icons theme-bits
|
||||
|
||||
INCLUDES = @STRIP_BEGIN@ \
|
||||
-DG_LOG_DOMAIN=\"Gtk\" \
|
||||
|
5
gtk/theme-bits/.cvsignore
Normal file
5
gtk/theme-bits/.cvsignore
Normal file
@ -0,0 +1,5 @@
|
||||
.xvpics
|
||||
Makefile
|
||||
Makefile.in
|
||||
*.lo
|
||||
decompose-bits
|
11
gtk/theme-bits/Makefile.am
Normal file
11
gtk/theme-bits/Makefile.am
Normal file
@ -0,0 +1,11 @@
|
||||
INCLUDES = -I$(top_srcdir) -I$(top_builddir) \
|
||||
-DG_DISABLE_DEPRECATED \
|
||||
-DGDK_PIXBUF_DISABLE_DEPRECATED \
|
||||
@GDK_PIXBUF_DEP_CFLAGS@
|
||||
|
||||
noinst_PROGRAMS = decompose-bits
|
||||
|
||||
decompose_bits_SOURCES = decompose-bits.c
|
||||
decompose_bits_LDADD = $(top_builddir)/gdk-pixbuf/libgdk_pixbuf-1.3.la
|
||||
|
||||
EXTRA_DIST = check-13.png radio-13.png
|
29
gtk/theme-bits/README
Normal file
29
gtk/theme-bits/README
Normal file
@ -0,0 +1,29 @@
|
||||
This directory contains bits and pieces used in the default theme.
|
||||
Right now, it contains a tool for extracting individual part
|
||||
bitmaps from a composed image, and source images for the default
|
||||
check and radio buttons.
|
||||
|
||||
The decompose-bits tools takes an image where the first line contains
|
||||
the colors for each part, and the rest of the image is the actual
|
||||
image.
|
||||
|
||||
The colors on the first line are:
|
||||
|
||||
pixel 0: black
|
||||
pixel 1: dark
|
||||
pixel 2: mid
|
||||
pixel 3: light
|
||||
pixel 4: text
|
||||
pixel 5: text_aa
|
||||
pixel 6: base
|
||||
|
||||
The generated XBM bits for the base part include the bits for text and
|
||||
text_aa as well; this is so that the result can be drawn either
|
||||
with or without the text/text_aa indicator.
|
||||
|
||||
Make sure that any PNG images added to this directory are added with
|
||||
'cvs add -kb'.
|
||||
|
||||
Owen Taylor
|
||||
9 February 2002
|
||||
|
BIN
gtk/theme-bits/check-13.png
Normal file
BIN
gtk/theme-bits/check-13.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 267 B |
157
gtk/theme-bits/decompose-bits.c
Normal file
157
gtk/theme-bits/decompose-bits.c
Normal file
@ -0,0 +1,157 @@
|
||||
#include <gdk-pixbuf/gdk-pixbuf.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#define BYTES_PER_OUTPUT_LINE 15
|
||||
|
||||
static gint
|
||||
output_byte (guchar byte,
|
||||
gint online)
|
||||
{
|
||||
if (online == BYTES_PER_OUTPUT_LINE)
|
||||
{
|
||||
printf (",\n ");
|
||||
online = 0;
|
||||
}
|
||||
else if (online)
|
||||
{
|
||||
printf (",");
|
||||
}
|
||||
|
||||
printf ("0x%02x", byte);
|
||||
return online + 1;
|
||||
}
|
||||
|
||||
static void
|
||||
do_part (GdkPixbuf *pixbuf,
|
||||
gint part1_index,
|
||||
gint part2_index,
|
||||
gint part3_index,
|
||||
const char *base_name,
|
||||
const char *part_name)
|
||||
{
|
||||
const guchar *pixels = gdk_pixbuf_get_pixels (pixbuf);
|
||||
const guchar *color1;
|
||||
const guchar *color2;
|
||||
const guchar *color3;
|
||||
gint rowstride = gdk_pixbuf_get_rowstride (pixbuf);
|
||||
gint n_channels = gdk_pixbuf_get_n_channels (pixbuf);
|
||||
gint width = gdk_pixbuf_get_width (pixbuf);
|
||||
gint height = gdk_pixbuf_get_height (pixbuf);
|
||||
gint online = 0;
|
||||
|
||||
color1 = pixels + part1_index * n_channels;
|
||||
color2 = pixels + part2_index * n_channels;
|
||||
color3 = pixels + part3_index * n_channels;
|
||||
pixels += rowstride;
|
||||
|
||||
printf ("static char %s_%s_bits[] = {\n", base_name, part_name);
|
||||
printf (" ");
|
||||
|
||||
while (height--)
|
||||
{
|
||||
guchar bit = 1;
|
||||
guchar byte = 0;
|
||||
const guchar *p = pixels;
|
||||
gint n = width;
|
||||
|
||||
while (n--)
|
||||
{
|
||||
if ((part1_index > 0 && memcmp (p, color1, n_channels) == 0) ||
|
||||
(part2_index > 0 && memcmp (p, color2, n_channels) == 0) ||
|
||||
(part3_index > 0 && memcmp (p, color3, n_channels) == 0))
|
||||
byte |= bit;
|
||||
|
||||
if (bit == 0x80)
|
||||
{
|
||||
online = output_byte (byte, online);
|
||||
byte = 0;
|
||||
bit = 1;
|
||||
}
|
||||
else
|
||||
bit <<= 1;
|
||||
|
||||
p += n_channels;
|
||||
}
|
||||
|
||||
if (width & 7) /* a leftover partial byte */
|
||||
online = output_byte (byte, online);
|
||||
|
||||
pixels += rowstride;
|
||||
}
|
||||
|
||||
printf ("};\n");
|
||||
}
|
||||
|
||||
typedef enum {
|
||||
PART_BLACK,
|
||||
PART_DARK,
|
||||
PART_MID,
|
||||
PART_LIGHT,
|
||||
PART_TEXT,
|
||||
PART_TEXT_AA,
|
||||
PART_BASE,
|
||||
PART_LAST
|
||||
} Part;
|
||||
|
||||
const char *part_names[PART_LAST] = {
|
||||
"black",
|
||||
"dark",
|
||||
"mid",
|
||||
"light",
|
||||
"text",
|
||||
"aa",
|
||||
"base",
|
||||
};
|
||||
|
||||
int main (int argc, char **argv)
|
||||
{
|
||||
gchar *progname = g_path_get_basename (argv[0]);
|
||||
GdkPixbuf *pixbuf;
|
||||
GError *error = NULL;
|
||||
gint i;
|
||||
|
||||
if (argc != 3)
|
||||
{
|
||||
fprintf (stderr, "%s: Usage: %s FILE BASE\n", progname, progname);
|
||||
exit (1);
|
||||
}
|
||||
|
||||
g_type_init ();
|
||||
|
||||
pixbuf = gdk_pixbuf_new_from_file (argv[1], &error);
|
||||
if (!pixbuf)
|
||||
{
|
||||
fprintf (stderr, "%s: cannot open file '%s': %s\n", progname, argv[1], error->message);
|
||||
exit (1);
|
||||
}
|
||||
|
||||
if (gdk_pixbuf_get_width (pixbuf) < PART_LAST)
|
||||
{
|
||||
fprintf (stderr, "%s: source image must be at least %d pixels wide\n", progname, PART_LAST);
|
||||
exit (1);
|
||||
}
|
||||
|
||||
if (gdk_pixbuf_get_height (pixbuf) < 1)
|
||||
{
|
||||
fprintf (stderr, "%s: source image must be at least 1 pixel height\n", progname);
|
||||
exit (1);
|
||||
}
|
||||
|
||||
printf ("/*\n * Extracted from %s, width=%d, height=%d\n */\n", argv[1],
|
||||
gdk_pixbuf_get_width (pixbuf), gdk_pixbuf_get_height (pixbuf) - 1);
|
||||
|
||||
for (i = 0; i < PART_LAST; i++)
|
||||
{
|
||||
/* As a bit of a hack, we want the base image to extend over the text
|
||||
* and text_aa parts so that we can draw the image either with or without
|
||||
* the indicator
|
||||
*/
|
||||
if (i == PART_BASE)
|
||||
do_part (pixbuf, PART_BASE, PART_TEXT_AA, PART_TEXT, argv[2], part_names[i]);
|
||||
else
|
||||
do_part (pixbuf, i, -1, -1, argv[2], part_names[i]);
|
||||
}
|
||||
return 0;
|
||||
}
|
BIN
gtk/theme-bits/radio-13.png
Normal file
BIN
gtk/theme-bits/radio-13.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 306 B |
Loading…
Reference in New Issue
Block a user