diff options
author | Drew DeVault <sir@cmpwn.com> | 2015-11-19 08:20:07 -0500 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2015-11-19 08:20:07 -0500 |
commit | 1a3a7f25140d6751906789582c11edffc3c14090 (patch) | |
tree | 0b194a5084016b7de24248938bfeb4fb0fb766d5 /swaybg/main.c | |
parent | Refactor the crap out of wayland clients (diff) | |
download | sway-1a3a7f25140d6751906789582c11edffc3c14090.tar.gz sway-1a3a7f25140d6751906789582c11edffc3c14090.tar.zst sway-1a3a7f25140d6751906789582c11edffc3c14090.zip |
Basic image rendering for swaybg
Diffstat (limited to 'swaybg/main.c')
-rw-r--r-- | swaybg/main.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/swaybg/main.c b/swaybg/main.c index 56fdc06d..fd5e34c6 100644 --- a/swaybg/main.c +++ b/swaybg/main.c | |||
@@ -28,6 +28,10 @@ int main(int argc, char **argv) { | |||
28 | surfaces = create_list(); | 28 | surfaces = create_list(); |
29 | registry = registry_poll(); | 29 | registry = registry_poll(); |
30 | 30 | ||
31 | if (argc < 2) { | ||
32 | sway_abort("Usage: swaybg path/to/file.png"); | ||
33 | } | ||
34 | |||
31 | if (!registry->desktop_shell) { | 35 | if (!registry->desktop_shell) { |
32 | sway_abort("swaybg requires the compositor to support the desktop-shell extension."); | 36 | sway_abort("swaybg requires the compositor to support the desktop-shell extension."); |
33 | } | 37 | } |
@@ -45,19 +49,18 @@ int main(int argc, char **argv) { | |||
45 | list_add(surfaces, window); | 49 | list_add(surfaces, window); |
46 | } | 50 | } |
47 | 51 | ||
48 | uint8_t r = 0, g = 0, b = 0; | 52 | cairo_surface_t *image = cairo_image_surface_create_from_png(argv[1]); |
49 | 53 | ||
50 | do { | 54 | do { |
51 | for (i = 0; i < surfaces->length; ++i) { | 55 | for (i = 0; i < surfaces->length; ++i) { |
52 | struct window *window = surfaces->items[i]; | 56 | struct window *window = surfaces->items[i]; |
53 | if (window_prerender(window) && window->cairo) { | 57 | if (window_prerender(window) && window->cairo) { |
54 | cairo_set_source_rgb(window->cairo, r / 256.0, g / 256.0, b / 256.0); | 58 | cairo_set_source_surface(window->cairo, image, 0, 0); |
55 | cairo_rectangle(window->cairo, 0, 0, window->width, window->height); | 59 | cairo_rectangle(window->cairo, 0, 0, window->width, window->height); |
56 | cairo_fill(window->cairo); | 60 | cairo_fill(window->cairo); |
57 | 61 | ||
58 | window_render(window); | 62 | window_render(window); |
59 | } | 63 | } |
60 | r++; g += 2; b += 4; | ||
61 | } | 64 | } |
62 | } while (wl_display_dispatch(registry->display) != -1); | 65 | } while (wl_display_dispatch(registry->display) != -1); |
63 | 66 | ||