summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2023-04-01 17:31:47 +0200
committerBenjamin Otte <otte@redhat.com>2023-04-01 18:23:38 +0200
commit40ac6f22a3d2012488e54f72335ea9e9d7cf34a8 (patch)
treea40b3fa45749b5332708d846852a04f2afa4653d
parent1262477e171e014b97b1575de610bdd05dbeaa15 (diff)
downloadgtk+-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.h39
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,