Changes cogl_rectangle to take x1, y1, x2, y2 args not x1, y1, width, height

This makes it consistent with cogl_rectangle_with_{multi,}texture_coords.
Notably the reason cogl_rectangle_with_{multi,}texture_coords wasn't changed
instead is that the former approach lets you describe back facing rectangles.
(though technically you could pass negative width/height values to achieve
 this; it doesn't seem as neat.)
This commit is contained in:
Robert Bragg 2009-01-28 14:47:03 +00:00
parent 6048a0544a
commit ef4052c18d
13 changed files with 75 additions and 69 deletions

View File

@ -108,17 +108,17 @@ clutter_rectangle_paint (ClutterActor *self)
/* this sucks, but it's the only way to make a border */ /* this sucks, but it's the only way to make a border */
cogl_rectangle (priv->border_width, 0, cogl_rectangle (priv->border_width, 0,
geom.width - priv->border_width, geom.width,
priv->border_width); priv->border_width);
cogl_rectangle (geom.width - priv->border_width, cogl_rectangle (geom.width - priv->border_width,
priv->border_width, priv->border_width,
priv->border_width, geom.width,
geom.height - priv->border_width); geom.height);
cogl_rectangle (0, geom.height - priv->border_width, cogl_rectangle (0, geom.height - priv->border_width,
geom.width - priv->border_width, geom.width - priv->border_width,
priv->border_width); geom.height);
cogl_rectangle (0, 0, cogl_rectangle (0, 0,
priv->border_width, priv->border_width,
@ -135,8 +135,8 @@ clutter_rectangle_paint (ClutterActor *self)
tmp_alpha); tmp_alpha);
cogl_rectangle (priv->border_width, priv->border_width, cogl_rectangle (priv->border_width, priv->border_width,
geom.width - priv->border_width * 2, geom.width - priv->border_width,
geom.height - priv->border_width * 2); geom.height - priv->border_width);
} }
else else
{ {

View File

@ -818,8 +818,8 @@ cursor_paint (ClutterText *self)
{ {
cogl_rectangle (priv->cursor_pos.x, cogl_rectangle (priv->cursor_pos.x,
priv->cursor_pos.y, priv->cursor_pos.y,
priv->cursor_pos.width, priv->cursor_pos.x + priv->cursor_pos.width,
priv->cursor_pos.height); priv->cursor_pos.y + priv->cursor_pos.height);
} }
else else
{ {
@ -885,8 +885,9 @@ cursor_paint (ClutterText *self)
cogl_rectangle (range_x, cogl_rectangle (range_x,
CLUTTER_UNITS_TO_DEVICE (y), CLUTTER_UNITS_TO_DEVICE (y),
range_width, range_x + range_width,
CLUTTER_UNITS_TO_DEVICE (height)); CLUTTER_UNITS_TO_DEVICE (y)
+ CLUTTER_UNITS_TO_DEVICE (height));
} }
g_free (ranges); g_free (ranges);

View File

@ -52,17 +52,17 @@ G_BEGIN_DECLS
/** /**
* cogl_rectangle: * cogl_rectangle:
* @x: X coordinate of the top-left corner * @x1: X coordinate of the top-left corner
* @y: Y coordinate of the top-left corner * @y1: Y coordinate of the top-left corner
* @width: Width of the rectangle * @x2: X coordinate of the bottom-right corner
* @height: Height of the rectangle * @y2: Y coordinate of the bottom-right corner
* *
* Fills a rectangle at the given coordinates with the current source material * Fills a rectangle at the given coordinates with the current source material
**/ **/
void cogl_rectangle (float x, void cogl_rectangle (float x1,
float y, float y1,
float width, float x2,
float height); float y2);
/** /**
* cogl_path_fill: * cogl_path_fill:

View File

@ -45,14 +45,13 @@ void _cogl_path_fill_nodes ();
void _cogl_path_stroke_nodes (); void _cogl_path_stroke_nodes ();
void void
cogl_rectangle (float x, cogl_rectangle (float x1,
float y, float y1,
float width, float x2,
float height) float y2)
{ {
cogl_rectangle_with_multitexture_coords (x, y, cogl_rectangle_with_multitexture_coords (x1, y1,
x+width, x2, y2,
y+height,
NULL, NULL,
0); 0);
} }

View File

@ -174,7 +174,8 @@ _cogl_add_path_to_stencil_buffer (floatVec2 nodes_min,
significant bit */ significant bit */
GE( glStencilMask (merge ? 6 : 3) ); GE( glStencilMask (merge ? 6 : 3) );
GE( glStencilOp (GL_ZERO, GL_REPLACE, GL_REPLACE) ); GE( glStencilOp (GL_ZERO, GL_REPLACE, GL_REPLACE) );
cogl_rectangle (bounds_x, bounds_y, bounds_w, bounds_h); cogl_rectangle (bounds_x, bounds_y,
bounds_x + bounds_w, bounds_y + bounds_h);
GE( glStencilOp (GL_INVERT, GL_INVERT, GL_INVERT) ); GE( glStencilOp (GL_INVERT, GL_INVERT, GL_INVERT) );
} }
@ -200,8 +201,8 @@ _cogl_add_path_to_stencil_buffer (floatVec2 nodes_min,
GE( glMatrixMode (GL_PROJECTION) ); GE( glMatrixMode (GL_PROJECTION) );
GE( glPushMatrix () ); GE( glPushMatrix () );
GE( glLoadIdentity () ); GE( glLoadIdentity () );
cogl_rectangle (-1.0, -1.0, 2, 2); cogl_rectangle (-1.0, -1.0, 1.0, 1.0);
cogl_rectangle (-1.0, -1.0, 2, 2); cogl_rectangle (-1.0, -1.0, 1.0, 1.0);
GE( glPopMatrix () ); GE( glPopMatrix () );
GE( glMatrixMode (GL_MODELVIEW) ); GE( glMatrixMode (GL_MODELVIEW) );
GE( glPopMatrix () ); GE( glPopMatrix () );
@ -235,7 +236,8 @@ _cogl_path_fill_nodes ()
CoglPathNode, 0), CoglPathNode, 0),
ctx->clip.stencil_used); ctx->clip.stencil_used);
cogl_rectangle (bounds_x, bounds_y, bounds_w, bounds_h); cogl_rectangle (bounds_x, bounds_y,
bounds_x + bounds_w, bounds_y + bounds_h);
/* The stencil buffer now contains garbage so the clip area needs to /* The stencil buffer now contains garbage so the clip area needs to
be rebuilt */ be rebuilt */

