diff options
author | Owen Taylor <otaylor@redhat.com> | 2005-03-17 01:54:40 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 2005-03-17 01:54:40 +0000 |
commit | 09d7eafb15099362c0ed611d775b1f2fe5f17f94 (patch) | |
tree | 288fc18e7d665e5e897409489e409c017efece2d /gtk/gtkvruler.c | |
parent | eebd4f1c4bba4d1a2b9a5e0cfd9fd34f318ee84d (diff) | |
download | gtk+-09d7eafb15099362c0ed611d775b1f2fe5f17f94.tar.gz |
Switch set_cairo_target() virtual function to ref_cairo_surface()
2005-03-15 Owen Taylor <otaylor@redhat.com>
* gdk/gdkdrawable.h gdk/gdkdraw.c gdk/gdkpixmap.c gdk/gdkwindow.c
gdk/x11/gdkdrawable-x11.c gdk/x11/gdkpixmap-x11.c gdk/x11/gdkwindow-x11.c
gdk/gdkinternals.h: Switch set_cairo_target() virtual function to
ref_cairo_surface()
* gdk/gdkdrawable.h gdk/gdkdraw.h: Switch set_cairo_target() virtual
function to create_cairo_context()
* gdk/gdkwindow.c: Clear double buffer pixmaps with Cairo.
* gdk/x11/gdkwindow-x11.c: Keep all components in GdkWindowObject.bg_color,
not just the pixel.
* tests/testcairo.c: Update for create_cairo_context()
* gdk/gdkdraw.c (gdk_draw_trapezoids, gdk_draw_glyphs[_transformed]):
Reimplement in terms of Cairo, bypass the vtable entries.
* gdk/x11/gdkdrawable-x11.[ch] gdk/x11/gdkdisplay-x11.[ch]
gdk/x11/gdkgc-x11.c gdk/x11/gdkpango-x11.c
gdk/x11/gdkprivate-x11.h gdk/x11/Makefile.am: Remove
implementation of draw_trapezoids / draw_glyphs[_transformed].
* gdk/gdkpango.c: Switch GdkPangoRenderer to use Cairo
* gdk/gdkpango.c gdk/x11/gdkpango-x11.c: Move
gdk_pango_context_get_for_screen() into the backend independent code.
* gdk/x11/gdkdrawable-x11.[ch]: Remove Xft use, use RENDER directly
for drawing images.
* gdk/gdkdrawable.h gdk/x11/gdkdrawable-x11.c: Remove
gdk_draw_rectangle_alpha_libgtk_only.
* gdk/gdkpixbuf.h gdk/gdkpixbuf-render.c: Add
gdk_pixbuf_set_as_cairo_source()
* gdk/gdk.symbols: Update
* gtk/gtkcolorsel.c gtk/gtkhsv.c gtk/gtkiconview.c gtk/gtkruler.[ch]
gtk/gtk[hv]ruler.c: Convert to Cairo rendering.
* gtk/gtkstyle.c (gtk_default_draw_check, gtk_default_draw_focus,
gtk_default_draw_option): Switch to Cairo. Simplify the checkbutton,
radio button style for now to get something more scalable.
* gtk/gtksettings.c: #if 0 out the code to use PangoXft for hinting/
antialiasing/dpi settings.
Diffstat (limited to 'gtk/gtkvruler.c')
-rw-r--r-- | gtk/gtkvruler.c | 58 |
1 files changed, 31 insertions, 27 deletions
diff --git a/gtk/gtkvruler.c b/gtk/gtkvruler.c index 996092041e..f967df5b40 100644 --- a/gtk/gtkvruler.c +++ b/gtk/gtkvruler.c @@ -136,7 +136,7 @@ static void gtk_vruler_draw_ticks (GtkRuler *ruler) { GtkWidget *widget; - GdkGC *gc, *bg_gc; + cairo_t *cr; gint i, j; gint width, height; gint xthickness; @@ -160,9 +160,6 @@ gtk_vruler_draw_ticks (GtkRuler *ruler) widget = GTK_WIDGET (ruler); - gc = widget->style->fg_gc[GTK_STATE_NORMAL]; - bg_gc = widget->style->bg_gc[GTK_STATE_NORMAL]; - xthickness = widget->style->xthickness; ythickness = widget->style->ythickness; @@ -181,12 +178,15 @@ gtk_vruler_draw_ticks (GtkRuler *ruler) 0, 0, widget->allocation.width, widget->allocation.height); - gdk_draw_line (ruler->backing_store, gc, - height + xthickness, - ythickness, - height + xthickness, - widget->allocation.height - ythickness); - + cr = gdk_drawable_create_cairo_context (ruler->backing_store); + gdk_cairo_set_source_color (cr, &widget->style->fg[widget->state]); + + cairo_rectangle (cr, + height + xthickness, + ythickness, + 1, + widget->allocation.height - 2 * ythickness); + upper = ruler->upper / ruler->metric->pixels_per_unit; lower = ruler->lower / ruler->metric->pixels_per_unit; @@ -242,9 +242,9 @@ gtk_vruler_draw_ticks (GtkRuler *ruler) { pos = ROUND ((cur - lower) * increment); - gdk_draw_line (ruler->backing_store, gc, - height + xthickness - length, pos, - height + xthickness, pos); + cairo_rectangle (cr, + height + xthickness - length, pos, + length, 1); /* draw label */ if (i == 0) @@ -272,6 +272,9 @@ gtk_vruler_draw_ticks (GtkRuler *ruler) } } + cairo_fill (cr); + cairo_destroy (cr); + g_object_unref (layout); } @@ -279,9 +282,7 @@ gtk_vruler_draw_ticks (GtkRuler *ruler) static void gtk_vruler_draw_pos (GtkRuler *ruler) { - GtkWidget *widget; - GdkGC *gc; - int i; + GtkWidget *widget = GTK_WIDGET (ruler); gint x, y; gint width, height; gint bs_width, bs_height; @@ -291,24 +292,23 @@ gtk_vruler_draw_pos (GtkRuler *ruler) if (GTK_WIDGET_DRAWABLE (ruler)) { - widget = GTK_WIDGET (ruler); - - gc = widget->style->fg_gc[GTK_STATE_NORMAL]; xthickness = widget->style->xthickness; ythickness = widget->style->ythickness; width = widget->allocation.width - xthickness * 2; height = widget->allocation.height; - bs_height = width / 2; + bs_height = width / 2 + 2; bs_height |= 1; /* make sure it's odd */ bs_width = bs_height / 2 + 1; if ((bs_width > 0) && (bs_height > 0)) { + cairo_t *cr = gdk_drawable_create_cairo_context (widget->window); + /* If a backing store exists, restore the ruler */ - if (ruler->backing_store && ruler->non_gr_exp_gc) - gdk_draw_drawable (ruler->widget.window, - ruler->non_gr_exp_gc, + if (ruler->backing_store) + gdk_draw_drawable (widget->window, + widget->style->black_gc, ruler->backing_store, ruler->xsrc, ruler->ysrc, ruler->xsrc, ruler->ysrc, @@ -318,11 +318,15 @@ gtk_vruler_draw_pos (GtkRuler *ruler) x = (width + bs_width) / 2 + xthickness; y = ROUND ((ruler->position - ruler->lower) * increment) + (ythickness - bs_height) / 2 - 1; + + gdk_cairo_set_source_color (cr, &widget->style->fg[widget->state]); + + cairo_move_to (cr, x, y); + cairo_line_to (cr, x + bs_width, y + bs_height / 2.); + cairo_line_to (cr, x, y + bs_height); + cairo_fill (cr); - for (i = 0; i < bs_width; i++) - gdk_draw_line (widget->window, gc, - x + i, y + i, - x + i, y + bs_height - 1 - i); + cairo_destroy (cr); ruler->xsrc = x; ruler->ysrc = y; |