[mutter] tests/clutter/cogl-tex-polygon: Port to CoglPrimitive



commit 6f30cf000491477f352f49d7f33ca0c8a41b96fc
Author: Jonas Ã…dahl <jadahl gmail com>
Date:   Fri Nov 22 11:13:07 2019 +0100

    tests/clutter/cogl-tex-polygon: Port to CoglPrimitive
    
    Instead of using cogl_polygon(), which uses deprecated API, implement
    polygon drawing using the CoglPrimitive API family. While the test might
    have been used to explicitly test cogl_polygon() it could still be
    useful to test the non-deprecated way of rendering polygons.
    
    https://gitlab.gnome.org/GNOME/mutter/merge_requests/935

 .../clutter/interactive/test-cogl-tex-polygon.c    | 110 +++++++++++++--------
 1 file changed, 68 insertions(+), 42 deletions(-)
---
diff --git a/src/tests/clutter/interactive/test-cogl-tex-polygon.c 
b/src/tests/clutter/interactive/test-cogl-tex-polygon.c
index 664916db7..8f4824f0d 100644
--- a/src/tests/clutter/interactive/test-cogl-tex-polygon.c
+++ b/src/tests/clutter/interactive/test-cogl-tex-polygon.c
@@ -84,85 +84,108 @@ G_DEFINE_TYPE_WITH_PRIVATE (TestCoglbox, test_coglbox, CLUTTER_TYPE_ACTOR);
  *--------------------------------------------------*/
 
 static void
