diff options
Diffstat (limited to 'swaybg')
-rw-r--r-- | swaybg/main.c | 78 |
1 files changed, 39 insertions, 39 deletions
diff --git a/swaybg/main.c b/swaybg/main.c index ff16a54e..73a8de0a 100644 --- a/swaybg/main.c +++ b/swaybg/main.c | |||
@@ -88,57 +88,57 @@ int main(int argc, const char **argv) { | |||
88 | cairo_set_source_surface(window->cairo, image, 0, 0); | 88 | cairo_set_source_surface(window->cairo, image, 0, 0); |
89 | break; | 89 | break; |
90 | case SCALING_MODE_FILL: | 90 | case SCALING_MODE_FILL: |
91 | { | 91 | { |
92 | double window_ratio = (double) window->width / window->height; | 92 | double window_ratio = (double) window->width / window->height; |
93 | double bg_ratio = width / height; | 93 | double bg_ratio = width / height; |
94 | 94 | ||
95 | if (window_ratio > bg_ratio) { | 95 | if (window_ratio > bg_ratio) { |
96 | double scale = (double) window->width / width; | 96 | double scale = (double) window->width / width; |
97 | cairo_scale(window->cairo, scale, scale); | 97 | cairo_scale(window->cairo, scale, scale); |
98 | cairo_set_source_surface(window->cairo, image, | 98 | cairo_set_source_surface(window->cairo, image, |
99 | 0, | 99 | 0, |
100 | (double) window->height/2 / scale - height/2); | 100 | (double) window->height/2 / scale - height/2); |
101 | } else { | 101 | } else { |
102 | double scale = (double) window->height / height; | 102 | double scale = (double) window->height / height; |
103 | cairo_scale(window->cairo, scale, scale); | 103 | cairo_scale(window->cairo, scale, scale); |
104 | cairo_set_source_surface(window->cairo, image, | 104 | cairo_set_source_surface(window->cairo, image, |
105 | (double) window->width/2 / scale - width/2, | 105 | (double) window->width/2 / scale - width/2, |
106 | 0); | 106 | 0); |
107 | } | ||
108 | } | 107 | } |
109 | break; | 108 | break; |
109 | } | ||
110 | case SCALING_MODE_FIT: | 110 | case SCALING_MODE_FIT: |
111 | { | 111 | { |
112 | double window_ratio = (double) window->width / window->height; | 112 | double window_ratio = (double) window->width / window->height; |
113 | double bg_ratio = width / height; | 113 | double bg_ratio = width / height; |
114 | 114 | ||
115 | if (window_ratio > bg_ratio) { | 115 | if (window_ratio > bg_ratio) { |
116 | double scale = (double) window->height / height; | 116 | double scale = (double) window->height / height; |
117 | cairo_scale(window->cairo, scale, scale); | 117 | cairo_scale(window->cairo, scale, scale); |
118 | cairo_set_source_surface(window->cairo, image, | 118 | cairo_set_source_surface(window->cairo, image, |
119 | (double) window->width/2 / scale - width/2, | 119 | (double) window->width/2 / scale - width/2, |
120 | 0); | 120 | 0); |
121 | } else { | 121 | } else { |
122 | double scale = (double) window->width / width; | 122 | double scale = (double) window->width / width; |
123 | cairo_scale(window->cairo, scale, scale); | 123 | cairo_scale(window->cairo, scale, scale); |
124 | cairo_set_source_surface(window->cairo, image, | 124 | cairo_set_source_surface(window->cairo, image, |
125 | 0, | 125 | 0, |
126 | (double) window->height/2 / scale - height/2); | 126 | (double) window->height/2 / scale - height/2); |
127 | } | ||
128 | } | 127 | } |
129 | break; | 128 | break; |
129 | } | ||
130 | case SCALING_MODE_CENTER: | 130 | case SCALING_MODE_CENTER: |
131 | cairo_set_source_surface(window->cairo, image, | 131 | cairo_set_source_surface(window->cairo, image, |
132 | (double) window->width/2 - width/2, | 132 | (double) window->width/2 - width/2, |
133 | (double) window->height/2 - height/2); | 133 | (double) window->height/2 - height/2); |
134 | break; | 134 | break; |
135 | case SCALING_MODE_TILE: | 135 | case SCALING_MODE_TILE: |
136 | { | 136 | { |
137 | cairo_pattern_t *pattern = cairo_pattern_create_for_surface(image); | 137 | cairo_pattern_t *pattern = cairo_pattern_create_for_surface(image); |
138 | cairo_pattern_set_extend(pattern, CAIRO_EXTEND_REPEAT); | 138 | cairo_pattern_set_extend(pattern, CAIRO_EXTEND_REPEAT); |
139 | cairo_set_source(window->cairo, pattern); | 139 | cairo_set_source(window->cairo, pattern); |
140 | } | ||
141 | break; | 140 | break; |
141 | } | ||
142 | default: | 142 | default: |
143 | sway_abort("Scaling mode '%s' not implemented yet!", scaling_mode_str); | 143 | sway_abort("Scaling mode '%s' not implemented yet!", scaling_mode_str); |
144 | } | 144 | } |