diff options
author | Drew DeVault <sir@cmpwn.com> | 2019-04-25 11:03:40 -0400 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2019-04-25 11:03:40 -0400 |
commit | 34e4a47a8675ad2183fb34b0f93699a5a3c21258 (patch) | |
tree | a05f189144d2758cc44d70bbea79fbe136c9bc48 /include | |
parent | 3ee910d46840771bf32bfd8776ff8bb25853d216 (diff) | |
download | swaybg-34e4a47a8675ad2183fb34b0f93699a5a3c21258.tar.gz swaybg-34e4a47a8675ad2183fb34b0f93699a5a3c21258.tar.bz2 |
Split swaybg into a standalone project
Diffstat (limited to 'include')
-rw-r--r-- | include/background-image.h | 20 | ||||
-rw-r--r-- | include/cairo.h | 25 | ||||
-rw-r--r-- | include/log.h | 36 | ||||
-rw-r--r-- | include/meson.build | 1 | ||||
-rw-r--r-- | include/pool-buffer.h | 22 |
5 files changed, 104 insertions, 0 deletions
diff --git a/include/background-image.h b/include/background-image.h new file mode 100644 index 0000000..15935ff --- /dev/null +++ b/include/background-image.h @@ -0,0 +1,20 @@ +#ifndef _SWAY_BACKGROUND_IMAGE_H +#define _SWAY_BACKGROUND_IMAGE_H +#include "cairo.h" + +enum background_mode { + BACKGROUND_MODE_STRETCH, + BACKGROUND_MODE_FILL, + BACKGROUND_MODE_FIT, + BACKGROUND_MODE_CENTER, + BACKGROUND_MODE_TILE, + BACKGROUND_MODE_SOLID_COLOR, + BACKGROUND_MODE_INVALID, +}; + +enum background_mode parse_background_mode(const char *mode); +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); + +#endif diff --git a/include/cairo.h b/include/cairo.h new file mode 100644 index 0000000..15664cd --- /dev/null +++ b/include/cairo.h @@ -0,0 +1,25 @@ +#ifndef _SWAY_CAIRO_H +#define _SWAY_CAIRO_H + +#include "config.h" +#include <stdint.h> +#include <cairo/cairo.h> +#include <wayland-client.h> +#if HAVE_GDK_PIXBUF +#include <gdk-pixbuf/gdk-pixbuf.h> +#endif + +void cairo_set_source_u32(cairo_t *cairo, uint32_t color); +cairo_subpixel_order_t to_cairo_subpixel_order(enum wl_output_subpixel subpixel); + +cairo_surface_t *cairo_image_surface_scale(cairo_surface_t *image, + int width, int height); + +#if HAVE_GDK_PIXBUF + +cairo_surface_t* gdk_cairo_image_surface_create_from_pixbuf( + const GdkPixbuf *gdkbuf); + +#endif // HAVE_GDK_PIXBUF + +#endif diff --git a/include/log.h b/include/log.h new file mode 100644 index 0000000..eaa265a --- /dev/null +++ b/include/log.h @@ -0,0 +1,36 @@ +#ifndef _SWAYBG_LOG_H +#define _SWAYBG_LOG_H + +#include <stdarg.h> +#include <string.h> +#include <errno.h> + +enum log_importance { + LOG_SILENT = 0, + LOG_ERROR = 1, + LOG_INFO = 2, + LOG_DEBUG = 3, + LOG_IMPORTANCE_LAST, +}; + +void swaybg_log_init(enum log_importance verbosity); + +#ifdef __GNUC__ +#define _ATTRIB_PRINTF(start, end) __attribute__((format(printf, start, end))) +#else +#define _ATTRIB_PRINTF(start, end) +#endif + +void _swaybg_log(enum log_importance verbosity, const char *format, ...) + _ATTRIB_PRINTF(2, 3); + +const char *_swaybg_strip_path(const char *filepath); + +#define swaybg_log(verb, fmt, ...) \ + _swaybg_log(verb, "[%s:%d] " fmt, _swaybg_strip_path(__FILE__), \ + __LINE__, ##__VA_ARGS__) + +#define swaybg_log_errno(verb, fmt, ...) \ + swaybg_log(verb, fmt ": %s", ##__VA_ARGS__, strerror(errno)) + +#endif diff --git a/include/meson.build b/include/meson.build new file mode 100644 index 0000000..65ed027 --- /dev/null +++ b/include/meson.build @@ -0,0 +1 @@ +configure_file(output: 'config.h', configuration: conf_data) diff --git a/include/pool-buffer.h b/include/pool-buffer.h new file mode 100644 index 0000000..0ebf787 --- /dev/null +++ b/include/pool-buffer.h @@ -0,0 +1,22 @@ +#ifndef _SWAY_BUFFERS_H +#define _SWAY_BUFFERS_H +#include <cairo/cairo.h> +#include <stdbool.h> +#include <stdint.h> +#include <wayland-client.h> + +struct pool_buffer { + struct wl_buffer *buffer; + cairo_surface_t *surface; + cairo_t *cairo; + uint32_t width, height; + void *data; + size_t size; + bool busy; +}; + +struct pool_buffer *get_next_buffer(struct wl_shm *shm, + struct pool_buffer pool[static 2], uint32_t width, uint32_t height); +void destroy_buffer(struct pool_buffer *buffer); + +#endif |