View File

@ -180,7 +180,8 @@ _cogl_add_path_to_stencil_buffer (floatVec2 nodes_min,
significant bit */ significant bit */
GE( glStencilMask (merge ? 6 : 3) ); GE( glStencilMask (merge ? 6 : 3) );
GE( glStencilOp (GL_ZERO, GL_REPLACE, GL_REPLACE) ); GE( glStencilOp (GL_ZERO, GL_REPLACE, GL_REPLACE) );
cogl_rectangle (bounds_x, bounds_y, bounds_w, bounds_h); cogl_rectangle (bounds_x, bounds_y,
bounds_x + bounds_w, bounds_y + bounds_h);
GE( glStencilOp (GL_INVERT, GL_INVERT, GL_INVERT) ); GE( glStencilOp (GL_INVERT, GL_INVERT, GL_INVERT) );
} }
@ -206,8 +207,8 @@ _cogl_add_path_to_stencil_buffer (floatVec2 nodes_min,
GE( glMatrixMode (GL_PROJECTION) ); GE( glMatrixMode (GL_PROJECTION) );
GE( glPushMatrix () ); GE( glPushMatrix () );
GE( glLoadIdentity () ); GE( glLoadIdentity () );
cogl_rectangle (-1.0, -1.0, 2, 2); cogl_rectangle (-1.0, -1.0, 1.0, 1.0);
cogl_rectangle (-1.0, -1.0, 2, 2); cogl_rectangle (-1.0, -1.0, 1.0, 1.0);
GE( glPopMatrix () ); GE( glPopMatrix () );
GE( glMatrixMode (GL_MODELVIEW) ); GE( glMatrixMode (GL_MODELVIEW) );
GE( glPopMatrix () ); GE( glPopMatrix () );
@ -412,7 +413,8 @@ _cogl_path_fill_nodes ()
CoglPathNode, 0), CoglPathNode, 0),
ctx->clip.stencil_used); ctx->clip.stencil_used);
cogl_rectangle (bounds_x, bounds_y, bounds_w, bounds_h); cogl_rectangle (bounds_x, bounds_y,
bounds_x + bounds_w, bounds_y + bounds_h);
/* The stencil buffer now contains garbage so the clip area needs to /* The stencil buffer now contains garbage so the clip area needs to
be rebuilt */ be rebuilt */

View File

