Add the style example code used to generate illustrations

This commit is contained in:
Matthias Clasen 2010-11-23 11:30:17 -05:00 committed by Carlos Garnacho
parent f13f315312
commit 31368f16cb
2 changed files with 145 additions and 1 deletions

View File

@ -98,7 +98,8 @@ noinst_PROGRAMS = $(TEST_PROGS) \
testexpander \
testvolumebutton \
testscrolledwindow \
testswitch
testswitch \
styleexamples
if USE_X11
noinst_PROGRAMS += testerrors
@ -189,6 +190,7 @@ testwindows_DEPENDENCIES = $(TEST_DEPS)
testexpand_DEPENDENCIES = $(TEST_DEPS)
testexpander_DEPENDENCIES = $(TEST_DEPS)
testswitch_DEPENDENCIES = $(TEST_DEPS)
styleexamples_DEPENDENCIES = $(TEST_DEPS)
flicker_LDADD = $(LDADDS)
simple_LDADD = $(LDADDS)
@ -265,6 +267,7 @@ testwindows_LDADD = $(LDADDS)
testexpand_LDADD = $(LDADDS)
testexpander_LDADD = $(LDADDS)
testswitch_LDADD = $(LDADDS)
styleexamples_LDADD = $(LDADDS)
testentrycompletion_SOURCES = \
prop-editor.c \
@ -392,6 +395,7 @@ testexpand_SOURCES = testexpand.c
testexpander_SOURCES = testexpander.c
testswitch_SOURCES = testswitch.c
styleexamples_SOURCES = styleexamples.c
EXTRA_DIST += \
prop-editor.h \

140
tests/styleexamples.c Normal file
View File

@ -0,0 +1,140 @@
#include <string.h>
#include <gtk/gtk.h>
static gboolean
draw_cb_checks (GtkWidget *widget, cairo_t *cr)
{
GtkStyleContext *context;
context = gtk_widget_get_style_context (widget);
gtk_style_context_save (context);
gtk_style_context_add_class (context, "check");
gtk_style_context_set_state (context, 0);
gtk_render_check (context, cr, 12, 12, 12, 12);
gtk_style_context_set_state (context, GTK_STATE_FLAG_ACTIVE);
gtk_render_check (context, cr, 36, 12, 12, 12);
gtk_style_context_set_state (context, GTK_STATE_FLAG_INCONSISTENT);
gtk_render_check (context, cr, 60, 12, 12, 12);
gtk_style_context_set_state (context, GTK_STATE_FLAG_INSENSITIVE);
gtk_render_check (context, cr, 84, 12, 12, 12);
gtk_style_context_restore (context);
return TRUE;
}
static gboolean
draw_cb_options (GtkWidget *widget, cairo_t *cr)
{
GtkStyleContext *context;
context = gtk_widget_get_style_context (widget);
gtk_style_context_save (context);
gtk_style_context_add_class (context, "radio");
gtk_style_context_set_state (context, 0);
gtk_render_option (context, cr, 12, 12, 12, 12);
gtk_style_context_set_state (context, GTK_STATE_FLAG_ACTIVE);
gtk_render_option (context, cr, 36, 12, 12, 12);
gtk_style_context_set_state (context, GTK_STATE_FLAG_INCONSISTENT);
gtk_render_option (context, cr, 60, 12, 12, 12);
gtk_style_context_set_state (context, GTK_STATE_FLAG_INSENSITIVE);
gtk_render_option (context, cr, 84, 12, 12, 12);
gtk_style_context_restore (context);
return TRUE;
}
static gboolean
draw_cb_arrows (GtkWidget *widget, cairo_t *cr)
{
GtkStyleContext *context;
context = gtk_widget_get_style_context (widget);
gtk_style_context_save (context);
gtk_style_context_set_state (context, 0);
gtk_render_arrow (context, cr, 0, 12, 12, 12);
gtk_render_arrow (context, cr, G_PI/2, 36, 12, 12);
gtk_render_arrow (context, cr, G_PI, 60, 12, 12);
gtk_render_arrow (context, cr, G_PI*3/2, 84, 12, 12);
gtk_style_context_restore (context);
return TRUE;
}
static gboolean
draw_cb_expanders (GtkWidget *widget, cairo_t *cr)
{
GtkStyleContext *context;
context = gtk_widget_get_style_context (widget);
gtk_style_context_save (context);
gtk_style_context_add_class (context, "expander");
gtk_style_context_set_state (context, 0);
gtk_render_expander (context, cr, 12, 12, 12, 12);
gtk_style_context_set_state (context, GTK_STATE_FLAG_PRELIGHT);
gtk_render_expander (context, cr, 36, 12, 12, 12);
gtk_style_context_set_state (context, GTK_STATE_FLAG_ACTIVE);
gtk_render_expander (context, cr, 60, 12, 12, 12);
gtk_style_context_set_state (context, GTK_STATE_FLAG_PRELIGHT | GTK_STATE_FLAG_ACTIVE);
gtk_render_expander (context, cr, 84, 12, 12, 12);
gtk_style_context_restore (context);
return TRUE;
}
static char *what;
static gboolean
draw_cb (GtkWidget *widget, cairo_t *cr)
{
if (strcmp (what, "check") == 0)
return draw_cb_checks (widget, cr);
else if (strcmp (what, "option") == 0)
return draw_cb_options (widget, cr);
else if (strcmp (what, "arrow") == 0)
return draw_cb_arrows (widget, cr);
else if (strcmp (what, "expander") == 0)
return draw_cb_expanders (widget ,cr);
return FALSE;
}
int main (int argc, char *argv[])
{
GtkWidget *window;
GtkWidget *ebox;
gtk_init (&argc, &argv);
if (argc > 1)
what = argv[1];
else
what = "check";
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_has_resize_grip (GTK_WINDOW (window), FALSE);
ebox = gtk_event_box_new ();
gtk_event_box_set_visible_window (GTK_EVENT_BOX (ebox), TRUE);
gtk_container_add (GTK_CONTAINER (window), ebox);
gtk_widget_set_name (ebox, "ebox");
g_signal_connect_after (ebox, "draw", G_CALLBACK (draw_cb), NULL);
gtk_widget_show_all (window);
gtk_main ();
return 0;
}