diff src/audacious/ui_skinned_equalizer_graph.c @ 4197:bc51ab3fecd5

remove pixmap from SkinPixmap
author Tomasz Mon <desowin@gmail.com>
date Sat, 19 Jan 2008 13:44:52 +0100
parents 9d4b5cdae3ba
children 41655c090c53
line wrap: on
line diff
--- a/src/audacious/ui_skinned_equalizer_graph.c	Sat Jan 19 06:04:22 2008 +0100
+++ b/src/audacious/ui_skinned_equalizer_graph.c	Sat Jan 19 13:44:52 2008 +0100
@@ -229,8 +229,10 @@
     g_return_val_if_fail (equalizer_graph->width > 0 && equalizer_graph->height > 0, FALSE);
 
     GdkPixmap *obj = NULL;
+    GdkPixbuf *pix = NULL;
     GdkGC *gc;
 
+    pix = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, equalizer_graph->width, equalizer_graph->height);
     obj = gdk_pixmap_new(NULL, equalizer_graph->width, equalizer_graph->height, gdk_rgb_get_visual()->depth);
     gc = gdk_gc_new(obj);
 
@@ -246,12 +248,17 @@
      */
     void (*__init_spline) (gfloat *, gfloat *, gint, gfloat *) = init_spline;
 
-    skin_draw_pixmap(widget, bmp_active_skin, obj, gc, equalizer_graph->skin_index, 0, 294, 0, 0,
+    skin_draw_pixbuf(widget, bmp_active_skin, pix, equalizer_graph->skin_index, 0, 294, 0, 0,
                      equalizer_graph->width, equalizer_graph->height);
-    skin_draw_pixmap(widget, bmp_active_skin, obj, gc, equalizer_graph->skin_index, 0, 314,
+    skin_draw_pixbuf(widget, bmp_active_skin, pix, equalizer_graph->skin_index, 0, 314,
                      0, 9 + ((cfg.equalizer_preamp * 9) / 20),
                      equalizer_graph->width, 1);
 
+    /* we shouldn't do it this way... we should paint equalizer-line pixels on pixbuf */
+    gdk_draw_pixbuf(obj, gc, pix, 0, 0, 0, 0, equalizer_graph->width, equalizer_graph->height,
+                    GDK_RGB_DITHER_NONE, 0, 0);
+    g_object_unref(pix);
+
     skin_get_eq_spline_colors(bmp_active_skin, cols);
 
     __init_spline(x, cfg.equalizer_bands, 10, yf);
@@ -274,6 +281,8 @@
             ymax = y;
         }
         py = y;
+
+        /* this should operate directly on GdkPixbuf */
         for (y = ymin; y <= ymax; y++) {
             col.pixel = cols[y];
             gdk_gc_set_foreground(gc, &col);
@@ -281,6 +290,7 @@
         }
     }
 
+    gc = gdk_gc_new(obj);
     GdkPixmap *image = NULL;
 
     if (equalizer_graph->double_size) {