@ -404,7 +404,8 @@ _cogl_add_stencil_clip (float x_offset,
GE( glStencilFunc (GL_NEVER, 0x1, 0x1) ); GE( glStencilFunc (GL_NEVER, 0x1, 0x1) );
GE( glStencilOp (GL_REPLACE, GL_REPLACE, GL_REPLACE) ); GE( glStencilOp (GL_REPLACE, GL_REPLACE, GL_REPLACE) );
cogl_rectangle (x_offset, y_offset, width, height); cogl_rectangle (x_offset, y_offset,
x_offset + width, y_offset + height);
} }
else else
{ {
@ -412,7 +413,8 @@ _cogl_add_stencil_clip (float x_offset,
rectangle */ rectangle */
GE( glStencilFunc (GL_NEVER, 0x1, 0x3) ); GE( glStencilFunc (GL_NEVER, 0x1, 0x3) );
GE( glStencilOp (GL_INCR, GL_INCR, GL_INCR) ); GE( glStencilOp (GL_INCR, GL_INCR, GL_INCR) );
cogl_rectangle (x_offset, y_offset, width, height); cogl_rectangle (x_offset, y_offset,
x_offset + width, y_offset + height);
/* Subtract one from all pixels in the stencil buffer so that /* Subtract one from all pixels in the stencil buffer so that
only pixels where both the original stencil buffer and the only pixels where both the original stencil buffer and the
@ -423,7 +425,7 @@ _cogl_add_stencil_clip (float x_offset,
GE( glMatrixMode (GL_PROJECTION) ); GE( glMatrixMode (GL_PROJECTION) );
GE( glPushMatrix () ); GE( glPushMatrix () );
GE( glLoadIdentity () ); GE( glLoadIdentity () );
cogl_rectangle (-1.0, -1.0, 2, 2); cogl_rectangle (-1.0, -1.0, 1.0, 1.0);
GE( glPopMatrix () ); GE( glPopMatrix () );
GE( glMatrixMode (GL_MODELVIEW) ); GE( glMatrixMode (GL_MODELVIEW) );
GE( glPopMatrix () ); GE( glPopMatrix () );

View File

@ -514,7 +514,7 @@ cogl_pango_renderer_draw_rectangle (PangoRenderer *renderer,
&x2, &y2); &x2, &y2);
cogl_set_source (priv->solid_material); cogl_set_source (priv->solid_material);
cogl_rectangle (x1, y1, x2 - x1, y2 - y1); cogl_rectangle (x1, y1, x2, y2);
} }
static void static void

View File

@ -128,14 +128,14 @@ on_paint (ClutterActor *actor, TestState *state)
/* Draw a front-facing texture */ /* Draw a front-facing texture */
cogl_set_source_texture (state->texture); cogl_set_source_texture (state->texture);
cogl_rectangle (x1, y1, x2 - x1, y2 - y1); cogl_rectangle (x1, y1, x2, y2);
x1 = x2; x1 = x2;
x2 = x1 + (float)(TEXTURE_SIZE); x2 = x1 + (float)(TEXTURE_SIZE);
/* Draw a back-facing texture */ /* Draw a back-facing texture */
cogl_set_source_texture (state->texture); cogl_set_source_texture (state->texture);
cogl_rectangle (x2, y1, x1 - x2, y2 - y1); cogl_rectangle (x2, y1, x1, y2);
x1 = x2; x1 = x2;
x2 = x1 + (float)(TEXTURE_SIZE); x2 = x1 + (float)(TEXTURE_SIZE);
@ -172,7 +172,7 @@ on_paint (ClutterActor *actor, TestState *state)
/* Draw a regular rectangle (this should always show) */ /* Draw a regular rectangle (this should always show) */
cogl_set_source_color4f (1.0, 0, 0, 1.0); cogl_set_source_color4f (1.0, 0, 0, 1.0);
cogl_rectangle (x1, y1, x2 - x1, y2 - y1); cogl_rectangle (x1, y1, x2, y2);
/* The second time round draw beneath the first with backface /* The second time round draw beneath the first with backface
culling disabled */ culling disabled */

View File

@ -162,8 +162,8 @@ key_group_paint (ClutterActor *actor)
cogl_set_source_color4ub (255, 255, 0, 224); cogl_set_source_color4ub (255, 255, 0, 224);
cogl_rectangle (CLUTTER_UNITS_TO_DEVICE (box.x1), cogl_rectangle (CLUTTER_UNITS_TO_DEVICE (box.x1),
CLUTTER_UNITS_TO_DEVICE (box.y1), CLUTTER_UNITS_TO_DEVICE (box.y1),
CLUTTER_UNITS_TO_DEVICE (box.x2 - box.x1), CLUTTER_UNITS_TO_DEVICE (box.x2),
CLUTTER_UNITS_TO_DEVICE (box.y2 - box.y1)); CLUTTER_UNITS_TO_DEVICE (box.y2));
} }
if (CLUTTER_ACTOR_IS_VISIBLE (child)) if (CLUTTER_ACTOR_IS_VISIBLE (child))

View File

@ -169,8 +169,8 @@ key_group_paint (ClutterActor *actor)
cogl_set_source_color4ub (255, 255, 0, 224); cogl_set_source_color4ub (255, 255, 0, 224);
cogl_rectangle (CLUTTER_UNITS_TO_DEVICE (box.x1), cogl_rectangle (CLUTTER_UNITS_TO_DEVICE (box.x1),
CLUTTER_UNITS_TO_DEVICE (box.y1), CLUTTER_UNITS_TO_DEVICE (box.y1),
CLUTTER_UNITS_TO_DEVICE (box.x2 - box.x1), CLUTTER_UNITS_TO_DEVICE (box.x2),
CLUTTER_UNITS_TO_DEVICE (box.y2 - box.y1)); CLUTTER_UNITS_TO_DEVICE (box.y2));
} }
if (CLUTTER_ACTOR_IS_VISIBLE (child)) if (CLUTTER_ACTOR_IS_VISIBLE (child))

