summaryrefslogtreecommitdiff
path: root/extra/xfdesktop/revert-SVG-images-are-no-longer-pixilated-when-scale.patch
blob: 020888a2b6ed32a8480527522f47f589d444b259 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
From 8c868b20f3e19871f3f09e972cd20dbe3640084a Mon Sep 17 00:00:00 2001
From: Evangelos Foutras <evangelos@foutrelis.com>
Date: Wed, 6 Mar 2013 04:27:07 +0200
Subject: [PATCH] Revert "SVG images are no longer pixilated when scaled up"

This reverts commit ebad377e5cd067cec9f2b402dff4991ddc4cc3b5.
---
 src/xfce-backdrop.c | 38 +++++++++++++++++---------------------
 1 file changed, 17 insertions(+), 21 deletions(-)

diff --git a/src/xfce-backdrop.c b/src/xfce-backdrop.c
index 9a4d7db..b07492f 100644
--- a/src/xfce-backdrop.c
+++ b/src/xfce-backdrop.c
@@ -933,10 +933,17 @@ xfce_backdrop_get_pixbuf(XfceBackdrop *backdrop)
     
     g_return_val_if_fail(XFCE_IS_BACKDROP(backdrop), NULL);
     
-    if(backdrop->priv->show_image && backdrop->priv->image_path)
-        gdk_pixbuf_get_file_info(backdrop->priv->image_path, &iw, &ih);
-
+    if(backdrop->priv->show_image && backdrop->priv->image_path) {
+        image = gdk_pixbuf_new_from_file(backdrop->priv->image_path, NULL);
+        if(image) {
+            iw = gdk_pixbuf_get_width(image);
+            ih = gdk_pixbuf_get_height(image);
+        }
+    }
+    
     if(backdrop->priv->width == 0 || backdrop->priv->height == 0) {
+        if(!image)
+            return NULL;
         w = iw;
         h = ih;
     } else {
@@ -956,9 +963,7 @@ xfce_backdrop_get_pixbuf(XfceBackdrop *backdrop)
             final_image = create_solid(&backdrop->priv->color1, w, h, FALSE, 0xff);
     }
     
-    /*check if the file exists,
-     *and if it doesn't then make the background the single colour*/
-    if(!g_file_test(backdrop->priv->image_path, G_FILE_TEST_EXISTS)) {
+    if(!image) {
         if(backdrop->priv->brightness != 0)
             final_image = adjust_brightness(final_image, backdrop->priv->brightness);
         
@@ -996,7 +1001,6 @@ xfce_backdrop_get_pixbuf(XfceBackdrop *backdrop)
     
     switch(istyle) {
         case XFCE_BACKDROP_IMAGE_CENTERED:
-            image = gdk_pixbuf_new_from_file(backdrop->priv->image_path, NULL);
             dx = MAX((w - iw) / 2, 0);
             dy = MAX((h - ih) / 2, 0);
             xo = MIN((w - iw) / 2, dx);
@@ -1007,7 +1011,6 @@ xfce_backdrop_get_pixbuf(XfceBackdrop *backdrop)
             break;
         
         case XFCE_BACKDROP_IMAGE_TILED:
-            image = gdk_pixbuf_new_from_file(backdrop->priv->image_path, NULL);
             tmp = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, w, h);
             for(i = 0; (i * iw) < w; i++) {
                 for(j = 0; (j * ih) < h; j++) {
@@ -1030,10 +1033,10 @@ xfce_backdrop_get_pixbuf(XfceBackdrop *backdrop)
             break;
         
         case XFCE_BACKDROP_IMAGE_STRETCHED:
-            image = gdk_pixbuf_new_from_file_at_scale(
-                            backdrop->priv->image_path, w, h, FALSE, NULL);
+            xscale = (gdouble)w / iw;
+            yscale = (gdouble)h / ih;
             gdk_pixbuf_composite(image, final_image, 0, 0, w, h,
-                    0, 0, 1, 1, interp, 255);
+                    0, 0, xscale, yscale, interp, 255);
             break;
         
         case XFCE_BACKDROP_IMAGE_SCALED:
@@ -1050,12 +1053,9 @@ xfce_backdrop_get_pixbuf(XfceBackdrop *backdrop)
             }
             dx = xo;
             dy = yo;
-
-            image = gdk_pixbuf_new_from_file_at_scale(
-                        backdrop->priv->image_path, iw * xscale,
-                        ih * yscale, TRUE, NULL);
+            
             gdk_pixbuf_composite(image, final_image, dx, dy,
-                    iw * xscale, ih * yscale, xo, yo, 1, 1,
+                    iw * xscale, ih * yscale, xo, yo, xscale, yscale,
                     interp, 255);
             break;
         
@@ -1071,12 +1071,8 @@ xfce_backdrop_get_pixbuf(XfceBackdrop *backdrop)
                 xo = 0;
                 yo = (h - (ih * yscale)) * 0.5;
             }
-
-            image = gdk_pixbuf_new_from_file_at_scale(
-                                backdrop->priv->image_path, iw * xscale,
-                                ih * yscale, TRUE, NULL);
             gdk_pixbuf_composite(image, final_image, 0, 0,
-                    w, h, xo, yo, 1, 1, interp, 255);
+                    w, h, xo, yo, xscale, yscale, interp, 255);
             break;
         
         default:
-- 
1.8.1.5