gtk_hruler_draw_ticks (GtkRuler *ruler)
{
GtkWidget *widget;
- GdkGC *gc, *bg_gc;
+ cairo_t *cr;
gint i;
gint width, height;
gint xthickness;
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;
NULL, widget, "hruler",
0, 0,
widget->allocation.width, widget->allocation.height);
-
-
- gdk_draw_line (ruler->backing_store, gc,
- xthickness,
- height + ythickness,
- widget->allocation.width - xthickness,
- 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,
+ xthickness,
+ height + ythickness,
+ widget->allocation.width - 2 * xthickness,
+ 1);
upper = ruler->upper / ruler->metric->pixels_per_unit;
lower = ruler->lower / ruler->metric->pixels_per_unit;
{
pos = ROUND ((cur - lower) * increment);
- gdk_draw_line (ruler->backing_store, gc,
- pos, height + ythickness,
- pos, height - length + ythickness);
+ cairo_rectangle (cr,
+ pos, height + ythickness - length,
+ 1, length);
/* draw label */
if (i == 0)
}
}
+ cairo_fill (cr);
+ cairo_destroy (cr);
+
g_object_unref (layout);
}
static void
gtk_hruler_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;
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;
height = widget->allocation.height - ythickness * 2;
- bs_width = height / 2;
+ bs_width = height / 2 + 2;
bs_width |= 1; /* make sure it's odd */
bs_height = bs_width / 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,
x = ROUND ((ruler->position - ruler->lower) * increment) + (xthickness - bs_width) / 2 - 1;
y = (height + bs_height) / 2 + ythickness;
- for (i = 0; i < bs_height; i++)
- gdk_draw_line (widget->window, gc,
- x + i, y + i,
- x + bs_width - 1 - i, y + i);
+ gdk_cairo_set_source_color (cr, &widget->style->fg[widget->state]);
+
+ cairo_move_to (cr, x, y);
+ cairo_line_to (cr, x + bs_width / 2., y + bs_height);
+ cairo_line_to (cr, x + bs_width, y);
+ cairo_fill (cr);
+ cairo_destroy (cr);
ruler->xsrc = x;
ruler->ysrc = y;