mirror of
https://github.com/brl/mutter.git
synced 2024-11-26 18:11:05 -05:00
actor: Add minification/magnification filters
These settings are informative, and will only be used by the eventual content of an actor.
This commit is contained in:
parent
cadae5b325
commit
77729c7362
@ -166,7 +166,9 @@
|
|||||||
* clutter_actor_get_allocation_box (actor, &box);
|
* clutter_actor_get_allocation_box (actor, &box);
|
||||||
*
|
*
|
||||||
* /* the cogl_texture variable is set elsewhere */
|
* /* the cogl_texture variable is set elsewhere */
|
||||||
* node = clutter_texture_node_new (cogl_texture, CLUTTER_COLOR_White);
|
* node = clutter_texture_node_new (cogl_texture, CLUTTER_COLOR_White,
|
||||||
|
* CLUTTER_SCALING_FILTER_BILINEAR,
|
||||||
|
* CLUTTER_SCALING_FILTER_LINEAR);
|
||||||
*
|
*
|
||||||
* /* paint the content of the node using the allocation */
|
* /* paint the content of the node using the allocation */
|
||||||
* clutter_paint_node_add_rectangle (node, &box);
|
* clutter_paint_node_add_rectangle (node, &box);
|
||||||
@ -588,6 +590,8 @@ struct _ClutterActorPrivate
|
|||||||
ClutterContent *content;
|
ClutterContent *content;
|
||||||
|
|
||||||
ClutterContentGravity content_gravity;
|
ClutterContentGravity content_gravity;
|
||||||
|
ClutterScalingFilter min_filter;
|
||||||
|
ClutterScalingFilter mag_filter;
|
||||||
|
|
||||||
/* used when painting, to update the paint volume */
|
/* used when painting, to update the paint volume */
|
||||||
ClutterEffect *current_effect;
|
ClutterEffect *current_effect;
|
||||||
@ -754,6 +758,8 @@ enum
|
|||||||
PROP_CONTENT,
|
PROP_CONTENT,
|
||||||
PROP_CONTENT_GRAVITY,
|
PROP_CONTENT_GRAVITY,
|
||||||
PROP_CONTENT_BOX,
|
PROP_CONTENT_BOX,
|
||||||
|
PROP_MINIFICATION_FILTER,
|
||||||
|
PROP_MAGNIFICATION_FILTER,
|
||||||
|
|
||||||
PROP_LAST
|
PROP_LAST
|
||||||
};
|
};
|
||||||
@ -4471,6 +4477,18 @@ clutter_actor_set_property (GObject *object,
|
|||||||
clutter_actor_set_content_gravity (actor, g_value_get_enum (value));
|
clutter_actor_set_content_gravity (actor, g_value_get_enum (value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case PROP_MINIFICATION_FILTER:
|
||||||
|
clutter_actor_set_content_scaling_filters (actor,
|
||||||
|
g_value_get_enum (value),
|
||||||
|
actor->priv->mag_filter);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PROP_MAGNIFICATION_FILTER:
|
||||||
|
clutter_actor_set_content_scaling_filters (actor,
|
||||||
|
actor->priv->min_filter,
|
||||||
|
g_value_get_enum (value));
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
@ -4886,6 +4904,14 @@ clutter_actor_get_property (GObject *object,
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case PROP_MINIFICATION_FILTER:
|
||||||
|
g_value_set_enum (value, priv->min_filter);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PROP_MAGNIFICATION_FILTER:
|
||||||
|
g_value_set_enum (value, priv->mag_filter);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
@ -6352,6 +6378,22 @@ clutter_actor_class_init (ClutterActorClass *klass)
|
|||||||
CLUTTER_TYPE_ACTOR_BOX,
|
CLUTTER_TYPE_ACTOR_BOX,
|
||||||
CLUTTER_PARAM_READABLE);
|
CLUTTER_PARAM_READABLE);
|
||||||
|
|
||||||
|
obj_props[PROP_MINIFICATION_FILTER] =
|
||||||
|
g_param_spec_enum ("minification-filter",
|
||||||
|
P_("Minification Filter"),
|
||||||
|
P_("The filter used when reducing the size of the content"),
|
||||||
|
CLUTTER_TYPE_SCALING_FILTER,
|
||||||
|
CLUTTER_SCALING_FILTER_LINEAR,
|
||||||
|
CLUTTER_PARAM_READWRITE);
|
||||||
|
|
||||||
|
obj_props[PROP_MAGNIFICATION_FILTER] =
|
||||||
|
g_param_spec_enum ("magnification-filter",
|
||||||
|
P_("Magnification Filter"),
|
||||||
|
P_("The filter used when increasing the size of the content"),
|
||||||
|
CLUTTER_TYPE_SCALING_FILTER,
|
||||||
|
CLUTTER_SCALING_FILTER_LINEAR,
|
||||||
|
CLUTTER_PARAM_READWRITE);
|
||||||
|
|
||||||
g_object_class_install_properties (object_class, PROP_LAST, obj_props);
|
g_object_class_install_properties (object_class, PROP_LAST, obj_props);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -6937,6 +6979,8 @@ clutter_actor_init (ClutterActor *self)
|
|||||||
* the easiest thing to compute.
|
* the easiest thing to compute.
|
||||||
*/
|
*/
|
||||||
priv->content_gravity = CLUTTER_CONTENT_GRAVITY_RESIZE_FILL;
|
priv->content_gravity = CLUTTER_CONTENT_GRAVITY_RESIZE_FILL;
|
||||||
|
priv->min_filter = CLUTTER_SCALING_FILTER_LINEAR;
|
||||||
|
priv->mag_filter = CLUTTER_SCALING_FILTER_LINEAR;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -17745,3 +17789,77 @@ clutter_actor_get_content_box (ClutterActor *self,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* clutter_actor_set_content_scaling_filters:
|
||||||
|
* @self: a #ClutterActor
|
||||||
|
* @min_filter: FIXME
|
||||||
|
* @mag_filter: FIXME
|
||||||
|
*
|
||||||
|
* FIXME
|
||||||
|
*
|
||||||
|
* Since: 1.10
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
clutter_actor_set_content_scaling_filters (ClutterActor *self,
|
||||||
|
ClutterScalingFilter min_filter,
|
||||||
|
ClutterScalingFilter mag_filter)
|
||||||
|
{
|
||||||
|
ClutterActorPrivate *priv;
|
||||||
|
gboolean changed;
|
||||||
|
GObject *obj;
|
||||||
|
|
||||||
|
g_return_if_fail (CLUTTER_IS_ACTOR (self));
|
||||||
|
|
||||||
|
priv = self->priv;
|
||||||
|
obj = G_OBJECT (self);
|
||||||
|
|
||||||
|
g_object_freeze_notify (obj);
|
||||||
|
|
||||||
|
changed = FALSE;
|
||||||
|
|
||||||
|
if (priv->min_filter != min_filter)
|
||||||
|
{
|
||||||
|
priv->min_filter = min_filter;
|
||||||
|
changed = TRUE;
|
||||||
|
|
||||||
|
g_object_notify_by_pspec (obj, obj_props[PROP_MINIFICATION_FILTER]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (priv->mag_filter != mag_filter)
|
||||||
|
{
|
||||||
|
priv->mag_filter = mag_filter;
|
||||||
|
changed = TRUE;
|
||||||
|
|
||||||
|
g_object_notify_by_pspec (obj, obj_props[PROP_MAGNIFICATION_FILTER]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (changed)
|
||||||
|
clutter_actor_queue_redraw (self);
|
||||||
|
|
||||||
|
g_object_thaw_notify (obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* clutter_actor_get_content_scaling_filters:
|
||||||
|
* @self: a #ClutterActor
|
||||||
|
* @min_filter: (out): FIXME
|
||||||
|
* @mag_filter: (out): FIXME
|
||||||
|
*
|
||||||
|
* FIXME
|
||||||
|
*
|
||||||
|
* Since: 1.10
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
clutter_actor_get_content_scaling_filters (ClutterActor *self,
|
||||||
|
ClutterScalingFilter *min_filter,
|
||||||
|
ClutterScalingFilter *mag_filter)
|
||||||
|
{
|
||||||
|
g_return_if_fail (CLUTTER_IS_ACTOR (self));
|
||||||
|
|
||||||
|
if (min_filter != NULL)
|
||||||
|
*min_filter = self->priv->min_filter;
|
||||||
|
|
||||||
|
if (mag_filter != NULL)
|
||||||
|
*mag_filter = self->priv->mag_filter;
|
||||||
|
}
|
||||||
|
@ -480,6 +480,14 @@ void clutter_actor_set_content_gravity
|
|||||||
CLUTTER_AVAILABLE_IN_1_10
|
CLUTTER_AVAILABLE_IN_1_10
|
||||||
ClutterContentGravity clutter_actor_get_content_gravity (ClutterActor *self);
|
ClutterContentGravity clutter_actor_get_content_gravity (ClutterActor *self);
|
||||||
CLUTTER_AVAILABLE_IN_1_10
|
CLUTTER_AVAILABLE_IN_1_10
|
||||||
|
void clutter_actor_set_content_scaling_filters (ClutterActor *self,
|
||||||
|
ClutterScalingFilter min_filter,
|
||||||
|
ClutterScalingFilter mag_filter);
|
||||||
|
CLUTTER_AVAILABLE_IN_1_10
|
||||||
|
void clutter_actor_get_content_scaling_filters (ClutterActor *self,
|
||||||
|
ClutterScalingFilter *min_filter,
|
||||||
|
ClutterScalingFilter *mag_filter);
|
||||||
|
CLUTTER_AVAILABLE_IN_1_10
|
||||||
void clutter_actor_get_content_box (ClutterActor *self,
|
void clutter_actor_get_content_box (ClutterActor *self,
|
||||||
ClutterActorBox *box);
|
ClutterActorBox *box);
|
||||||
CLUTTER_AVAILABLE_IN_1_10
|
CLUTTER_AVAILABLE_IN_1_10
|
||||||
|
@ -1149,6 +1149,12 @@ typedef enum {
|
|||||||
CLUTTER_CONTENT_GRAVITY_RESIZE_ASPECT
|
CLUTTER_CONTENT_GRAVITY_RESIZE_ASPECT
|
||||||
} ClutterContentGravity;
|
} ClutterContentGravity;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
CLUTTER_SCALING_FILTER_LINEAR,
|
||||||
|
CLUTTER_SCALING_FILTER_NEAREST,
|
||||||
|
CLUTTER_SCALING_FILTER_BILINEAR
|
||||||
|
} ClutterScalingFilter;
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* __CLUTTER_ENUMS_H__ */
|
#endif /* __CLUTTER_ENUMS_H__ */
|
||||||
|
Loading…
Reference in New Issue
Block a user