-test_coglbox_fade_texture (gfloat     x1,
-                          gfloat     y1,
-                          gfloat     x2,
-                          gfloat     y2,
-                          gfloat     tx1,
-                          gfloat     ty1,
-                          gfloat     tx2,
-                          gfloat     ty2)
+test_coglbox_fade_texture (CoglFramebuffer *framebuffer,
+                           CoglPipeline    *pipeline,
+                           float            x1,
+                           float            y1,
+                           float            x2,
+                           float            y2,
+                           float            tx1,
+                           float            ty1,
+                           float            tx2,
+                           float            ty2)
 {
-  CoglTextureVertex vertices[4];
+  CoglVertexP3T2C4 vertices[4];
+  CoglPrimitive *primitive;
   int i;
 
   vertices[0].x = x1;
   vertices[0].y = y1;
   vertices[0].z = 0;
-  vertices[0].tx = tx1;
-  vertices[0].ty = ty1;
+  vertices[0].s = tx1;
+  vertices[0].t = ty1;
   vertices[1].x = x1;
   vertices[1].y = y2;
   vertices[1].z = 0;
-  vertices[1].tx = tx1;
-  vertices[1].ty = ty2;
+  vertices[1].s = tx1;
+  vertices[1].t = ty2;
   vertices[2].x = x2;
   vertices[2].y = y2;
   vertices[2].z = 0;
-  vertices[2].tx = tx2;
-  vertices[2].ty = ty2;
+  vertices[2].s = tx2;
+  vertices[2].t = ty2;
   vertices[3].x = x2;
   vertices[3].y = y1;
   vertices[3].z = 0;
-  vertices[3].tx = tx2;
-  vertices[3].ty = ty1;
+  vertices[3].s = tx2;
+  vertices[3].t = ty1;
 
   for (i = 0; i < 4; i++)
     {
-      cogl_color_init_from_4ub (&(vertices[i].color),
+      CoglColor cogl_color;
+
+      cogl_color_init_from_4ub (&cogl_color,
                                 255,
                                 255,
                                 255,
                                 ((i ^ (i >> 1)) & 1) ? 0 : 128);
-      cogl_color_premultiply (&(vertices[i].color));
+      cogl_color_premultiply (&cogl_color);
+      vertices[i].r = cogl_color_get_red_byte (&cogl_color);
+      vertices[i].g = cogl_color_get_green_byte (&cogl_color);
+      vertices[i].b = cogl_color_get_blue_byte (&cogl_color);
+      vertices[i].a = cogl_color_get_alpha_byte (&cogl_color);
     }
 
-  cogl_polygon (vertices, 4, TRUE);
+  primitive =
+    cogl_primitive_new_p3t2c4 (cogl_framebuffer_get_context (framebuffer),
+                               COGL_VERTICES_MODE_TRIANGLE_FAN,
+                               4,
+                               vertices);
+  cogl_primitive_draw (primitive, framebuffer, pipeline);
+  cogl_object_unref (primitive);
 }
 
 static void
-test_coglbox_triangle_texture (int    tex_width,
-                               int    tex_height,
-                               gfloat x,
-                              gfloat y,
-                              gfloat tx1,
-                              gfloat ty1,
-                              gfloat tx2,
-                              gfloat ty2,
-                              gfloat tx3,
-                              gfloat ty3)
+test_coglbox_triangle_texture (CoglFramebuffer *framebuffer,
+                               CoglHandle       material,
+                               int              tex_width,
+                               int              tex_height,
+                               float            x,
+                               float            y,
+                               float            tx1,
+                               float            ty1,
+                               float            tx2,
+                               float            ty2,
+                               float            tx3,
+                               float            ty3)
 {
-  CoglTextureVertex vertices[3];
+  CoglVertexP3T2 vertices[3];
+  CoglPrimitive *primitive;
 
   vertices[0].x = x + tx1 * tex_width;
   vertices[0].y = y + ty1 * tex_height;
   vertices[0].z = 0;
-  vertices[0].tx = tx1;
-  vertices[0].ty = ty1;
+  vertices[0].s = tx1;
+  vertices[0].t = ty1;
 
   vertices[1].x = x + tx2 * tex_width;
   vertices[1].y = y + ty2 * tex_height;
   vertices[1].z = 0;
-  vertices[1].tx = tx2;
-  vertices[1].ty = ty2;
+  vertices[1].s = tx2;
+  vertices[1].t = ty2;
 
   vertices[2].x = x + tx3 * tex_width;
   vertices[2].y = y + ty3 * tex_height;
   vertices[2].z = 0;
-  vertices[2].tx = tx3;
-  vertices[2].ty = ty3;
-
-  cogl_polygon (vertices, 3, FALSE);
+  vertices[2].s = tx3;
+  vertices[2].t = ty3;
+
+  primitive = cogl_primitive_new_p3t2 (cogl_framebuffer_get_context (framebuffer),
+                                       COGL_VERTICES_MODE_TRIANGLE_FAN,
+                                       3,
+                                       vertices);
+  cogl_primitive_draw (primitive, framebuffer, material);
+  cogl_object_unref (primitive);
 }
 
 static void
@@ -196,7 +219,8 @@ test_coglbox_paint (ClutterActor        *self,
   cogl_framebuffer_draw_textured_rectangle (framebuffer, material,
                                             0, 0, tex_width, tex_height,
                                             0, 0, 1, 1);
-  test_coglbox_fade_texture (0, tex_height,
+  test_coglbox_fade_texture (framebuffer, material,
+                             0, tex_height,
                             tex_width, (tex_height * 3 / 2),
                             0.0, 1.0,
                             1.0, 0.5);
@@ -209,12 +233,14 @@ test_coglbox_paint (ClutterActor        *self,
   cogl_framebuffer_translate (framebuffer, -tex_width / 2 - 10, 0, 0);
 
   /* Draw the texture split into two triangles */
-  test_coglbox_triangle_texture (tex_width, tex_height,
+  test_coglbox_triangle_texture (framebuffer, material,
+                                 tex_width, tex_height,
                                 0, 0,
                                 0, 0,
                                 0, 1,
                                 1, 1);
-  test_coglbox_triangle_texture (tex_width, tex_height,
+  test_coglbox_triangle_texture (framebuffer, material,
+                                 tex_width, tex_height,
                                 20, 0,
                                 0, 0,
                                 1, 0,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]