aboutsummaryrefslogtreecommitdiff
path: root/common/background-image.c
diff options
context:
space:
mode:
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 @@
#include "background-image.h"
#include "cairo.h"
+enum background_mode parse_background_mode(const char *mode) {
+ if (strcmp(mode, "stretch") == 0) {
+ return BACKGROUND_MODE_STRETCH;
+ } else if (strcmp(mode, "fill") == 0) {
+ return BACKGROUND_MODE_FILL;
+ } else if (strcmp(mode, "fit") == 0) {
+ return BACKGROUND_MODE_FIT;
+ } else if (strcmp(mode, "center") == 0) {
+ return BACKGROUND_MODE_CENTER;
+ } else if (strcmp(mode, "tile") == 0) {
+ return BACKGROUND_MODE_TILE;
+ } else if (strcmp(mode, "solid_color") == 0) {
+ return BACKGROUND_MODE_SOLID_COLOR;
+ }
+ wlr_log(L_ERROR, "Unsupported background mode: %s", mode);
+ return BACKGROUND_MODE_INVALID;
+}
+
cairo_surface_t *load_background_image(const char *path) {
cairo_surface_t *image;
#ifdef HAVE_GDK_PIXBUF
@@ -35,8 +53,7 @@ cairo_surface_t *load_background_image(const char *path) {
}
void render_background_image(cairo_t *cairo, cairo_surface_t *image,
- enum background_mode mode, int buffer_width, int buffer_height,
- int buffer_scale) {
+ enum background_mode mode, int buffer_width, int buffer_height) {
double width = cairo_image_surface_get_width(image);
double height = cairo_image_surface_get_height(image);
@@ -93,6 +110,7 @@ void render_background_image(cairo_t *cairo, cairo_surface_t *image,
break;
}
case BACKGROUND_MODE_SOLID_COLOR:
+ case BACKGROUND_MODE_INVALID:
assert(0);
break;
}