aboutsummaryrefslogtreecommitdiffstats
path: root/swaybg
diff options
context:
space:
mode:
authorLibravatar Drew DeVault <sir@cmpwn.com>2015-11-27 08:59:21 -0500
committerLibravatar Drew DeVault <sir@cmpwn.com>2015-11-27 08:59:21 -0500
commitd1012c497bab10d55797ea4649c0c7a002167864 (patch)
tree77b95ac68c60cb573415f7c3b8b370f1715fccc9 /swaybg
parentDon't use the _t postfix on non-typedef structures (diff)
downloadsway-d1012c497bab10d55797ea4649c0c7a002167864.tar.gz
sway-d1012c497bab10d55797ea4649c0c7a002167864.tar.zst
sway-d1012c497bab10d55797ea4649c0c7a002167864.zip
Style enforcement
Diffstat (limited to 'swaybg')
-rw-r--r--swaybg/main.c117
1 files changed, 58 insertions, 59 deletions
diff --git a/swaybg/main.c b/swaybg/main.c
index feb9002e..3b344079 100644
--- a/swaybg/main.c
+++ b/swaybg/main.c
@@ -80,68 +80,67 @@ int main(int argc, const char **argv) {
80 for (i = 0; i < surfaces->length; ++i) { 80 for (i = 0; i < surfaces->length; ++i) {
81 struct window *window = surfaces->items[i]; 81 struct window *window = surfaces->items[i];
82 if (window_prerender(window) && window->cairo) { 82 if (window_prerender(window) && window->cairo) {
83
84 switch (scaling_mode) { 83 switch (scaling_mode) {
85 case SCALING_MODE_STRETCH: 84 case SCALING_MODE_STRETCH:
86 cairo_scale(window->cairo, 85 cairo_scale(window->cairo,
87 (double) window->width / width, 86 (double) window->width / width,
88 (double) window->height / height); 87 (double) window->height / height);
89 cairo_set_source_surface(window->cairo, image, 0, 0); 88 cairo_set_source_surface(window->cairo, image, 0, 0);
90 break; 89 break;
91 case SCALING_MODE_FILL: 90 case SCALING_MODE_FILL:
92 { 91 {
93 double window_ratio = (double) window->width / window->height; 92 double window_ratio = (double) window->width / window->height;
94 double bg_ratio = width / height; 93 double bg_ratio = width / height;
95 94
96 if (window_ratio > bg_ratio) { 95 if (window_ratio > bg_ratio) {
97 double scale = (double) window->width / width; 96 double scale = (double) window->width / width;
98 cairo_scale(window->cairo, scale, scale); 97 cairo_scale(window->cairo, scale, scale);
99 cairo_set_source_surface(window->cairo, image, 98 cairo_set_source_surface(window->cairo, image,
100 0, 99 0,
101 (double) window->height/2 / scale - height/2); 100 (double) window->height/2 / scale - height/2);
102 } else { 101 } else {
103 double scale = (double) window->height / height; 102 double scale = (double) window->height / height;
104 cairo_scale(window->cairo, scale, scale); 103 cairo_scale(window->cairo, scale, scale);
105 cairo_set_source_surface(window->cairo, image, 104 cairo_set_source_surface(window->cairo, image,
106 (double) window->width/2 / scale - width/2, 105 (double) window->width/2 / scale - width/2,
107 0); 106 0);
108 }
109 }
110 break;
111 case SCALING_MODE_FIT:
112 {
113 double window_ratio = (double) window->width / window->height;
114 double bg_ratio = width / height;
115
116 if (window_ratio > bg_ratio) {
117 double scale = (double) window->height / height;
118 cairo_scale(window->cairo, scale, scale);
119 cairo_set_source_surface(window->cairo, image,
120 (double) window->width/2 / scale - width/2,
121 0);
122 } else {
123 double scale = (double) window->width / width;
124 cairo_scale(window->cairo, scale, scale);
125 cairo_set_source_surface(window->cairo, image,
126 0,
127 (double) window->height/2 / scale - height/2);
128 }
129 } 107 }
130 break; 108 }
131 case SCALING_MODE_CENTER: 109 break;
132 cairo_set_source_surface(window->cairo, image, 110 case SCALING_MODE_FIT:
133 (double) window->width/2 - width/2, 111 {
134 (double) window->height/2 - height/2); 112 double window_ratio = (double) window->width / window->height;
135 break; 113 double bg_ratio = width / height;
136 case SCALING_MODE_TILE: 114
137 { 115 if (window_ratio > bg_ratio) {
138 cairo_pattern_t *pattern = cairo_pattern_create_for_surface(image); 116 double scale = (double) window->height / height;
139 cairo_pattern_set_extend(pattern, CAIRO_EXTEND_REPEAT); 117 cairo_scale(window->cairo, scale, scale);
140 cairo_set_source(window->cairo, pattern); 118 cairo_set_source_surface(window->cairo, image,
119 (double) window->width/2 / scale - width/2,
120 0);
121 } else {
122 double scale = (double) window->width / width;
123 cairo_scale(window->cairo, scale, scale);
124 cairo_set_source_surface(window->cairo, image,
125 0,
126 (double) window->height/2 / scale - height/2);
141 } 127 }
142 break; 128 }
143 default: 129 break;
144 sway_abort("Scaling mode '%s' not implemented yet!", scaling_mode_str); 130 case SCALING_MODE_CENTER:
131 cairo_set_source_surface(window->cairo, image,
132 (double) window->width/2 - width/2,
133 (double) window->height/2 - height/2);
134 break;
135 case SCALING_MODE_TILE:
136 {
137 cairo_pattern_t *pattern = cairo_pattern_create_for_surface(image);
138 cairo_pattern_set_extend(pattern, CAIRO_EXTEND_REPEAT);
139 cairo_set_source(window->cairo, pattern);
140 }
141 break;
142 default:
143 sway_abort("Scaling mode '%s' not implemented yet!", scaling_mode_str);
145 } 144 }
146 145
147 cairo_paint(window->cairo); 146 cairo_paint(window->cairo);