# HG changeset patch # User Tomasz Mon # Date 1184409903 -7200 # Node ID 4b076ad636e63c3e835d74c3c2c7fa7c5ddd9dd5 # Parent 7f1f6688c32cd39c21774a36652d5e83c6c522f2 use GdkPixmaps for doublesizing diff -r 7f1f6688c32c -r 4b076ad636e6 src/audacious/ui_equalizer.c --- a/src/audacious/ui_equalizer.c Sat Jul 14 00:01:14 2007 +0200 +++ b/src/audacious/ui_equalizer.c Sat Jul 14 12:45:03 2007 +0200 @@ -307,12 +307,10 @@ if (force || redraw) { if (cfg.doublesize && cfg.eq_doublesize_linked) { if (force) { - img = gdk_drawable_get_image(equalizerwin_bg, 0, 0, 275, 116); - img2x = create_dblsize_image(img); - gdk_draw_image(equalizerwin_bg_x2, SKINNED_WINDOW(equalizerwin)->gc, - img2x, 0, 0, 0, 0, 550, 232); - g_object_unref(img2x); - g_object_unref(img); + GdkPixmap *img2; + img2 = create_dblsize_pixmap(equalizerwin_bg); + gdk_draw_drawable(equalizerwin_bg_x2, SKINNED_WINDOW(equalizerwin)->gc, img2, 0, 0, 0, 0, 550, 232); + g_object_unref(img2); } else { for (wl = equalizerwin_wlist; wl; wl = g_list_next(wl)) { diff -r 7f1f6688c32c -r 4b076ad636e6 src/audacious/ui_main.c --- a/src/audacious/ui_main.c Sat Jul 14 00:01:14 2007 +0200 +++ b/src/audacious/ui_main.c Sat Jul 14 12:45:03 2007 +0200 @@ -549,8 +549,6 @@ void draw_main_window(gboolean force) { - GdkImage *img, *img2x; - if (!cfg.player_visible) return; @@ -568,17 +566,13 @@ if (force) { if (cfg.doublesize) { - img = gdk_drawable_get_image(mainwin_bg, 0, 0, bmp_active_skin->properties.mainwin_width, - cfg.player_shaded ? - MAINWIN_SHADED_HEIGHT : - bmp_active_skin->properties.mainwin_height); - img2x = create_dblsize_image(img); - gdk_draw_image(mainwin_bg_x2, SKINNED_WINDOW(mainwin)->gc, img2x, 0, 0, + GdkPixmap *img2x = NULL; + img2x = create_dblsize_pixmap(mainwin_bg); + gdk_draw_drawable(mainwin_bg_x2, SKINNED_WINDOW(mainwin)->gc, img2x, 0, 0, 0, 0, bmp_active_skin->properties.mainwin_width * 2, cfg.player_shaded ? MAINWIN_SHADED_HEIGHT * 2 : bmp_active_skin->properties.mainwin_height * 2); g_object_unref(img2x); - g_object_unref(img); } GList *iter; for (iter = GTK_FIXED (SKINNED_WINDOW(mainwin)->fixed)->children; iter; iter = g_list_next (iter)) { diff -r 7f1f6688c32c -r 4b076ad636e6 src/audacious/ui_skinned_button.c --- a/src/audacious/ui_skinned_button.c Sat Jul 14 00:01:14 2007 +0200 +++ b/src/audacious/ui_skinned_button.c Sat Jul 14 12:45:03 2007 +0200 @@ -344,20 +344,14 @@ break; } - GdkPixmap *image; - image = gdk_pixmap_new(NULL, priv->w*(1+priv->double_size), - priv->h*(1+priv->double_size), - gdk_rgb_get_visual()->depth); + GdkPixmap *image = NULL; if (priv->double_size) { - GdkImage *img, *img2x; - img = gdk_drawable_get_image(obj, 0, 0, priv->w, priv->h); - img2x = create_dblsize_image(img); - gdk_draw_image (image, gc, img2x, 0, 0, 0, 0, priv->w*2, priv->h*2); - g_object_unref(img2x); - g_object_unref(img); - } else + image = create_dblsize_pixmap(obj); + } else { + image = gdk_pixmap_new(NULL, priv->w, priv->h, gdk_rgb_get_visual()->depth); gdk_draw_drawable (image, gc, obj, 0, 0, 0, 0, priv->w, priv->h); + } g_object_unref(obj); diff -r 7f1f6688c32c -r 4b076ad636e6 src/audacious/ui_skinned_horizontal_slider.c --- a/src/audacious/ui_skinned_horizontal_slider.c Sat Jul 14 00:01:14 2007 +0200 +++ b/src/audacious/ui_skinned_horizontal_slider.c Sat Jul 14 12:45:03 2007 +0200 @@ -263,21 +263,14 @@ ((priv->height - priv->knob_height) / 2), priv->knob_width, priv->knob_height); - GdkPixmap *image; - image = gdk_pixmap_new(NULL, priv->width*(1+priv->double_size), - priv->height*(1+priv->double_size), - gdk_rgb_get_visual()->depth); + GdkPixmap *image = NULL; if (priv->double_size) { - GdkImage *img, *img2x; - img = gdk_drawable_get_image(obj, 0, 0, priv->width, priv->height); - img2x = create_dblsize_image(img); - gdk_draw_image (image, gc, img2x, 0, 0, 0, 0, priv->width*2, priv->height*2); - g_object_unref(img2x); - g_object_unref(img); - } else + image = create_dblsize_pixmap(obj); + } else { + image = gdk_pixmap_new(NULL, priv->width, priv->height, gdk_rgb_get_visual()->depth); gdk_draw_drawable (image, gc, obj, 0, 0, 0, 0, priv->width, priv->height); - + } g_object_unref(obj); diff -r 7f1f6688c32c -r 4b076ad636e6 src/audacious/ui_skinned_menurow.c --- a/src/audacious/ui_skinned_menurow.c Sat Jul 14 00:01:14 2007 +0200 +++ b/src/audacious/ui_skinned_menurow.c Sat Jul 14 12:45:03 2007 +0200 @@ -243,21 +243,14 @@ menurow->sx + 24, menurow->sy + 26, 0, 26, 8, 8); } - GdkPixmap *image; - image = gdk_pixmap_new(NULL, menurow->width*(1+menurow->double_size), - menurow->height*(1+menurow->double_size), - gdk_rgb_get_visual()->depth); + GdkPixmap *image = NULL; if (menurow->double_size) { - GdkImage *img, *img2x; - img = gdk_drawable_get_image(obj, 0, 0, menurow->width, menurow->height); - img2x = create_dblsize_image(img); - gdk_draw_image (image, gc, img2x, 0, 0, 0, 0, menurow->width*2, menurow->height*2); - g_object_unref(img2x); - g_object_unref(img); - } else - gdk_draw_drawable (image, gc, obj, 0, 0, 0, 0, menurow->width, menurow->height); - + image = create_dblsize_pixmap(obj); + } else { + image = gdk_pixmap_new(NULL, menurow->width, menurow->height, gdk_rgb_get_visual()->depth); + gdk_draw_drawable(image, gc, obj, 0, 0, 0, 0, menurow->width, menurow->height); + } g_object_unref(obj); diff -r 7f1f6688c32c -r 4b076ad636e6 src/audacious/ui_skinned_monostereo.c --- a/src/audacious/ui_skinned_monostereo.c Sat Jul 14 00:01:14 2007 +0200 +++ b/src/audacious/ui_skinned_monostereo.c Sat Jul 14 12:45:03 2007 +0200 @@ -203,21 +203,14 @@ break; } - GdkPixmap *image; - image = gdk_pixmap_new(NULL, monostereo->width*(1+monostereo->double_size), - monostereo->height*(1+monostereo->double_size), - gdk_rgb_get_visual()->depth); + GdkPixmap *image = NULL; if (monostereo->double_size) { - GdkImage *img, *img2x; - img = gdk_drawable_get_image(obj, 0, 0, monostereo->width, monostereo->height); - img2x = create_dblsize_image(img); - gdk_draw_image (image, gc, img2x, 0, 0, 0, 0, monostereo->width*2, monostereo->height*2); - g_object_unref(img2x); - g_object_unref(img); - } else + image = create_dblsize_pixmap(obj); + } else { + image = gdk_pixmap_new(NULL, monostereo->width, monostereo->height, gdk_rgb_get_visual()->depth); gdk_draw_drawable (image, gc, obj, 0, 0, 0, 0, monostereo->width, monostereo->height); - + } g_object_unref(obj); diff -r 7f1f6688c32c -r 4b076ad636e6 src/audacious/ui_skinned_playstatus.c --- a/src/audacious/ui_skinned_playstatus.c Sat Jul 14 00:01:14 2007 +0200 +++ b/src/audacious/ui_skinned_playstatus.c Sat Jul 14 12:45:03 2007 +0200 @@ -208,21 +208,14 @@ break; } - GdkPixmap *image; - image = gdk_pixmap_new(NULL, playstatus->width*(1+playstatus->double_size), - playstatus->height*(1+playstatus->double_size), - gdk_rgb_get_visual()->depth); + GdkPixmap *image = NULL; if (playstatus->double_size) { - GdkImage *img, *img2x; - img = gdk_drawable_get_image(obj, 0, 0, playstatus->width, playstatus->height); - img2x = create_dblsize_image(img); - gdk_draw_image (image, gc, img2x, 0, 0, 0, 0, playstatus->width*2, playstatus->height*2); - g_object_unref(img2x); - g_object_unref(img); - } else + image = create_dblsize_pixmap(obj); + } else { + image = gdk_pixmap_new(NULL, playstatus->width, playstatus->height, gdk_rgb_get_visual()->depth); gdk_draw_drawable (image, gc, obj, 0, 0, 0, 0, playstatus->width, playstatus->height); - + } g_object_unref(obj); diff -r 7f1f6688c32c -r 4b076ad636e6 src/audacious/ui_skinned_textbox.c --- a/src/audacious/ui_skinned_textbox.c Sat Jul 14 00:01:14 2007 +0200 +++ b/src/audacious/ui_skinned_textbox.c Sat Jul 14 12:45:03 2007 +0200 @@ -334,21 +334,14 @@ } - GdkPixmap *image; - image = gdk_pixmap_new(NULL, textbox->width*(1+priv->double_size), - textbox->height*(1+priv->double_size), - gdk_rgb_get_visual()->depth); + GdkPixmap *image = NULL; - if (priv->double_size) { - GdkImage *img, *img2x; - img = gdk_drawable_get_image(obj, 0, 0, textbox->width, textbox->height); - img2x = create_dblsize_image(img); - gdk_draw_image (image, gc, img2x, 0, 0, 0, 0, textbox->width*2, textbox->height*2); - g_object_unref(img2x); - g_object_unref(img); - } else - gdk_draw_drawable (image, gc, obj, 0, 0, 0, 0, textbox->width, textbox->height); - + if (priv->double_size) { + image = create_dblsize_pixmap(obj); + } else { + image = gdk_pixmap_new(NULL, textbox->width, textbox->height, gdk_rgb_get_visual()->depth); + gdk_draw_drawable (image, gc, obj, 0, 0, 0, 0, textbox->width, textbox->height); + } g_object_unref(obj); diff -r 7f1f6688c32c -r 4b076ad636e6 src/audacious/util.c --- a/src/audacious/util.c Sat Jul 14 00:01:14 2007 +0200 +++ b/src/audacious/util.c Sat Jul 14 12:45:03 2007 +0200 @@ -859,6 +859,25 @@ return out; } +GdkPixmap *create_dblsize_pixmap(GdkPixmap *pix) { + int w, h; + gdk_drawable_get_size(pix, &w, &h); + GdkGC* gc = gdk_gc_new(pix); + GdkPixbuf *img, *img2x; + GdkColormap *colormap = gdk_colormap_get_system(); + img = gdk_pixbuf_new(GDK_COLORSPACE_RGB, FALSE, 8, w, h); + gdk_pixbuf_get_from_drawable(img, pix, colormap, 0, 0, 0, 0, w, h); + img2x = gdk_pixbuf_scale_simple(img, w*2, h*2, GDK_INTERP_NEAREST); + + GdkPixmap *image; + image = gdk_pixmap_new(NULL, w*2, h*2, gdk_rgb_get_visual()->depth); + gdk_draw_pixbuf(image, gc, img2x, 0, 0, 0, 0, w*2, h*2, GDK_RGB_DITHER_NONE, 0, 0); + g_object_unref(img); + g_object_unref(img2x); + g_object_unref(gc); + return image; +} + GdkImage *create_dblsize_image(GdkImage * img) { #ifdef GDK_WINDOWING_X11 diff -r 7f1f6688c32c -r 4b076ad636e6 src/audacious/util.h --- a/src/audacious/util.h Sat Jul 14 00:01:14 2007 +0200 +++ b/src/audacious/util.h Sat Jul 14 12:45:03 2007 +0200 @@ -107,6 +107,7 @@ gboolean xmms_check_realtime_priority(void); void xmms_usleep(gint usec); +GdkPixmap *create_dblsize_pixmap(GdkPixmap *pix); GdkImage *create_dblsize_image(GdkImage * img); GdkPixbuf *audacious_create_colorized_pixbuf(GdkPixbuf *src, gint red, gint green, gint blue);