diff options
| author | Martin Owens <doctormo@gmail.com> | 2014-03-27 01:33:44 +0000 |
|---|---|---|
| committer | Martin Owens <doctormo@gmail.com> | 2014-03-27 01:33:44 +0000 |
| commit | 5a4fb2325f60d292b47330f540b26a3279341c90 (patch) | |
| tree | d2aa7967be25450b83e625025366c618101ae49f /src/widgets/sp-color-slider.cpp | |
| parent | The Polar Arrange Tab of the Arrange Dialog now hides the parametric (diff) | |
| parent | Remove Snap menu item and improve grid menu item text (diff) | |
| download | inkscape-5a4fb2325f60d292b47330f540b26a3279341c90.tar.gz inkscape-5a4fb2325f60d292b47330f540b26a3279341c90.zip | |
Commit a merge to trunk, with probabal errors
(bzr r11073.1.36)
Diffstat (limited to 'src/widgets/sp-color-slider.cpp')
| -rw-r--r-- | src/widgets/sp-color-slider.cpp | 394 |
1 files changed, 194 insertions, 200 deletions
diff --git a/src/widgets/sp-color-slider.cpp b/src/widgets/sp-color-slider.cpp index 3b690afc9..9b13ba1c5 100644 --- a/src/widgets/sp-color-slider.cpp +++ b/src/widgets/sp-color-slider.cpp @@ -28,7 +28,7 @@ enum { static void sp_color_slider_class_init (SPColorSliderClass *klass); static void sp_color_slider_init (SPColorSlider *slider); -static void sp_color_slider_destroy (GtkObject *object); +static void sp_color_slider_dispose(GObject *object); static void sp_color_slider_realize (GtkWidget *widget); static void sp_color_slider_size_request (GtkWidget *widget, GtkRequisition *requisition); @@ -41,14 +41,14 @@ static void sp_color_slider_get_preferred_width(GtkWidget *widget, static void sp_color_slider_get_preferred_height(GtkWidget *widget, gint *minimal_height, gint *natural_height); +#else +static gboolean sp_color_slider_expose(GtkWidget *widget, GdkEventExpose *event); #endif static void sp_color_slider_size_allocate (GtkWidget *widget, GtkAllocation *allocation); -/* static void sp_color_slider_draw (GtkWidget *widget, GdkRectangle *area); */ -/* static void sp_color_slider_draw_focus (GtkWidget *widget); */ -/* static void sp_color_slider_draw_default (GtkWidget *widget); */ -static gint sp_color_slider_expose (GtkWidget *widget, GdkEventExpose *event); +static gboolean sp_color_slider_draw(GtkWidget *widget, cairo_t *cr); + static gint sp_color_slider_button_press (GtkWidget *widget, GdkEventButton *event); static gint sp_color_slider_button_release (GtkWidget *widget, GdkEventButton *event); static gint sp_color_slider_motion_notify (GtkWidget *widget, GdkEventMotion *event); @@ -56,7 +56,6 @@ static gint sp_color_slider_motion_notify (GtkWidget *widget, GdkEventMotion *ev static void sp_color_slider_adjustment_changed (GtkAdjustment *adjustment, SPColorSlider *slider); static void sp_color_slider_adjustment_value_changed (GtkAdjustment *adjustment, SPColorSlider *slider); -static void sp_color_slider_paint (SPColorSlider *slider, GdkRectangle *area); static const guchar *sp_color_slider_render_gradient (gint x0, gint y0, gint width, gint height, gint c[], gint dc[], guint b0, guint b1, guint mask); static const guchar *sp_color_slider_render_map (gint x0, gint y0, gint width, gint height, @@ -85,16 +84,12 @@ sp_color_slider_get_type (void) return type; } -static void -sp_color_slider_class_init (SPColorSliderClass *klass) +static void sp_color_slider_class_init(SPColorSliderClass *klass) { - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; + GObjectClass *object_class = G_OBJECT_CLASS(klass); + GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass); - object_class = (GtkObjectClass *) klass; - widget_class = (GtkWidgetClass *) klass; - - parent_class = (GtkWidgetClass*)g_type_class_peek_parent (klass); + parent_class = GTK_WIDGET_CLASS(g_type_class_peek_parent(klass)); slider_signals[GRABBED] = g_signal_new ("grabbed", G_TYPE_FROM_CLASS(object_class), @@ -125,21 +120,21 @@ sp_color_slider_class_init (SPColorSliderClass *klass) g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); - object_class->destroy = sp_color_slider_destroy; + object_class->dispose = sp_color_slider_dispose; widget_class->realize = sp_color_slider_realize; #if GTK_CHECK_VERSION(3,0,0) widget_class->get_preferred_width = sp_color_slider_get_preferred_width; widget_class->get_preferred_height = sp_color_slider_get_preferred_height; + widget_class->draw = sp_color_slider_draw; #else widget_class->size_request = sp_color_slider_size_request; + widget_class->expose_event = sp_color_slider_expose; #endif widget_class->size_allocate = sp_color_slider_size_allocate; -/* widget_class->draw = sp_color_slider_draw; */ /* widget_class->draw_focus = sp_color_slider_draw_focus; */ /* widget_class->draw_default = sp_color_slider_draw_default; */ - widget_class->expose_event = sp_color_slider_expose; widget_class->button_press_event = sp_color_slider_button_press; widget_class->button_release_event = sp_color_slider_button_release; widget_class->motion_notify_event = sp_color_slider_motion_notify; @@ -178,12 +173,9 @@ sp_color_slider_init (SPColorSlider *slider) slider->map = NULL; } -static void -sp_color_slider_destroy (GtkObject *object) +static void sp_color_slider_dispose(GObject *object) { - SPColorSlider *slider; - - slider = SP_COLOR_SLIDER (object); + SPColorSlider *slider = SP_COLOR_SLIDER (object); if (slider->adjustment) { g_signal_handlers_disconnect_matched (G_OBJECT (slider->adjustment), G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, slider); @@ -191,8 +183,8 @@ sp_color_slider_destroy (GtkObject *object) slider->adjustment = NULL; } - if (((GtkObjectClass *) (parent_class))->destroy) - (* ((GtkObjectClass *) (parent_class))->destroy) (object); + if ((G_OBJECT_CLASS(parent_class))->dispose) + (* (G_OBJECT_CLASS(parent_class))->dispose) (object); } static void @@ -212,7 +204,11 @@ sp_color_slider_realize (GtkWidget *widget) attributes.height = allocation.height; attributes.wclass = GDK_INPUT_OUTPUT; attributes.visual = gdk_screen_get_system_visual(gdk_screen_get_default()); + +#if !GTK_CHECK_VERSION(3,0,0) attributes.colormap = gdk_screen_get_system_colormap(gdk_screen_get_default()); +#endif + attributes.event_mask = gtk_widget_get_events (widget); attributes.event_mask |= (GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK | @@ -220,7 +216,11 @@ sp_color_slider_realize (GtkWidget *widget) GDK_POINTER_MOTION_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK); +#if GTK_CHECK_VERSION(3,0,0) + attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL; +#else attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP; +#endif gtk_widget_set_window(widget, gdk_window_new(gtk_widget_get_parent_window(widget), @@ -228,9 +228,12 @@ sp_color_slider_realize (GtkWidget *widget) gdk_window_set_user_data(gtk_widget_get_window(widget), widget); +#if !GTK_CHECK_VERSION(3,0,0) + // This doesn't do anything in GTK+ 3 gtk_widget_set_style(widget, - gtk_style_attach(gtk_widget_get_style(widget), - gtk_widget_get_window(widget))); + gtk_style_attach(gtk_widget_get_style(widget), + gtk_widget_get_window(widget))); +#endif } static void @@ -270,19 +273,21 @@ sp_color_slider_size_allocate (GtkWidget *widget, GtkAllocation *allocation) } } -static gint -sp_color_slider_expose (GtkWidget *widget, GdkEventExpose *event) +#if !GTK_CHECK_VERSION(3,0,0) +static gboolean sp_color_slider_expose(GtkWidget *widget, GdkEventExpose * /*event*/) { - SPColorSlider *slider; + gboolean result = FALSE; - slider = SP_COLOR_SLIDER (widget); - - if (gtk_widget_is_drawable (widget)) { - sp_color_slider_paint (slider, &event->area); + if (gtk_widget_is_drawable(widget)) { + GdkWindow *window = gtk_widget_get_window(widget); + cairo_t *cr = gdk_cairo_create(window); + result = sp_color_slider_draw(widget, cr); + cairo_destroy(cr); } - return FALSE; + return result; } +#endif static gint sp_color_slider_button_press (GtkWidget *widget, GdkEventButton *event) @@ -302,10 +307,20 @@ sp_color_slider_button_press (GtkWidget *widget, GdkEventButton *event) slider->oldvalue = slider->value; ColorScales::setScaled( slider->adjustment, CLAMP ((gfloat) (event->x - cx) / cw, 0.0, 1.0) ); g_signal_emit (G_OBJECT (slider), slider_signals[DRAGGED], 0); + +#if GTK_CHECK_VERSION(3,0,0) + gdk_device_grab(gdk_event_get_device(reinterpret_cast<GdkEvent *>(event)), + gtk_widget_get_window(widget), + GDK_OWNERSHIP_NONE, + FALSE, + static_cast<GdkEventMask>(GDK_POINTER_MOTION_MASK | GDK_BUTTON_RELEASE_MASK), + NULL, + event->time); +#else gdk_pointer_grab(gtk_widget_get_window(widget), FALSE, - (GdkEventMask)(GDK_POINTER_MOTION_MASK | - GDK_BUTTON_RELEASE_MASK), + static_cast<GdkEventMask>(GDK_POINTER_MOTION_MASK | GDK_BUTTON_RELEASE_MASK), NULL, NULL, event->time); +#endif } return FALSE; @@ -319,7 +334,14 @@ sp_color_slider_button_release (GtkWidget *widget, GdkEventButton *event) slider = SP_COLOR_SLIDER (widget); if (event->button == 1) { + +#if GTK_CHECK_VERSION(3,0,0) + gdk_device_ungrab(gdk_event_get_device(reinterpret_cast<GdkEvent *>(event)), + gdk_event_get_time(reinterpret_cast<GdkEvent *>(event))); +#else gdk_pointer_ungrab (event->time); +#endif + slider->dragging = FALSE; g_signal_emit (G_OBJECT (slider), slider_signals[RELEASED], 0); if (slider->value != slider->oldvalue) g_signal_emit (G_OBJECT (slider), slider_signals[CHANGED], 0); @@ -348,12 +370,9 @@ sp_color_slider_motion_notify (GtkWidget *widget, GdkEventMotion *event) return FALSE; } -GtkWidget * -sp_color_slider_new (GtkAdjustment *adjustment) +GtkWidget *sp_color_slider_new(GtkAdjustment *adjustment) { - SPColorSlider *slider; - - slider = (SPColorSlider*)g_object_new (SP_TYPE_COLOR_SLIDER, NULL); + SPColorSlider *slider = SP_COLOR_SLIDER(g_object_new(SP_TYPE_COLOR_SLIDER, NULL)); sp_color_slider_set_adjustment (slider, adjustment); @@ -366,7 +385,7 @@ void sp_color_slider_set_adjustment(SPColorSlider *slider, GtkAdjustment *adjust g_return_if_fail (SP_IS_COLOR_SLIDER (slider)); if (!adjustment) { - adjustment = (GtkAdjustment *) gtk_adjustment_new (0.0, 0.0, 1.0, 0.01, 0.0, 0.0); + adjustment = GTK_ADJUSTMENT(gtk_adjustment_new(0.0, 0.0, 1.0, 0.01, 0.0, 0.0)); } else { gtk_adjustment_set_page_increment(adjustment, 0.0); gtk_adjustment_set_page_size(adjustment, 0.0); @@ -426,7 +445,7 @@ sp_color_slider_set_map (SPColorSlider *slider, const guchar *map) g_return_if_fail (slider != NULL); g_return_if_fail (SP_IS_COLOR_SLIDER (slider)); - slider->map = (guchar *) map; + slider->map = const_cast<guchar *>(map); gtk_widget_queue_draw (GTK_WIDGET (slider)); } @@ -483,191 +502,167 @@ sp_color_slider_adjustment_value_changed (GtkAdjustment *adjustment, SPColorSlid } } -static void -sp_color_slider_paint (SPColorSlider *slider, GdkRectangle *area) +static gboolean sp_color_slider_draw(GtkWidget *widget, cairo_t *cr) { - GtkWidget *widget; - GdkRectangle warea, carea, aarea; - GdkRectangle wpaint, cpaint, apaint; - const guchar *b; - gint w, x, y1, y2; + SPColorSlider *slider = SP_COLOR_SLIDER(widget); + gboolean colorsOnTop = Inkscape::Preferences::get()->getBool("/options/workarounds/colorsontop", false); - - widget = GTK_WIDGET (slider); GtkAllocation allocation; gtk_widget_get_allocation(widget, &allocation); - GtkStyle *style = gtk_widget_get_style(widget); + +#if GTK_CHECK_VERSION(3,0,0) + GtkStyleContext *context = gtk_widget_get_style_context(widget); +#else GdkWindow *window = gtk_widget_get_window(widget); + GtkStyle *style = gtk_widget_get_style(widget); +#endif + + // Draw shadow + if (colorsOnTop) { +#if GTK_CHECK_VERSION(3,0,0) + gtk_render_frame(context, + cr, + 0, 0, + allocation.width, allocation.height); +#else + gtk_paint_shadow( style, window, + gtk_widget_get_state(widget), GTK_SHADOW_IN, + NULL, widget, "colorslider", + 0, 0, + allocation.width, allocation.height); +#endif + } - /* Widget area */ - warea.x = 0; - warea.y = 0; - warea.width = allocation.width; - warea.height = allocation.height; + /* Paintable part of color gradient area */ + GdkRectangle carea; - /* Color gradient area */ +#if GTK_CHECK_VERSION(3,0,0) + GtkBorder padding; + + gtk_style_context_get_padding(context, + gtk_widget_get_state_flags(widget), + &padding); + + carea.x = padding.left; + carea.y = padding.top; +#else carea.x = style->xthickness; carea.y = style->ythickness; +#endif + carea.width = allocation.width - 2 * carea.x; carea.height = allocation.height - 2 * carea.y; - /* Arrow area */ - aarea.x = (int)(slider->value * (carea.width - 1) - ARROW_SIZE / 2 + carea.x); - aarea.width = ARROW_SIZE; - aarea.y = carea.y; - aarea.height = carea.height; + if (slider->map) { + /* Render map pixelstore */ + gint d = (1024 << 16) / carea.width; + gint s = 0; - /* Actual paintable area */ - if (!gdk_rectangle_intersect (area, &warea, &wpaint)) { - return; - } + const guchar *b = sp_color_slider_render_map(0, 0, carea.width, carea.height, + slider->map, s, d, + slider->b0, slider->b1, slider->bmask); - b = NULL; + if (b != NULL && carea.width > 0) { + GdkPixbuf *pb = gdk_pixbuf_new_from_data (b, GDK_COLORSPACE_RGB, + 0, 8, carea.width, carea.height, carea.width * 3, NULL, NULL); - // Draw shadow - if (colorsOnTop) { - gtk_paint_shadow( style, window, - gtk_widget_get_state(widget), GTK_SHADOW_IN, - area, widget, "colorslider", - 0, 0, - warea.width, warea.height); - } + gdk_cairo_set_source_pixbuf(cr, pb, carea.x, carea.y); + cairo_paint(cr); + g_object_unref(pb); + } - /* Paintable part of color gradient area */ - if (gdk_rectangle_intersect (area, &carea, &cpaint)) { - if (slider->map) { - gint s, d; - /* Render map pixelstore */ - d = (1024 << 16) / carea.width; - s = (cpaint.x - carea.x) * d; - 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 && 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 { + gint c[4], dc[4]; + + /* Render gradient */ + // part 1: from c0 to cm + if (carea.width > 0) { + for (gint i = 0; i < 4; i++) { + c[i] = slider->c0[i] << 16; + dc[i] = ((slider->cm[i] << 16) - c[i]) / (carea.width/2); } + guint wi = carea.width/2; + const guchar *b = sp_color_slider_render_gradient(0, 0, wi, carea.height, + c, dc, slider->b0, slider->b1, slider->bmask); + + /* Draw pixelstore 1 */ + if (b != NULL && wi > 0) { + GdkPixbuf *pb = gdk_pixbuf_new_from_data (b, GDK_COLORSPACE_RGB, + 0, 8, wi, carea.height, wi * 3, NULL, NULL); + + gdk_cairo_set_source_pixbuf(cr, pb, carea.x, carea.y); + cairo_paint(cr); + g_object_unref(pb); + } + } - } else { - gint c[4], dc[4]; - gint i; - /* Render gradient */ - - // part 1: from c0 to cm - if ((cpaint.x - carea.x) <= carea.width/2) { - for (i = 0; i < 4; i++) { - c[i] = slider->c0[i] << 16; - dc[i] = ((slider->cm[i] << 16) - c[i]) / (carea.width/2); - c[i] += (cpaint.x - carea.x) * dc[i]; - } - guint wi = MIN(cpaint.x - carea.x + cpaint.width, carea.width/2) - (cpaint.x - carea.x); - b = sp_color_slider_render_gradient (cpaint.x - carea.x, cpaint.y - carea.y, wi, cpaint.height, - c, dc, - slider->b0, slider->b1, slider->bmask); - - /* 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); - } + // part 2: from cm to c1 + if (carea.width > 0) { + for (gint i = 0; i < 4; i++) { + c[i] = slider->cm[i] << 16; + dc[i] = ((slider->c1[i] << 16) - c[i]) / (carea.width/2); } + guint wi = carea.width/2; + const guchar *b = sp_color_slider_render_gradient(carea.width/2, 0, wi, carea.height, + c, dc, + slider->b0, slider->b1, slider->bmask); - // part 2: from cm to c1 - if ((cpaint.x - carea.x + cpaint.width) > carea.width/2) { - for (i = 0; i < 4; i++) { - c[i] = slider->cm[i] << 16; - dc[i] = ((slider->c1[i] << 16) - c[i]) / (carea.width/2); - if ((cpaint.x - carea.x) > carea.width/2) - c[i] += (cpaint.x - carea.x - carea.width/2) * dc[i]; - } - guint wi = cpaint.width - MAX(0, (carea.width/2 - (cpaint.x - carea.x))); - b = sp_color_slider_render_gradient (MAX(cpaint.x - carea.x, carea.width/2), cpaint.y - carea.y, wi, cpaint.height, - c, dc, - slider->b0, slider->b1, slider->bmask); - - /* 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 pixelstore 2 */ + if (b != NULL && wi > 0) { + GdkPixbuf *pb = gdk_pixbuf_new_from_data (b, GDK_COLORSPACE_RGB, + 0, 8, wi, carea.height, wi * 3, NULL, NULL); + + gdk_cairo_set_source_pixbuf(cr, pb, carea.width/2 + carea.x, carea.y); + cairo_paint(cr); + + g_object_unref(pb); } } } - /* Draw shadow */ + /* Draw shadow */ if (!colorsOnTop) { +#if GTK_CHECK_VERSION(3,0,0) + gtk_render_frame(context, + cr, + 0, 0, + allocation.width, allocation.height); +#else gtk_paint_shadow( style, window, gtk_widget_get_state(widget), GTK_SHADOW_IN, - area, widget, "colorslider", + NULL, widget, "colorslider", 0, 0, - warea.width, warea.height); + allocation.width, allocation.height); +#endif } - - if (gdk_rectangle_intersect (area, &aarea, &apaint)) { - /* Draw arrow */ - gdk_rectangle_intersect (&carea, &apaint, &apaint); - cairo_t* cr = gdk_cairo_create(window); - gdk_cairo_rectangle(cr, &apaint); - cairo_clip(cr); - - x = aarea.x; - y1 = carea.y; - y2 = aarea.y + aarea.height - 1; - w = aarea.width; - cairo_set_line_width(cr, 1.0); - - while ( w > 0 ) - { - gdk_cairo_set_source_color(cr, &style->white); - cairo_move_to(cr, x - 0.5, y1 + 0.5); - cairo_line_to(cr, x + w - 1 + 0.5, y1 + 0.5); - cairo_move_to(cr, x - 0.5, y2 + 0.5); - cairo_line_to(cr, x + w - 1 + 0.5, y2 + 0.5); - cairo_stroke(cr); - w -=2; - x++; - if ( w > 0 ) - { - gdk_cairo_set_source_color(cr, &style->black); - cairo_move_to(cr, x - 0.5, y1 + 0.5); - cairo_line_to(cr, x + w - 1 + 0.5, y1 + 0.5); - cairo_move_to(cr, x - 0.5, y2 + 0.5); - cairo_line_to(cr, x + w - 1 + 0.5, y2 + 0.5); - cairo_stroke(cr); - } - y1++; - y2--; - } - - cairo_destroy(cr); - } + /* Draw arrow */ + gint x = (int)(slider->value * (carea.width - 1) - ARROW_SIZE / 2 + carea.x); + gint y1 = carea.y; + gint y2 = carea.y + carea.height - 1; + cairo_set_line_width(cr, 1.0); + + // Define top arrow + cairo_move_to(cr, x - 0.5, y1 + 0.5); + cairo_line_to(cr, x + ARROW_SIZE - 0.5, y1 + 0.5); + cairo_line_to(cr, x + (ARROW_SIZE-1)/2.0, y1 + ARROW_SIZE/2.0 + 0.5); + cairo_line_to(cr, x - 0.5, y1 + 0.5); + + // Define bottom arrow + cairo_move_to(cr, x - 0.5, y2 + 0.5); + cairo_line_to(cr, x + ARROW_SIZE - 0.5, y2 + 0.5); + cairo_line_to(cr, x + (ARROW_SIZE-1)/2.0, y2 - ARROW_SIZE/2.0 + 0.5); + cairo_line_to(cr, x - 0.5, y2 + 0.5); + + // Render both arrows + cairo_set_source_rgb(cr, 1.0, 1.0, 1.0); + cairo_stroke_preserve(cr); + cairo_set_source_rgb(cr, 0.0, 0.0, 0.0); + cairo_fill(cr); + + return FALSE; } /* Colors are << 16 */ @@ -734,7 +729,7 @@ sp_color_slider_render_map (gint x0, gint y0, gint width, gint height, { static guchar *buf = NULL; static gint bs = 0; - guchar *dp, *sp; + guchar *dp; gint x, y; if (buf && (bs < width * height)) { @@ -749,13 +744,12 @@ sp_color_slider_render_map (gint x0, gint y0, gint width, gint height, dp = buf; for (x = x0; x < x0 + width; x++) { gint cr, cg, cb, ca; - guchar *d; - sp = map + 4 * (start >> 16); + guchar *d = dp; + guchar *sp = map + 4 * (start >> 16); cr = *sp++; cg = *sp++; cb = *sp++; ca = *sp++; - d = dp; for (y = y0; y < y0 + height; y++) { guint bg, fc; /* Background value */ |
