ClutterGeometry clone_source_geom;
float x_scale;
float y_scale;
- ClutterActor *stage;
- ClutterPerspective perspective;
- guint stage_width;
- guint stage_height;
CLUTTER_NOTE (PAINT,
"painting clone actor '%s'",
/* We need to scale what the clone-source actor paints to fill our own
* allocation... */
- x_scale = geom.width / clone_source_geom.width;
- y_scale = geom.height / clone_source_geom.height;
- /* Once we have calculated the scale factors it's a case of pushing
- * the scale factors to the bottom of the current model view stack...
- */
- if (x_scale != 1.0 || y_scale != 1.0)
- {
- /*
- * FIXME - this is quite expensive, it would be good it clutter kept
- * the model view matrix changes made by cogl_setup_viewport seperate
- * from those made while painting actors so we could simply replace the
- * later by multiplying it with the scale avoiding the call to
- * _clutter_actor_apply_modelview_transform_recursive.
- */
-
- stage = clutter_actor_get_stage (self);
- if (!stage)
- return;
-
- clutter_actor_get_size (stage, &stage_width, &stage_height);
- clutter_stage_get_perspectivex (CLUTTER_STAGE (stage), &perspective);
-
- cogl_setup_viewport (stage_width, stage_height,
- perspective.fovy,
- perspective.aspect,
- perspective.z_near,
- perspective.z_far);
-
- cogl_scale (COGL_FIXED_FROM_FLOAT (x_scale),
- COGL_FIXED_FROM_FLOAT (y_scale));
-
- _clutter_actor_apply_modelview_transform_recursive (self, NULL);
- }
+ x_scale = (float)geom.width / clone_source_geom.width;
+ y_scale = (float)geom.height / clone_source_geom.height;
+
+ cogl_scale (COGL_FIXED_FROM_FLOAT (x_scale), COGL_FIXED_FROM_FLOAT (y_scale));
/* The final bits of magic:
* - We need to make sure that when the clone-source actor's paint method
}
G_MODULE_EXPORT int
-test_actors2_main (int argc, char *argv[])
+test_actor_clone_main (int argc, char *argv[])
{
ClutterTimeline *timeline;
ClutterAlpha *alpha;
g_error ("image load failed: %s", error->message);
exit (1);
}
+ clutter_actor_set_size (tmp, 300, 500);
real_hand = clutter_group_new ();
clutter_container_add_actor (CLUTTER_CONTAINER (real_hand), tmp);
tmp = clutter_rectangle_new_with_color (&clr);
clutter_actor_set_size (tmp, 100, 100);
clutter_container_add_actor (CLUTTER_CONTAINER (real_hand), tmp);
+ clutter_actor_set_scale (real_hand, 0.5, 0.5);
/* Now stick the group we want to clone into another group with a custom
* opacity to verify that the clones don't traverse this parent when
/* Create a texture from file, then clone in to same resources */
oh->hand[i] = clutter_actor_clone_new (real_hand);
+ clutter_actor_set_size (oh->hand[i], 200, 213);
/* Place around a circle */
w = clutter_actor_get_width (oh->hand[0]);