[texture] Use a box instead of int coordinates
Most of the operations involving the texture's allocated area require floats -- either for computations or for setting the geometry into COGL. So it doesn't make any sense to use get_allocation_coords() and cast everything to floats.
This commit is contained in:
parent
3428e4dd1d
commit
1985fa75b1
@ -514,7 +514,7 @@ clutter_texture_paint (ClutterActor *self)
|
|||||||
{
|
{
|
||||||
ClutterTexture *texture = CLUTTER_TEXTURE (self);
|
ClutterTexture *texture = CLUTTER_TEXTURE (self);
|
||||||
ClutterTexturePrivate *priv = texture->priv;
|
ClutterTexturePrivate *priv = texture->priv;
|
||||||
gint x_1, y_1, x_2, y_2;
|
ClutterActorBox box = { 0, };
|
||||||
CoglColor transparent_col;
|
CoglColor transparent_col;
|
||||||
gfloat t_w, t_h;
|
gfloat t_w, t_h;
|
||||||
guint8 paint_opacity = clutter_actor_get_paint_opacity (self);
|
guint8 paint_opacity = clutter_actor_get_paint_opacity (self);
|
||||||
@ -620,28 +620,28 @@ clutter_texture_paint (ClutterActor *self)
|
|||||||
|
|
||||||
cogl_material_set_color4ub (priv->material, 0xff, 0xff, 0xff, paint_opacity);
|
cogl_material_set_color4ub (priv->material, 0xff, 0xff, 0xff, paint_opacity);
|
||||||
|
|
||||||
clutter_actor_get_allocation_coords (self, &x_1, &y_1, &x_2, &y_2);
|
clutter_actor_get_allocation_box (self, &box);
|
||||||
|
|
||||||
CLUTTER_NOTE (PAINT, "paint to x1: %i, y1: %i x2: %i, y2: %i "
|
CLUTTER_NOTE (PAINT, "paint to x1: %f, y1: %f x2: %f, y2: %f "
|
||||||
"opacity: %i",
|
"opacity: %i",
|
||||||
x_1, y_1, x_2, y_2,
|
box.x1, box.y1, box.x2, box.y2,
|
||||||
clutter_actor_get_opacity (self));
|
clutter_actor_get_opacity (self));
|
||||||
|
|
||||||
if (priv->repeat_x && priv->width > 0)
|
if (priv->repeat_x && priv->width > 0)
|
||||||
t_w = (float) (x_2 - x_1) / (float) (priv->width);
|
t_w = (box.x2 - box.x1) / priv->width;
|
||||||
else
|
else
|
||||||
t_w = 1.0;
|
t_w = 1.0;
|
||||||
|
|
||||||
if (priv->repeat_y && priv->height > 0)
|
if (priv->repeat_y && priv->height > 0)
|
||||||
t_h = (float) (y_2 - y_1) / (float) (priv->height);
|
t_h = (box.y2 - box.y1) / priv->height;
|
||||||
else
|
else
|
||||||
t_h = 1.0;
|
t_h = 1.0;
|
||||||
|
|
||||||
/* Paint will have translated us */
|
/* Paint will have translated us */
|
||||||
cogl_set_source (priv->material);
|
cogl_set_source (priv->material);
|
||||||
cogl_rectangle_with_texture_coords (0, 0,
|
cogl_rectangle_with_texture_coords (0, 0,
|
||||||
(float) (x_2 - x_1),
|
box.x2 - box.x1,
|
||||||
(float) (y_2 - y_1),
|
box.y2 - box.y1,
|
||||||
0, 0, t_w, t_h);
|
0, 0, t_w, t_h);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user