clutter: Drop default "zoom" action in ClutterZoomAction

Separate mechanism and effect, and let any ClutterZoomAction
users apply any necessary transformations.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2024>
This commit is contained in:
Carlos Garnacho 2021-06-18 16:45:21 +02:00
parent f4b26559d3
commit 94abaf247b
2 changed files with 1 additions and 56 deletions

View File

@ -235,51 +235,6 @@ clutter_zoom_action_gesture_cancel (ClutterGestureAction *action,
clutter_actor_set_scale (actor, priv->initial_scale_x, priv->initial_scale_y); clutter_actor_set_scale (actor, priv->initial_scale_x, priv->initial_scale_y);
} }
static gboolean
clutter_zoom_action_real_zoom (ClutterZoomAction *action,
ClutterActor *actor,
graphene_point_t *focal_point,
gdouble factor)
{
ClutterZoomActionPrivate *priv = action->priv;
gfloat x, y, z;
gdouble scale_x, scale_y;
graphene_point3d_t out, in;
in.x = priv->transformed_focal_point.x;
in.y = priv->transformed_focal_point.y;
in.z = 0;
clutter_actor_apply_transform_to_point (actor, &in, &out);
clutter_actor_get_scale (actor, &scale_x, &scale_y);
switch (priv->zoom_axis)
{
case CLUTTER_ZOOM_BOTH:
clutter_actor_set_scale (actor, factor, factor);
break;
case CLUTTER_ZOOM_X_AXIS:
clutter_actor_set_scale (actor, factor, scale_y);
break;
case CLUTTER_ZOOM_Y_AXIS:
clutter_actor_set_scale (actor, scale_x, factor);
break;
default:
break;
}
x = priv->initial_x + priv->focal_point.x - priv->initial_focal_point.x;
y = priv->initial_y + priv->focal_point.y - priv->initial_focal_point.y;
clutter_actor_get_translation (actor, NULL, NULL, &z);
clutter_actor_set_translation (actor, x, y, z);
return TRUE;
}
static void static void
clutter_zoom_action_set_property (GObject *gobject, clutter_zoom_action_set_property (GObject *gobject,
guint prop_id, guint prop_id,
@ -349,8 +304,6 @@ clutter_zoom_action_class_init (ClutterZoomActionClass *klass)
gesture_class->gesture_progress = clutter_zoom_action_gesture_progress; gesture_class->gesture_progress = clutter_zoom_action_gesture_progress;
gesture_class->gesture_cancel = clutter_zoom_action_gesture_cancel; gesture_class->gesture_cancel = clutter_zoom_action_gesture_cancel;
klass->zoom = clutter_zoom_action_real_zoom;
/** /**
* ClutterZoomAction:zoom-axis: * ClutterZoomAction:zoom-axis:
* *
@ -395,8 +348,7 @@ clutter_zoom_action_class_init (ClutterZoomActionClass *klass)
g_signal_new (I_("zoom"), g_signal_new (I_("zoom"),
G_TYPE_FROM_CLASS (klass), G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_LAST, G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (ClutterZoomActionClass, zoom), 0, g_signal_accumulator_true_handled, NULL,
_clutter_boolean_continue_accumulator, NULL,
_clutter_marshal_BOOLEAN__OBJECT_BOXED_DOUBLE, _clutter_marshal_BOOLEAN__OBJECT_BOXED_DOUBLE,
G_TYPE_BOOLEAN, 3, G_TYPE_BOOLEAN, 3,
CLUTTER_TYPE_ACTOR, CLUTTER_TYPE_ACTOR,

View File

@ -76,13 +76,6 @@ struct _ClutterZoomActionClass
/*< private >*/ /*< private >*/
ClutterGestureActionClass parent_class; ClutterGestureActionClass parent_class;
/*< public >*/
gboolean (* zoom) (ClutterZoomAction *action,
ClutterActor *actor,
graphene_point_t *focal_point,
gdouble factor);
/*< private >*/
void (* _clutter_zoom_action1) (void); void (* _clutter_zoom_action1) (void);
void (* _clutter_zoom_action2) (void); void (* _clutter_zoom_action2) (void);
void (* _clutter_zoom_action3) (void); void (* _clutter_zoom_action3) (void);