diff options
author | Benjamin Otte <otte@redhat.com> | 2023-04-01 17:31:47 +0200 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2023-04-01 18:23:38 +0200 |
commit | 40ac6f22a3d2012488e54f72335ea9e9d7cf34a8 (patch) | |
tree | a40b3fa45749b5332708d846852a04f2afa4653d | |
parent | 1262477e171e014b97b1575de610bdd05dbeaa15 (diff) | |
download | gtk+-40ac6f22a3d2012488e54f72335ea9e9d7cf34a8.tar.gz |
wayland: Introduce GdkFractionalScale type
We want to use it later for various things, this just adds the
infrastructure we will need.
-rw-r--r-- | gdk/wayland/gdkprivate-wayland.h | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/gdk/wayland/gdkprivate-wayland.h b/gdk/wayland/gdkprivate-wayland.h index 73b934d371..0276d4c70d 100644 --- a/gdk/wayland/gdkprivate-wayland.h +++ b/gdk/wayland/gdkprivate-wayland.h @@ -47,6 +47,45 @@ */ #define GDK_WAYLAND_LOCAL_DND_MIME_TYPE "application/x-gtk-local-dnd" +#define GDK_FRACTIONAL_SCALE_FACTOR 120 + +typedef struct _GdkFractionalScale GdkFractionalScale; + +struct _GdkFractionalScale +{ + guint32 scale; +}; + +#define GDK_FRACTIONAL_SCALE_INIT(fractional_scale) (GdkFractionalScale) { fractional_scale } +#define GDK_FRACTIONAL_SCALE_INIT_INT(scale) GDK_FRACTIONAL_SCALE_INIT (scale * GDK_FRACTIONAL_SCALE_FACTOR) + +static inline int +gdk_fractional_scale_to_int (const GdkFractionalScale *self) +{ + /* ceil() */ + return (self->scale + GDK_FRACTIONAL_SCALE_FACTOR - 1) / GDK_FRACTIONAL_SCALE_FACTOR; +} + +static inline double +gdk_fractional_scale_to_double (const GdkFractionalScale *self) +{ + return (double) self->scale / GDK_FRACTIONAL_SCALE_FACTOR; +} + +static inline int +gdk_fractional_scale_scale (const GdkFractionalScale *self, + int value) +{ + return (value * self->scale + GDK_FRACTIONAL_SCALE_FACTOR / 2) / GDK_FRACTIONAL_SCALE_FACTOR; +} + +static inline gboolean +gdk_fractional_scale_equal (const GdkFractionalScale *a, + const GdkFractionalScale *b) +{ + return a->scale == b->scale; +} + GdkKeymap *_gdk_wayland_keymap_new (GdkDisplay *display); void _gdk_wayland_keymap_update_from_fd (GdkKeymap *keymap, uint32_t format, |