[gimp] plug-ins: port tile-small selection drawing to cairo
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] plug-ins: port tile-small selection drawing to cairo
- Date: Wed, 8 Sep 2010 18:34:17 +0000 (UTC)
commit 73b5f87873dc6ca44b88789b4759720359ad870f
Author: Michael Natterer <mitch gimp org>
Date: Wed Sep 8 20:33:39 2010 +0200
plug-ins: port tile-small selection drawing to cairo
plug-ins/common/tile-small.c | 50 ++++++++++++++++--------------------------
1 files changed, 19 insertions(+), 31 deletions(-)
---
diff --git a/plug-ins/common/tile-small.c b/plug-ins/common/tile-small.c
index 83a8e1c..98f51a6 100644
--- a/plug-ins/common/tile-small.c
+++ b/plug-ins/common/tile-small.c
@@ -639,39 +639,25 @@ draw_explict_sel (void)
{
if (exp_call.type == EXPLICT)
{
- GtkStyle *style = gtk_widget_get_style (tint.preview);
- gdouble x,y;
+ cairo_t *cr = gdk_cairo_create (gtk_widget_get_window (tint.preview));
gdouble width = (gdouble) preview_width / (gdouble) itvals.numtiles;
gdouble height = (gdouble) preview_height / (gdouble) itvals.numtiles;
+ gdouble x , y;
- x = width * (exp_call.x - 1);
+ x = width * (exp_call.x - 1);
y = height * (exp_call.y - 1);
- gdk_gc_set_function (style->black_gc, GDK_INVERT);
-
- gdk_draw_rectangle (gtk_widget_get_window (tint.preview),
- style->black_gc,
- 0,
- (gint) x,
- (gint) y,
- (gint) width,
- (gint) height);
- gdk_draw_rectangle (gtk_widget_get_window (tint.preview),
- style->black_gc,
- 0,
- (gint) x + 1,
- (gint) y + 1,
- (gint) width - 2,
- (gint) height - 2);
- gdk_draw_rectangle (gtk_widget_get_window (tint.preview),
- style->black_gc,
- 0,
- (gint) x + 2,
- (gint) y + 2,
- (gint) width - 4,
- (gint) height - 4);
-
- gdk_gc_set_function (style->black_gc, GDK_COPY);
+ cairo_rectangle (cr, x + 1.5, y + 1.5, width - 2, height - 2);
+
+ cairo_set_line_width (cr, 3.0);
+ cairo_set_source_rgb (cr, 1.0, 1.0, 1.0);
+ cairo_stroke_preserve (cr);
+
+ cairo_set_line_width (cr, 1.0);
+ cairo_set_source_rgb (cr, 0.0, 0.0, 0.0);
+ cairo_stroke_preserve (cr);
+
+ cairo_destroy (cr);
}
}
@@ -693,10 +679,9 @@ exp_need_update (gint nx,
if (nx != exp_call.x || ny != exp_call.y)
{
- draw_explict_sel (); /* Clear old 'un */
exp_call.x = nx;
exp_call.y = ny;
- draw_explict_sel ();
+ gtk_widget_queue_draw (tint.preview);
g_signal_handlers_block_by_func (exp_call.c_adj,
tileit_exp_update_f,
@@ -1132,6 +1117,7 @@ dialog_update_preview (void)
guchar *buffer;
buffer = g_new (guchar, preview_width * preview_height * tint.img_bpp);
+
for (y = 0; y < preview_height; y++)
{
do_tiles_preview (tint.preview_row,
@@ -1145,12 +1131,14 @@ dialog_update_preview (void)
tint.preview_row,
preview_width * tint.img_bpp);
}
+
gimp_preview_area_draw (GIMP_PREVIEW_AREA (tint.preview),
0, 0, preview_width, preview_height,
(tint.img_bpp>3)?GIMP_RGBA_IMAGE:GIMP_RGB_IMAGE,
buffer,
preview_width * tint.img_bpp);
+
g_free (buffer);
- draw_explict_sel ();
+
gtk_widget_queue_draw (tint.preview);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]