From 33b5210a6a69c04c8de7589ac8c0b86c38ce75c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Sun, 18 Aug 2019 17:59:43 +0200 Subject: [PATCH] refactor: break out stride calculation to new function --- font.c | 4 ++-- shm.c | 6 ++---- stride.h | 9 +++++++++ 3 files changed, 13 insertions(+), 6 deletions(-) create mode 100644 stride.h diff --git a/font.c b/font.c index 17c66e1e..816b7e37 100644 --- a/font.c +++ b/font.c @@ -10,6 +10,7 @@ #define LOG_MODULE "font" #define LOG_ENABLE_DBG 0 #include "log.h" +#include "stride.h" #define min(x, y) ((x) < (y) ? (x) : (y)) @@ -392,8 +393,7 @@ glyph_for_wchar(struct font *font, wchar_t wc, struct glyph *glyph) break; } - /* Calculate stride. Copied from cairoint.h:CAIRO_STRIDE_FOR_WIDTH_BPP */ - int stride = (((PIXMAN_FORMAT_BPP(pix_format) * width + 7) / 8 + 4 - 1) & -4); + int stride = stride_for_format_and_width(pix_format, width); assert(stride >= bitmap->pitch); uint8_t *data = malloc(rows * stride); diff --git a/shm.c b/shm.c index ebff8a1a..7476aef5 100644 --- a/shm.c +++ b/shm.c @@ -11,6 +11,7 @@ #define LOG_MODULE "shm" #include "log.h" +#include "stride.h" #include "tllist.h" static tll(struct buffer) buffers; @@ -69,10 +70,7 @@ shm_get_buffer(struct wl_shm *shm, int width, int height, size_t copies) goto err; } - /* TODO: copied from font.c */ - /* Calculate stride. Copied from cairoint.h:CAIRO_STRIDE_FOR_WIDTH_BPP */ - int bpp = 32; - const int stride = (((bpp * width + 7) / 8 + 4 - 1) & -4); + const int stride = stride_for_format_and_width(PIXMAN_a8r8g8b8, width); /* Total size */ size = stride * height; diff --git a/stride.h b/stride.h new file mode 100644 index 00000000..b2c71a71 --- /dev/null +++ b/stride.h @@ -0,0 +1,9 @@ +#pragma once + +#include + +static inline int +stride_for_format_and_width(pixman_format_code_t format, int width) +{ + return (((PIXMAN_FORMAT_BPP(format) * width + 7) / 8 + 4 - 1) & -4); +}