diff options
| author | John Smith <john.smith7545@yahoo.com> | 2012-04-23 05:34:26 +0000 |
|---|---|---|
| committer | John Smith <removethis.john.q.public@bigmail.com> | 2012-04-23 05:34:26 +0000 |
| commit | db628a4876731706c3b814b9f16321424431b0be (patch) | |
| tree | 67fa6bbb3472c9e21f3ba89a1c58dbe5916727e6 /src/widgets | |
| parent | pdf import. modify criterion for applying scaling to gradientTransform (Bug 9... (diff) | |
| download | inkscape-db628a4876731706c3b814b9f16321424431b0be.tar.gz inkscape-db628a4876731706c3b814b9f16321424431b0be.zip | |
Fix for 943207 : Replace deprecated gdk_draw_rgb_image with cairo drawing in sp-color-slider
(bzr r11284)
Diffstat (limited to 'src/widgets')
| -rw-r--r-- | src/widgets/sp-color-slider.cpp | 58 |
1 files changed, 37 insertions, 21 deletions
diff --git a/src/widgets/sp-color-slider.cpp b/src/widgets/sp-color-slider.cpp index b5b90f951..3b690afc9 100644 --- a/src/widgets/sp-color-slider.cpp +++ b/src/widgets/sp-color-slider.cpp @@ -544,12 +544,18 @@ sp_color_slider_paint (SPColorSlider *slider, GdkRectangle *area) b = sp_color_slider_render_map (cpaint.x - carea.x, cpaint.y - carea.y, cpaint.width, cpaint.height, slider->map, s, d, slider->b0, slider->b1, slider->bmask); - if (b != NULL) { - gdk_draw_rgb_image(window, style->black_gc, - cpaint.x, cpaint.y, - cpaint.width, cpaint.height, - GDK_RGB_DITHER_MAX, - (guchar *) b, cpaint.width * 3); + if (b != NULL && cpaint.width > 0) { + + GdkPixbuf *pb = gdk_pixbuf_new_from_data (b, GDK_COLORSPACE_RGB, + 0, 8, cpaint.width, cpaint.height, cpaint.width * 3, NULL, NULL); + + cairo_t *ct = gdk_cairo_create(window); + gdk_cairo_set_source_pixbuf (ct, pb, cpaint.x, cpaint.y); + cairo_paint(ct); + cairo_destroy(ct); + + g_object_unref(pb); + } } else { @@ -569,13 +575,18 @@ sp_color_slider_paint (SPColorSlider *slider, GdkRectangle *area) c, dc, slider->b0, slider->b1, slider->bmask); - /* Draw pixelstore */ - if (b != NULL) { - gdk_draw_rgb_image(window, style->black_gc, - cpaint.x, cpaint.y, - wi, cpaint.height, - GDK_RGB_DITHER_MAX, - (guchar *) b, wi * 3); + /* Draw pixelstore 1 */ + if (b != NULL && wi > 0) { + + GdkPixbuf *pb = gdk_pixbuf_new_from_data (b, GDK_COLORSPACE_RGB, + 0, 8, wi, cpaint.height, wi * 3, NULL, NULL); + + cairo_t *ct = gdk_cairo_create(window); + gdk_cairo_set_source_pixbuf (ct, pb, cpaint.x, cpaint.y); + cairo_paint(ct); + cairo_destroy(ct); + + g_object_unref(pb); } } @@ -592,19 +603,24 @@ sp_color_slider_paint (SPColorSlider *slider, GdkRectangle *area) c, dc, slider->b0, slider->b1, slider->bmask); - /* Draw pixelstore */ - if (b != NULL) { - gdk_draw_rgb_image(window, style->black_gc, - MAX(cpaint.x, carea.width/2 + carea.x), cpaint.y, - wi, cpaint.height, - GDK_RGB_DITHER_MAX, - (guchar *) b, wi * 3); + /* Draw pixelstore 2 */ + if (b != NULL && wi > 0) { + + GdkPixbuf *pb = gdk_pixbuf_new_from_data (b, GDK_COLORSPACE_RGB, + 0, 8, wi, cpaint.height, wi * 3, NULL, NULL); + + cairo_t *ct = gdk_cairo_create(window); + gdk_cairo_set_source_pixbuf (ct, pb, MAX(cpaint.x, carea.width/2 + carea.x), cpaint.y); + cairo_paint(ct); + cairo_destroy(ct); + + g_object_unref(pb); } } } } - /* Draw shadow */ + /* Draw shadow */ if (!colorsOnTop) { gtk_paint_shadow( style, window, gtk_widget_get_state(widget), GTK_SHADOW_IN, |