View File

@ -9,7 +9,7 @@
*--------------------------------------------------*/ *--------------------------------------------------*/
G_BEGIN_DECLS G_BEGIN_DECLS
#define TEST_TYPE_COGLBOX test_coglbox_get_type() #define TEST_TYPE_COGLBOX test_coglbox_get_type()
#define TEST_COGLBOX(obj) \ #define TEST_COGLBOX(obj) \
@ -44,7 +44,7 @@ struct _TestCoglbox
TestCoglboxPrivate *priv; TestCoglboxPrivate *priv;
}; };
struct _TestCoglboxClass struct _TestCoglboxClass
{ {
ClutterActorClass parent_class; ClutterActorClass parent_class;
@ -88,7 +88,7 @@ test_coglbox_paint(ClutterActor *self)
CLUTTER_FLOAT_TO_FIXED (1.0f) CLUTTER_FLOAT_TO_FIXED (1.0f)
}; };
CoglHandle material; CoglHandle material;
priv = TEST_COGLBOX_GET_PRIVATE (self); priv = TEST_COGLBOX_GET_PRIVATE (self);
cogl_set_source_color4ub (0x66, 0x66, 0xdd, 0xff); cogl_set_source_color4ub (0x66, 0x66, 0xdd, 0xff);
@ -101,15 +101,15 @@ test_coglbox_paint(ClutterActor *self)
0, 0, 0, 0,
CLUTTER_INT_TO_FIXED (6), CLUTTER_INT_TO_FIXED (6),
CLUTTER_INT_TO_FIXED (6)); CLUTTER_INT_TO_FIXED (6));
cogl_draw_buffer (COGL_OFFSCREEN_BUFFER, priv->offscreen_id); cogl_draw_buffer (COGL_OFFSCREEN_BUFFER, priv->offscreen_id);
cogl_set_source_color4ub (0xff, 0, 0, 0xff); cogl_set_source_color4ub (0xff, 0, 0, 0xff);
cogl_rectangle (20, 20, 100, 100); cogl_rectangle (20, 20, 20 + 100, 20 + 100);
cogl_set_source_color4ub (0, 0xff, 0, 0xff); cogl_set_source_color4ub (0, 0xff, 0, 0xff);
cogl_rectangle (80, 80, 100, 100); cogl_rectangle (80, 80, 80 + 100, 80 + 100);
cogl_draw_buffer (COGL_WINDOW_BUFFER, 0); cogl_draw_buffer (COGL_WINDOW_BUFFER, 0);
material = cogl_material_new (); material = cogl_material_new ();
@ -136,12 +136,12 @@ static void
test_coglbox_dispose (GObject *object) test_coglbox_dispose (GObject *object)
{ {
TestCoglboxPrivate *priv; TestCoglboxPrivate *priv;
priv = TEST_COGLBOX_GET_PRIVATE (object); priv = TEST_COGLBOX_GET_PRIVATE (object);
cogl_texture_unref (priv->texture_id); cogl_texture_unref (priv->texture_id);
cogl_offscreen_unref (priv->offscreen_id); cogl_offscreen_unref (priv->offscreen_id);
G_OBJECT_CLASS (test_coglbox_parent_class)->dispose (object); G_OBJECT_CLASS (test_coglbox_parent_class)->dispose (object);
} }
@ -150,24 +150,24 @@ test_coglbox_init (TestCoglbox *self)
{ {
TestCoglboxPrivate *priv; TestCoglboxPrivate *priv;
self->priv = priv = TEST_COGLBOX_GET_PRIVATE(self); self->priv = priv = TEST_COGLBOX_GET_PRIVATE(self);
printf ("Loading redhand.png\n"); printf ("Loading redhand.png\n");
priv->texhand_id = cogl_texture_new_from_file ("redhand.png", 0, priv->texhand_id = cogl_texture_new_from_file ("redhand.png", 0,
COGL_TEXTURE_NONE, COGL_TEXTURE_NONE,
COGL_PIXEL_FORMAT_ANY, COGL_PIXEL_FORMAT_ANY,
NULL); NULL);
printf ("Creating texture with size\n"); printf ("Creating texture with size\n");
priv->texture_id = cogl_texture_new_with_size (200, 200, 0, priv->texture_id = cogl_texture_new_with_size (200, 200, 0,
COGL_TEXTURE_NONE, COGL_TEXTURE_NONE,
COGL_PIXEL_FORMAT_RGB_888); COGL_PIXEL_FORMAT_RGB_888);
if (priv->texture_id == COGL_INVALID_HANDLE) if (priv->texture_id == COGL_INVALID_HANDLE)
printf ("Failed creating texture with size!\n"); printf ("Failed creating texture with size!\n");
printf ("Creating offscreen\n"); printf ("Creating offscreen\n");
priv->offscreen_id = cogl_offscreen_new_to_texture (priv->texture_id); priv->offscreen_id = cogl_offscreen_new_to_texture (priv->texture_id);
if (priv->offscreen_id == COGL_INVALID_HANDLE) if (priv->offscreen_id == COGL_INVALID_HANDLE)
printf ("Failed creating offscreen to texture!\n"); printf ("Failed creating offscreen to texture!\n");
} }
@ -179,9 +179,9 @@ test_coglbox_class_init (TestCoglboxClass *klass)
ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass); ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass);
gobject_class->finalize = test_coglbox_finalize; gobject_class->finalize = test_coglbox_finalize;
gobject_class->dispose = test_coglbox_dispose; gobject_class->dispose = test_coglbox_dispose;
actor_class->paint = test_coglbox_paint; actor_class->paint = test_coglbox_paint;
g_type_class_add_private (gobject_class, sizeof (TestCoglboxPrivate)); g_type_class_add_private (gobject_class, sizeof (TestCoglboxPrivate));
} }
@ -196,21 +196,21 @@ test_cogl_offscreen_main (int argc, char *argv[])
{ {
ClutterActor *stage; ClutterActor *stage;
ClutterActor *coglbox; ClutterActor *coglbox;
clutter_init(&argc, &argv); clutter_init(&argc, &argv);
/* Stage */ /* Stage */
stage = clutter_stage_get_default (); stage = clutter_stage_get_default ();
clutter_actor_set_size (stage, 400, 400); clutter_actor_set_size (stage, 400, 400);
clutter_stage_set_title (CLUTTER_STAGE (stage), "Cogl Test"); clutter_stage_set_title (CLUTTER_STAGE (stage), "Cogl Test");
/* Cogl Box */ /* Cogl Box */
coglbox = test_coglbox_new (); coglbox = test_coglbox_new ();
clutter_container_add_actor (CLUTTER_CONTAINER (stage), coglbox); clutter_container_add_actor (CLUTTER_CONTAINER (stage), coglbox);
clutter_actor_show_all (stage); clutter_actor_show_all (stage);
clutter_main (); clutter_main ();
return 0; return 0;
} }

View File

@ -155,7 +155,7 @@ hand_post_paint (ClutterActor *actor,
clutter_actor_get_size (actor, &w, &h); clutter_actor_get_size (actor, &w, &h);
cogl_set_source_color4ub (0, 255, 0, 128); cogl_set_source_color4ub (0, 255, 0, 128);
cogl_rectangle (w / 2, h / 2, w / 2, h / 2); cogl_rectangle (w / 2, h / 2, w, h);
oh->paint_guards[actor_num] = FALSE; oh->paint_guards[actor_num] = FALSE;
} }