aboutsummaryrefslogtreecommitdiffstats
path: root/common/background-image.c
diff options
context:
space:
mode:
authorLibravatar Drew DeVault <sir@cmpwn.com>2018-04-02 22:48:13 -0400
committerLibravatar Drew DeVault <sir@cmpwn.com>2018-04-04 18:47:48 -0400
commitb32bf595aeae7f8ac68354e45a80c0438374ec17 (patch)
treeb93185d2ac4b7081b9d0651eaaadeae21de48929 /common/background-image.c
parentMove swaybg background rendering into common/ (diff)
downloadsway-b32bf595aeae7f8ac68354e45a80c0438374ec17.tar.gz
sway-b32bf595aeae7f8ac68354e45a80c0438374ec17.tar.zst
sway-b32bf595aeae7f8ac68354e45a80c0438374ec17.zip
Initial swaylock port
Diffstat (limited to 'common/background-image.c')
-rw-r--r--common/background-image.c22
1 files changed, 20 insertions, 2 deletions
diff --git a/common/background-image.c b/common/background-image.c
index 2988c2e2..1a6c0df0 100644
--- a/common/background-image.c
+++ b/common/background-image.c
@@ -4,6 +4,24 @@
4#include "background-image.h" 4#include "background-image.h"
5#include "cairo.h" 5#include "cairo.h"
6 6
7enum background_mode parse_background_mode(const char *mode) {
8 if (strcmp(mode, "stretch") == 0) {
9 return BACKGROUND_MODE_STRETCH;
10 } else if (strcmp(mode, "fill") == 0) {
11 return BACKGROUND_MODE_FILL;
12 } else if (strcmp(mode, "fit") == 0) {
13 return BACKGROUND_MODE_FIT;
14 } else if (strcmp(mode, "center") == 0) {
15 return BACKGROUND_MODE_CENTER;
16 } else if (strcmp(mode, "tile") == 0) {
17 return BACKGROUND_MODE_TILE;
18 } else if (strcmp(mode, "solid_color") == 0) {
19 return BACKGROUND_MODE_SOLID_COLOR;
20 }
21 wlr_log(L_ERROR, "Unsupported background mode: %s", mode);
22 return BACKGROUND_MODE_INVALID;
23}
24
7cairo_surface_t *load_background_image(const char *path) { 25cairo_surface_t *load_background_image(const char *path) {
8 cairo_surface_t *image; 26 cairo_surface_t *image;
9#ifdef HAVE_GDK_PIXBUF 27#ifdef HAVE_GDK_PIXBUF
@@ -35,8 +53,7 @@ cairo_surface_t *load_background_image(const char *path) {
35} 53}
36 54
37void render_background_image(cairo_t *cairo, cairo_surface_t *image, 55void render_background_image(cairo_t *cairo, cairo_surface_t *image,
38 enum background_mode mode, int buffer_width, int buffer_height, 56 enum background_mode mode, int buffer_width, int buffer_height) {
39 int buffer_scale) {
40 double width = cairo_image_surface_get_width(image); 57 double width = cairo_image_surface_get_width(image);
41 double height = cairo_image_surface_get_height(image); 58 double height = cairo_image_surface_get_height(image);
42 59
@@ -93,6 +110,7 @@ void render_background_image(cairo_t *cairo, cairo_surface_t *image,
93 break; 110 break;
94 } 111 }
95 case BACKGROUND_MODE_SOLID_COLOR: 112 case BACKGROUND_MODE_SOLID_COLOR:
113 case BACKGROUND_MODE_INVALID:
96 assert(0); 114 assert(0);
97 break; 115 break;
98 } 116 }