zoom-action: Use macros for subclassing boilerplate

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3387>
This commit is contained in:
Bilal Elmoussaoui 2023-11-12 11:55:11 +01:00
parent 09b7cd9f4a
commit 5fb78dfbad
3 changed files with 26 additions and 33 deletions

View File

@ -67,7 +67,6 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterText, g_object_unref)
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterTimeline, g_object_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterTimeline, g_object_unref)
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterTransitionGroup, g_object_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterTransitionGroup, g_object_unref)
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterTransition, g_object_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterTransition, g_object_unref)
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterZoomAction, g_object_unref)
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterActorBox, clutter_actor_box_free) G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterActorBox, clutter_actor_box_free)
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterColor, clutter_color_free) G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterColor, clutter_color_free)

View File

@ -69,7 +69,7 @@ typedef struct
gfloat transformed_update_y; gfloat transformed_update_y;
} ZoomPoint; } ZoomPoint;
struct _ClutterZoomActionPrivate typedef struct _ClutterZoomActionPrivate
{ {
ClutterStage *stage; ClutterStage *stage;
@ -87,7 +87,7 @@ struct _ClutterZoomActionPrivate
gdouble initial_scale_y; gdouble initial_scale_y;
gdouble zoom_initial_distance; gdouble zoom_initial_distance;
}; } ClutterZoomActionPrivate;
enum enum
{ {
@ -142,7 +142,8 @@ static gboolean
clutter_zoom_action_gesture_begin (ClutterGestureAction *action, clutter_zoom_action_gesture_begin (ClutterGestureAction *action,
ClutterActor *actor) ClutterActor *actor)
{ {
ClutterZoomActionPrivate *priv = ((ClutterZoomAction *) action)->priv; ClutterZoomActionPrivate *priv =
clutter_zoom_action_get_instance_private (CLUTTER_ZOOM_ACTION (action));
gfloat dx, dy; gfloat dx, dy;
capture_point_initial_position (action, actor, 0, &priv->points[0]); capture_point_initial_position (action, actor, 0, &priv->points[0]);
@ -179,7 +180,8 @@ static gboolean
clutter_zoom_action_gesture_progress (ClutterGestureAction *action, clutter_zoom_action_gesture_progress (ClutterGestureAction *action,
ClutterActor *actor) ClutterActor *actor)
{ {
ClutterZoomActionPrivate *priv = ((ClutterZoomAction *) action)->priv; ClutterZoomActionPrivate *priv =
clutter_zoom_action_get_instance_private (CLUTTER_ZOOM_ACTION (action));
gdouble distance, new_scale; gdouble distance, new_scale;
gfloat dx, dy; gfloat dx, dy;
gboolean retval; gboolean retval;
@ -210,7 +212,8 @@ static void
clutter_zoom_action_gesture_cancel (ClutterGestureAction *action, clutter_zoom_action_gesture_cancel (ClutterGestureAction *action,
ClutterActor *actor) ClutterActor *actor)
{ {
ClutterZoomActionPrivate *priv = ((ClutterZoomAction *) action)->priv; ClutterZoomActionPrivate *priv =
clutter_zoom_action_get_instance_private (CLUTTER_ZOOM_ACTION (action));
clutter_actor_set_translation (actor, clutter_actor_set_translation (actor,
priv->initial_x, priv->initial_x,
@ -275,12 +278,8 @@ clutter_zoom_action_class_init (ClutterZoomActionClass *klass)
static void static void
clutter_zoom_action_init (ClutterZoomAction *self) clutter_zoom_action_init (ClutterZoomAction *self)
{ {
ClutterGestureAction *gesture; clutter_gesture_action_set_n_touch_points (CLUTTER_GESTURE_ACTION (self),
2);
self->priv = clutter_zoom_action_get_instance_private (self);
gesture = CLUTTER_GESTURE_ACTION (self);
clutter_gesture_action_set_n_touch_points (gesture, 2);
} }
/** /**
@ -307,10 +306,14 @@ void
clutter_zoom_action_get_focal_point (ClutterZoomAction *action, clutter_zoom_action_get_focal_point (ClutterZoomAction *action,
graphene_point_t *point) graphene_point_t *point)
{ {
ClutterZoomActionPrivate *priv;
g_return_if_fail (CLUTTER_IS_ZOOM_ACTION (action)); g_return_if_fail (CLUTTER_IS_ZOOM_ACTION (action));
g_return_if_fail (point != NULL); g_return_if_fail (point != NULL);
*point = action->priv->focal_point; priv = clutter_zoom_action_get_instance_private (action);
*point = priv->focal_point;
} }
/** /**
@ -325,8 +328,12 @@ void
clutter_zoom_action_get_transformed_focal_point (ClutterZoomAction *action, clutter_zoom_action_get_transformed_focal_point (ClutterZoomAction *action,
graphene_point_t *point) graphene_point_t *point)
{ {
ClutterZoomActionPrivate *priv;
g_return_if_fail (CLUTTER_IS_ZOOM_ACTION (action)); g_return_if_fail (CLUTTER_IS_ZOOM_ACTION (action));
g_return_if_fail (point != NULL); g_return_if_fail (point != NULL);
*point = action->priv->transformed_focal_point; priv = clutter_zoom_action_get_instance_private (action);
*point = priv->transformed_focal_point;
} }

View File

@ -35,23 +35,13 @@
G_BEGIN_DECLS G_BEGIN_DECLS
#define CLUTTER_TYPE_ZOOM_ACTION (clutter_zoom_action_get_type ()) #define CLUTTER_TYPE_ZOOM_ACTION (clutter_zoom_action_get_type ())
#define CLUTTER_ZOOM_ACTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CLUTTER_TYPE_ZOOM_ACTION, ClutterZoomAction))
#define CLUTTER_IS_ZOOM_ACTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CLUTTER_TYPE_ZOOM_ACTION))
#define CLUTTER_ZOOM_ACTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CLUTTER_TYPE_ZOOM_ACTION, ClutterZoomActionClass))
#define CLUTTER_IS_ZOOM_ACTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CLUTTER_TYPE_ZOOM_ACTION))
#define CLUTTER_ZOOM_ACTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CLUTTER_TYPE_ZOOM_ACTION, ClutterZoomActionClass))
typedef struct _ClutterZoomAction ClutterZoomAction; CLUTTER_EXPORT
typedef struct _ClutterZoomActionPrivate ClutterZoomActionPrivate; G_DECLARE_DERIVABLE_TYPE (ClutterZoomAction,
typedef struct _ClutterZoomActionClass ClutterZoomActionClass; clutter_zoom_action,
CLUTTER,
struct _ClutterZoomAction ZOOM_ACTION,
{ ClutterGestureAction)
/*< private >*/
ClutterGestureAction parent_instance;
ClutterZoomActionPrivate *priv;
};
/** /**
* ClutterZoomActionClass: * ClutterZoomActionClass:
@ -66,9 +56,6 @@ struct _ClutterZoomActionClass
ClutterGestureActionClass parent_class; ClutterGestureActionClass parent_class;
}; };
CLUTTER_EXPORT
GType clutter_zoom_action_get_type (void) G_GNUC_CONST;
CLUTTER_EXPORT CLUTTER_EXPORT
ClutterAction * clutter_zoom_action_new (void); ClutterAction * clutter_zoom_action_new (void);