diff options
author | Matthias Clasen <mclasen@redhat.com> | 2016-04-09 15:20:07 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2016-04-09 15:48:34 -0400 |
commit | 9044f78751b1f795257bcd35ac37b8d39b0ae3be (patch) | |
tree | 100421d831ccc4333d771ba3e370079465a92c71 | |
parent | 6db7de3f7ba42d667c305d76aaef55f09e0c26d9 (diff) | |
download | gtk+-9044f78751b1f795257bcd35ac37b8d39b0ae3be.tar.gz |
Move GdkDeviceTool into its own files
-rw-r--r-- | gdk/Makefile.am | 3 | ||||
-rw-r--r-- | gdk/gdk.h | 1 | ||||
-rw-r--r-- | gdk/gdkdevice.c | 149 | ||||
-rw-r--r-- | gdk/gdkdevice.h | 103 | ||||
-rw-r--r-- | gdk/gdkdeviceprivate.h | 19 | ||||
-rw-r--r-- | gdk/gdkdevicetool.c | 173 | ||||
-rw-r--r-- | gdk/gdkdevicetool.h | 75 | ||||
-rw-r--r-- | gdk/gdkdevicetoolprivate.h | 46 | ||||
-rw-r--r-- | gdk/gdkevents.h | 1 | ||||
-rw-r--r-- | gdk/gdkseatdefault.c | 2 | ||||
-rw-r--r-- | gdk/gdktypes.h | 62 | ||||
-rw-r--r-- | gdk/wayland/gdkdevice-wayland.c | 1 | ||||
-rw-r--r-- | gdk/x11/gdkdevicemanager-xi2.c | 1 |
13 files changed, 366 insertions, 270 deletions
diff --git a/gdk/Makefile.am b/gdk/Makefile.am index d8340eec2c..b2d0c5c25e 100644 --- a/gdk/Makefile.am +++ b/gdk/Makefile.am @@ -66,6 +66,7 @@ gdk_public_h_sources = \ gdkcairo.h \ gdkcursor.h \ gdkdevice.h \ + gdkdevicetool.h \ gdkdevicemanager.h \ gdkdisplay.h \ gdkdisplaymanager.h \ @@ -106,6 +107,7 @@ gdk_private_headers = \ gdkcursorprivate.h \ gdkdevicemanagerprivate.h \ gdkdeviceprivate.h \ + gdkdevicetoolprivate.h \ gdkdisplaymanagerprivate.h \ gdkdisplayprivate.h \ gdkdndprivate.h \ @@ -133,6 +135,7 @@ gdk_c_sources = \ gdkcursor.c \ gdkdeprecated.c \ gdkdevice.c \ + gdkdevicetool.c \ gdkdevicemanager.c \ gdkdisplay.c \ gdkdisplaymanager.c \ @@ -33,6 +33,7 @@ #include <gdk/gdkcairo.h> #include <gdk/gdkcursor.h> #include <gdk/gdkdevice.h> +#include <gdk/gdkdevicetool.h> #include <gdk/gdkdevicemanager.h> #include <gdk/gdkdisplay.h> #include <gdk/gdkdisplaymanager.h> diff --git a/gdk/gdkdevice.c b/gdk/gdkdevice.c index 58c5d24fab..75c6cd2c6d 100644 --- a/gdk/gdkdevice.c +++ b/gdk/gdkdevice.c @@ -20,6 +20,7 @@ #include <math.h> #include "gdkdeviceprivate.h" +#include "gdkdevicetool.h" #include "gdkdisplayprivate.h" #include "gdkinternals.h" #include "gdkintl.h" @@ -2025,116 +2026,6 @@ gdk_device_get_axes (GdkDevice *device) return device->axis_flags; } -G_DEFINE_TYPE (GdkDeviceTool, gdk_device_tool, G_TYPE_OBJECT) - -enum { - TOOL_PROP_0, - TOOL_PROP_SERIAL, - TOOL_PROP_TOOL_TYPE, - TOOL_PROP_AXES, - N_TOOL_PROPS -}; - -GParamSpec *tool_props[N_TOOL_PROPS] = { 0 }; - -static void -gdk_device_tool_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) -{ - GdkDeviceTool *tool = GDK_DEVICE_TOOL (object); - - switch (prop_id) - { - case TOOL_PROP_SERIAL: - tool->serial = g_value_get_uint64 (value); - break; - case TOOL_PROP_TOOL_TYPE: - tool->type = g_value_get_enum (value); - break; - case TOOL_PROP_AXES: - tool->tool_axes = g_value_get_flags (value); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void -gdk_device_tool_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) -{ - GdkDeviceTool *tool = GDK_DEVICE_TOOL (object); - - switch (prop_id) - { - case TOOL_PROP_SERIAL: - g_value_set_uint64 (value, tool->serial); - break; - case TOOL_PROP_TOOL_TYPE: - g_value_set_enum (value, tool->type); - break; - case TOOL_PROP_AXES: - g_value_set_flags (value, tool->tool_axes); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void -gdk_device_tool_class_init (GdkDeviceToolClass *klass) -{ - GObjectClass *object_class = G_OBJECT_CLASS (klass); - - object_class->set_property = gdk_device_tool_set_property; - object_class->get_property = gdk_device_tool_get_property; - - tool_props[TOOL_PROP_SERIAL] = g_param_spec_uint64 ("serial", - "Serial", - "Serial number", - 0, G_MAXUINT64, 0, - G_PARAM_READWRITE | - G_PARAM_CONSTRUCT_ONLY); - tool_props[TOOL_PROP_TOOL_TYPE] = g_param_spec_enum ("tool-type", - "Tool type", - "Tool type", - GDK_TYPE_DEVICE_TOOL_TYPE, - GDK_DEVICE_TOOL_TYPE_UNKNOWN, - G_PARAM_READWRITE | - G_PARAM_CONSTRUCT_ONLY); - tool_props[TOOL_PROP_AXES] = g_param_spec_flags ("axes", - "Axes", - "Tool axes", - GDK_TYPE_AXIS_FLAGS, 0, - G_PARAM_READWRITE | - G_PARAM_CONSTRUCT_ONLY); - - g_object_class_install_properties (object_class, N_TOOL_PROPS, tool_props); -} - -static void -gdk_device_tool_init (GdkDeviceTool *tool) -{ -} - -GdkDeviceTool * -gdk_device_tool_new (guint64 serial, - GdkDeviceToolType type, - GdkAxisFlags tool_axes) -{ - return g_object_new (GDK_TYPE_DEVICE_TOOL, - "serial", serial, - "tool-type", type, - "axes", tool_axes, - NULL); -} - void gdk_device_update_tool (GdkDevice *device, GdkDeviceTool *tool) @@ -2145,41 +2036,3 @@ gdk_device_update_tool (GdkDevice *device, if (g_set_object (&device->last_tool, tool)) g_signal_emit (device, signals[TOOL_CHANGED], 0, tool); } - -/** - * gdk_device_tool_get_serial: - * @tool: a #GdkDeviceTool - * - * Gets the serial of this tool, this value can be used to identify a - * physical tool (eg. a tablet pen) across program executions. - * - * Returns: The serial ID for this tool - * - * Since: 3.22 - **/ -guint -gdk_device_tool_get_serial (GdkDeviceTool *tool) -{ - g_return_val_if_fail (tool != NULL, 0); - - return tool->serial; -} - -/** - * gdk_device_tool_get_tool_type: - * @tool: a #GdkDeviceTool - * - * Gets the #GdkDeviceToolType of the tool. - * - * Returns: The physical type for this tool. This can be used to figure out what - * sort of pen is being used, such as an airbrush or a pencil. - * - * Since: 3.22 - **/ -GdkDeviceToolType -gdk_device_tool_get_tool_type (GdkDeviceTool *tool) -{ - g_return_val_if_fail (tool != NULL, GDK_DEVICE_TOOL_TYPE_UNKNOWN); - - return tool->type; -} diff --git a/gdk/gdkdevice.h b/gdk/gdkdevice.h index 495c4dc20b..69fa99a01a 100644 --- a/gdk/gdkdevice.h +++ b/gdk/gdkdevice.h @@ -32,12 +32,7 @@ G_BEGIN_DECLS #define GDK_DEVICE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GDK_TYPE_DEVICE, GdkDevice)) #define GDK_IS_DEVICE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GDK_TYPE_DEVICE)) -#define GDK_TYPE_DEVICE_TOOL (gdk_device_tool_get_type ()) -#define GDK_DEVICE_TOOL(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GDK_TYPE_DEVICE_TOOL, GdkDeviceTool)) -#define GDK_IS_DEVICE_TOOL(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GDK_TYPE_DEVICE_TOOL)) - typedef struct _GdkTimeCoord GdkTimeCoord; -typedef struct _GdkDeviceTool GdkDeviceTool; /** * GdkInputSource: @@ -86,68 +81,6 @@ typedef enum } GdkInputMode; /** - * GdkAxisUse: - * @GDK_AXIS_IGNORE: the axis is ignored. - * @GDK_AXIS_X: the axis is used as the x axis. - * @GDK_AXIS_Y: the axis is used as the y axis. - * @GDK_AXIS_PRESSURE: the axis is used for pressure information. - * @GDK_AXIS_XTILT: the axis is used for x tilt information. - * @GDK_AXIS_YTILT: the axis is used for y tilt information. - * @GDK_AXIS_WHEEL: the axis is used for wheel information. - * @GDK_AXIS_DISTANCE: the axis is used for pen/tablet distance information. (Since: 3.22) - * @GDK_AXIS_ROTATION: the axis is used for pen rotation information. (Since: 3.22) - * @GDK_AXIS_SLIDER: the axis is used for pen slider information. (Since: 3.22) - * @GDK_AXIS_LAST: a constant equal to the numerically highest axis value. - * - * An enumeration describing the way in which a device - * axis (valuator) maps onto the predefined valuator - * types that GTK+ understands. - */ -typedef enum -{ - GDK_AXIS_IGNORE, - GDK_AXIS_X, - GDK_AXIS_Y, - GDK_AXIS_PRESSURE, - GDK_AXIS_XTILT, - GDK_AXIS_YTILT, - GDK_AXIS_WHEEL, - GDK_AXIS_DISTANCE, - GDK_AXIS_ROTATION, - GDK_AXIS_SLIDER, - GDK_AXIS_LAST -} GdkAxisUse; - -/** - * GdkAxisFlags: - * @GDK_AXIS_FLAG_X: X axis is present - * @GDK_AXIS_FLAG_Y: Y axis is present - * @GDK_AXIS_FLAG_PRESSURE: Pressure axis is present - * @GDK_AXIS_FLAG_XTILT: X tilt axis is present - * @GDK_AXIS_FLAG_YTILT: Y tilt axis is present - * @GDK_AXIS_FLAG_WHEEL: Wheel axis is present - * @GDK_AXIS_FLAG_DISTANCE: Distance axis is present - * @GDK_AXIS_FLAG_ROTATION: Z-axis rotation is present - * @GDK_AXIS_FLAG_SLIDER: Slider axis is present - * - * Flags describing the current capabilities of a device/tool. - * - * Since: 3.22 - */ -typedef enum -{ - GDK_AXIS_FLAG_X = 1 << GDK_AXIS_X, - GDK_AXIS_FLAG_Y = 1 << GDK_AXIS_Y, - GDK_AXIS_FLAG_PRESSURE = 1 << GDK_AXIS_PRESSURE, - GDK_AXIS_FLAG_XTILT = 1 << GDK_AXIS_XTILT, - GDK_AXIS_FLAG_YTILT = 1 << GDK_AXIS_YTILT, - GDK_AXIS_FLAG_WHEEL = 1 << GDK_AXIS_WHEEL, - GDK_AXIS_FLAG_DISTANCE = 1 << GDK_AXIS_DISTANCE, - GDK_AXIS_FLAG_ROTATION = 1 << GDK_AXIS_ROTATION, - GDK_AXIS_FLAG_SLIDER = 1 << GDK_AXIS_SLIDER, -} GdkAxisFlags; - -/** * GdkDeviceType: * @GDK_DEVICE_TYPE_MASTER: Device is a master (or virtual) device. There will * be an associated focus indicator on the screen. @@ -164,33 +97,6 @@ typedef enum { GDK_DEVICE_TYPE_FLOATING } GdkDeviceType; -/** - * GdkDeviceToolType: - * @GDK_DEVICE_TOOL_TYPE_UNKNOWN: Tool is of an unknown type. - * @GDK_DEVICE_TOOL_TYPE_PEN: Tool is a standard tablet stylus. - * @GDK_DEVICE_TOOL_TYPE_ERASER: Tool is standard tablet eraser. - * @GDK_DEVICE_TOOL_TYPE_BRUSH: Tool is a brush stylus. - * @GDK_DEVICE_TOOL_TYPE_PENCIL: Tool is a pencil stylus. - * @GDK_DEVICE_TOOL_TYPE_AIRBRUSH: Tool is an airbrush stylus. - * @GDK_DEVICE_TOOL_TYPE_MOUSE: Tool is a mouse. - * @GDK_DEVICE_TOOL_TYPE_LENS: Tool is a lens cursor. - * - * Indicates the specific type of tool being used being a tablet. Such as an - * airbrush, pencil, etc. - * - * Since: 3.22 - */ -typedef enum { - GDK_DEVICE_TOOL_TYPE_UNKNOWN, - GDK_DEVICE_TOOL_TYPE_PEN, - GDK_DEVICE_TOOL_TYPE_ERASER, - GDK_DEVICE_TOOL_TYPE_BRUSH, - GDK_DEVICE_TOOL_TYPE_PENCIL, - GDK_DEVICE_TOOL_TYPE_AIRBRUSH, - GDK_DEVICE_TOOL_TYPE_MOUSE, - GDK_DEVICE_TOOL_TYPE_LENS, -} GdkDeviceToolType; - /* We don't allocate each coordinate this big, but we use it to * be ANSI compliant and avoid accessing past the defined limits. */ @@ -352,15 +258,6 @@ GdkSeat *gdk_device_get_seat (GdkDevice *device); GDK_AVAILABLE_IN_3_22 GdkAxisFlags gdk_device_get_axes (GdkDevice *device); -GDK_AVAILABLE_IN_3_22 -GType gdk_device_tool_get_type (void) G_GNUC_CONST; - -GDK_AVAILABLE_IN_3_22 -guint gdk_device_tool_get_serial (GdkDeviceTool *tool); - -GDK_AVAILABLE_IN_3_22 -GdkDeviceToolType gdk_device_tool_get_tool_type (GdkDeviceTool *tool); - G_END_DECLS #endif /* __GDK_DEVICE_H__ */ diff --git a/gdk/gdkdeviceprivate.h b/gdk/gdkdeviceprivate.h index d0007ea9b4..2bf96eb6c1 100644 --- a/gdk/gdkdeviceprivate.h +++ b/gdk/gdkdeviceprivate.h @@ -19,6 +19,7 @@ #define __GDK_DEVICE_PRIVATE_H__ #include "gdkdevice.h" +#include "gdkdevicetool.h" #include "gdkdevicemanager.h" #include "gdkevents.h" #include "gdkseat.h" @@ -30,22 +31,8 @@ G_BEGIN_DECLS #define GDK_DEVICE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GDK_TYPE_DEVICE, GdkDeviceClass)) typedef struct _GdkDeviceClass GdkDeviceClass; -typedef struct _GdkDeviceToolClass GdkDeviceToolClass; typedef struct _GdkDeviceKey GdkDeviceKey; -struct _GdkDeviceTool -{ - GObject parent_instance; - guint64 serial; - GdkDeviceToolType type; - GdkAxisFlags tool_axes; -}; - -struct _GdkDeviceToolClass -{ - GObjectClass parent_class; -}; - struct _GdkDeviceKey { guint keyval; @@ -199,10 +186,6 @@ GdkWindow * _gdk_device_window_at_position (GdkDevice *device, void gdk_device_set_seat (GdkDevice *device, GdkSeat *seat); -/* Device tools */ -GdkDeviceTool *gdk_device_tool_new (guint64 serial, - GdkDeviceToolType type, - GdkAxisFlags tool_axes); void gdk_device_update_tool (GdkDevice *device, GdkDeviceTool *tool); diff --git a/gdk/gdkdevicetool.c b/gdk/gdkdevicetool.c new file mode 100644 index 0000000000..54076b6481 --- /dev/null +++ b/gdk/gdkdevicetool.c @@ -0,0 +1,173 @@ +/* GDK - The GIMP Drawing Kit + * Copyright (C) 2009 Carlos Garnacho <carlosg@gnome.org> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <math.h> + +#include "gdkdevicetoolprivate.h" +#include "gdkinternals.h" +#include "gdkintl.h" + + +G_DEFINE_TYPE (GdkDeviceTool, gdk_device_tool, G_TYPE_OBJECT) + +enum { + TOOL_PROP_0, + TOOL_PROP_SERIAL, + TOOL_PROP_TOOL_TYPE, + TOOL_PROP_AXES, + N_TOOL_PROPS +}; + +GParamSpec *tool_props[N_TOOL_PROPS] = { 0 }; + +static void +gdk_device_tool_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + GdkDeviceTool *tool = GDK_DEVICE_TOOL (object); + + switch (prop_id) + { + case TOOL_PROP_SERIAL: + tool->serial = g_value_get_uint64 (value); + break; + case TOOL_PROP_TOOL_TYPE: + tool->type = g_value_get_enum (value); + break; + case TOOL_PROP_AXES: + tool->tool_axes = g_value_get_flags (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +gdk_device_tool_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + GdkDeviceTool *tool = GDK_DEVICE_TOOL (object); + + switch (prop_id) + { + case TOOL_PROP_SERIAL: + g_value_set_uint64 (value, tool->serial); + break; + case TOOL_PROP_TOOL_TYPE: + g_value_set_enum (value, tool->type); + break; + case TOOL_PROP_AXES: + g_value_set_flags (value, tool->tool_axes); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +gdk_device_tool_class_init (GdkDeviceToolClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + object_class->set_property = gdk_device_tool_set_property; + object_class->get_property = gdk_device_tool_get_property; + + tool_props[TOOL_PROP_SERIAL] = g_param_spec_uint64 ("serial", + "Serial", + "Serial number", + 0, G_MAXUINT64, 0, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY); + tool_props[TOOL_PROP_TOOL_TYPE] = g_param_spec_enum ("tool-type", + "Tool type", + "Tool type", + GDK_TYPE_DEVICE_TOOL_TYPE, + GDK_DEVICE_TOOL_TYPE_UNKNOWN, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY); + tool_props[TOOL_PROP_AXES] = g_param_spec_flags ("axes", + "Axes", + "Tool axes", + GDK_TYPE_AXIS_FLAGS, 0, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY); + + g_object_class_install_properties (object_class, N_TOOL_PROPS, tool_props); +} + +static void +gdk_device_tool_init (GdkDeviceTool *tool) +{ +} + +GdkDeviceTool * +gdk_device_tool_new (guint64 serial, + GdkDeviceToolType type, + GdkAxisFlags tool_axes) +{ + return g_object_new (GDK_TYPE_DEVICE_TOOL, + "serial", serial, + "tool-type", type, + "axes", tool_axes, + NULL); +} + +/** + * gdk_device_tool_get_serial: + * @tool: a #GdkDeviceTool + * + * Gets the serial of this tool, this value can be used to identify a + * physical tool (eg. a tablet pen) across program executions. + * + * Returns: The serial ID for this tool + * + * Since: 3.22 + **/ +guint +gdk_device_tool_get_serial (GdkDeviceTool *tool) +{ + g_return_val_if_fail (tool != NULL, 0); + + return tool->serial; +} + +/** + * gdk_device_tool_get_tool_type: + * @tool: a #GdkDeviceTool + * + * Gets the #GdkDeviceToolType of the tool. + * + * Returns: The physical type for this tool. This can be used to figure out what + * sort of pen is being used, such as an airbrush or a pencil. + * + * Since: 3.22 + **/ +GdkDeviceToolType +gdk_device_tool_get_tool_type (GdkDeviceTool *tool) +{ + g_return_val_if_fail (tool != NULL, GDK_DEVICE_TOOL_TYPE_UNKNOWN); + + return tool->type; +} diff --git a/gdk/gdkdevicetool.h b/gdk/gdkdevicetool.h new file mode 100644 index 0000000000..9a00d8a866 --- /dev/null +++ b/gdk/gdkdevicetool.h @@ -0,0 +1,75 @@ +/* GDK - The GIMP Drawing Kit + * Copyright (C) 2009 Carlos Garnacho <carlosg@gnome.org> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef __GDK_DEVICE_TOOL_H__ +#define __GDK_DEVICE_TOOL_H__ + +#if !defined (__GDK_H_INSIDE__) && !defined (GDK_COMPILATION) +#error "Only <gdk/gdk.h> can be included directly." +#endif + +#include <gdk/gdkversionmacros.h> +#include <gdk/gdktypes.h> + + +G_BEGIN_DECLS + +#define GDK_TYPE_DEVICE_TOOL (gdk_device_tool_get_type ()) +#define GDK_DEVICE_TOOL(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GDK_TYPE_DEVICE_TOOL, GdkDeviceTool)) +#define GDK_IS_DEVICE_TOOL(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GDK_TYPE_DEVICE_TOOL)) + +typedef struct _GdkDeviceTool GdkDeviceTool; + +/** + * GdkDeviceToolType: + * @GDK_DEVICE_TOOL_TYPE_UNKNOWN: Tool is of an unknown type. + * @GDK_DEVICE_TOOL_TYPE_PEN: Tool is a standard tablet stylus. + * @GDK_DEVICE_TOOL_TYPE_ERASER: Tool is standard tablet eraser. + * @GDK_DEVICE_TOOL_TYPE_BRUSH: Tool is a brush stylus. + * @GDK_DEVICE_TOOL_TYPE_PENCIL: Tool is a pencil stylus. + * @GDK_DEVICE_TOOL_TYPE_AIRBRUSH: Tool is an airbrush stylus. + * @GDK_DEVICE_TOOL_TYPE_MOUSE: Tool is a mouse. + * @GDK_DEVICE_TOOL_TYPE_LENS: Tool is a lens cursor. + * + * Indicates the specific type of tool being used being a tablet. Such as an + * airbrush, pencil, etc. + * + * Since: 3.22 + */ +typedef enum { + GDK_DEVICE_TOOL_TYPE_UNKNOWN, + GDK_DEVICE_TOOL_TYPE_PEN, + GDK_DEVICE_TOOL_TYPE_ERASER, + GDK_DEVICE_TOOL_TYPE_BRUSH, + GDK_DEVICE_TOOL_TYPE_PENCIL, + GDK_DEVICE_TOOL_TYPE_AIRBRUSH, + GDK_DEVICE_TOOL_TYPE_MOUSE, + GDK_DEVICE_TOOL_TYPE_LENS, +} GdkDeviceToolType; + +GDK_AVAILABLE_IN_3_22 +GType gdk_device_tool_get_type (void) G_GNUC_CONST; + +GDK_AVAILABLE_IN_3_22 +guint gdk_device_tool_get_serial (GdkDeviceTool *tool); + +GDK_AVAILABLE_IN_3_22 +GdkDeviceToolType gdk_device_tool_get_tool_type (GdkDeviceTool *tool); + +G_END_DECLS + +#endif /* __GDK_DEVICE_TOOL_H__ */ diff --git a/gdk/gdkdevicetoolprivate.h b/gdk/gdkdevicetoolprivate.h new file mode 100644 index 0000000000..ff9a40403e --- /dev/null +++ b/gdk/gdkdevicetoolprivate.h @@ -0,0 +1,46 @@ +/* GDK - The GIMP Drawing Kit + * Copyright (C) 2009 Carlos Garnacho <carlosg@gnome.org> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef __GDK_DEVICE_TOOL_PRIVATE_H__ +#define __GDK_DEVICE_TOOL_PRIVATE_H__ + +#include "gdkdevicetool.h" + +G_BEGIN_DECLS + +typedef struct _GdkDeviceToolClass GdkDeviceToolClass; + +struct _GdkDeviceTool +{ + GObject parent_instance; + guint64 serial; + GdkDeviceToolType type; + GdkAxisFlags tool_axes; +}; + +struct _GdkDeviceToolClass +{ + GObjectClass parent_class; +}; + +GdkDeviceTool *gdk_device_tool_new (guint64 serial, + GdkDeviceToolType type, + GdkAxisFlags tool_axes); + +G_END_DECLS + +#endif /* __GDK_DEVICE_TOOL_PRIVATE_H__ */ diff --git a/gdk/gdkevents.h b/gdk/gdkevents.h index 286b051fd8..3e7824f5cc 100644 --- a/gdk/gdkevents.h +++ b/gdk/gdkevents.h @@ -33,6 +33,7 @@ #include <gdk/gdktypes.h> #include <gdk/gdkdnd.h> #include <gdk/gdkdevice.h> +#include <gdk/gdkdevicetool.h> G_BEGIN_DECLS diff --git a/gdk/gdkseatdefault.c b/gdk/gdkseatdefault.c index 87150642c9..dc3f2887d3 100644 --- a/gdk/gdkseatdefault.c +++ b/gdk/gdkseatdefault.c @@ -18,7 +18,7 @@ */ #include "gdkseatdefaultprivate.h" -#include "gdkdeviceprivate.h" +#include "gdkdevicetoolprivate.h" typedef struct _GdkSeatDefaultPrivate GdkSeatDefaultPrivate; diff --git a/gdk/gdktypes.h b/gdk/gdktypes.h index 01366fd6b7..690cc499e1 100644 --- a/gdk/gdktypes.h +++ b/gdk/gdktypes.h @@ -529,6 +529,68 @@ typedef enum GDK_WINDOW_TYPE_HINT_DND } GdkWindowTypeHint; +/** + * GdkAxisUse: + * @GDK_AXIS_IGNORE: the axis is ignored. + * @GDK_AXIS_X: the axis is used as the x axis. + * @GDK_AXIS_Y: the axis is used as the y axis. + * @GDK_AXIS_PRESSURE: the axis is used for pressure information. + * @GDK_AXIS_XTILT: the axis is used for x tilt information. + * @GDK_AXIS_YTILT: the axis is used for y tilt information. + * @GDK_AXIS_WHEEL: the axis is used for wheel information. + * @GDK_AXIS_DISTANCE: the axis is used for pen/tablet distance information. (Since: 3.22) + * @GDK_AXIS_ROTATION: the axis is used for pen rotation information. (Since: 3.22) + * @GDK_AXIS_SLIDER: the axis is used for pen slider information. (Since: 3.22) + * @GDK_AXIS_LAST: a constant equal to the numerically highest axis value. + * + * An enumeration describing the way in which a device + * axis (valuator) maps onto the predefined valuator + * types that GTK+ understands. + */ +typedef enum +{ + GDK_AXIS_IGNORE, + GDK_AXIS_X, + GDK_AXIS_Y, + GDK_AXIS_PRESSURE, + GDK_AXIS_XTILT, + GDK_AXIS_YTILT, + GDK_AXIS_WHEEL, + GDK_AXIS_DISTANCE, + GDK_AXIS_ROTATION, + GDK_AXIS_SLIDER, + GDK_AXIS_LAST +} GdkAxisUse; + +/** + * GdkAxisFlags: + * @GDK_AXIS_FLAG_X: X axis is present + * @GDK_AXIS_FLAG_Y: Y axis is present + * @GDK_AXIS_FLAG_PRESSURE: Pressure axis is present + * @GDK_AXIS_FLAG_XTILT: X tilt axis is present + * @GDK_AXIS_FLAG_YTILT: Y tilt axis is present + * @GDK_AXIS_FLAG_WHEEL: Wheel axis is present + * @GDK_AXIS_FLAG_DISTANCE: Distance axis is present + * @GDK_AXIS_FLAG_ROTATION: Z-axis rotation is present + * @GDK_AXIS_FLAG_SLIDER: Slider axis is present + * + * Flags describing the current capabilities of a device/tool. + * + * Since: 3.22 + */ +typedef enum +{ + GDK_AXIS_FLAG_X = 1 << GDK_AXIS_X, + GDK_AXIS_FLAG_Y = 1 << GDK_AXIS_Y, + GDK_AXIS_FLAG_PRESSURE = 1 << GDK_AXIS_PRESSURE, + GDK_AXIS_FLAG_XTILT = 1 << GDK_AXIS_XTILT, + GDK_AXIS_FLAG_YTILT = 1 << GDK_AXIS_YTILT, + GDK_AXIS_FLAG_WHEEL = 1 << GDK_AXIS_WHEEL, + GDK_AXIS_FLAG_DISTANCE = 1 << GDK_AXIS_DISTANCE, + GDK_AXIS_FLAG_ROTATION = 1 << GDK_AXIS_ROTATION, + GDK_AXIS_FLAG_SLIDER = 1 << GDK_AXIS_SLIDER, +} GdkAxisFlags; + G_END_DECLS #endif /* __GDK_TYPES_H__ */ diff --git a/gdk/wayland/gdkdevice-wayland.c b/gdk/wayland/gdkdevice-wayland.c index 3ba1f4d793..0b18211155 100644 --- a/gdk/wayland/gdkdevice-wayland.c +++ b/gdk/wayland/gdkdevice-wayland.c @@ -29,6 +29,7 @@ #include "gdkwayland.h" #include "gdkkeysyms.h" #include "gdkdeviceprivate.h" +#include "gdkdevicetoolprivate.h" #include "gdkdevicemanagerprivate.h" #include "gdkseatprivate.h" #include "pointer-gestures-unstable-v1-client-protocol.h" diff --git a/gdk/x11/gdkdevicemanager-xi2.c b/gdk/x11/gdkdevicemanager-xi2.c index 497a18a9fd..836f455abb 100644 --- a/gdk/x11/gdkdevicemanager-xi2.c +++ b/gdk/x11/gdkdevicemanager-xi2.c @@ -22,6 +22,7 @@ #include "gdkdevicemanagerprivate-core.h" #include "gdkdeviceprivate.h" +#include "gdkdevicetoolprivate.h" #include "gdkdisplayprivate.h" #include "gdkeventtranslator.h" #include "gdkprivate-x11.h" |