[gtk/path-work-rebased: 99/123] curve: Add gsk_curve_print




commit 1e31c8e302128910caa72af230ed2aa5f70d7224
Author: Matthias Clasen <mclasen redhat com>
Date:   Mon Mar 21 15:55:41 2022 -0400

    curve: Add gsk_curve_print
    
    Useful for debugging.

 gsk/gskcurve.c        | 44 ++++++++++++++++++++++++++++++++++++++++++--
 gsk/gskcurveprivate.h |  3 +++
 2 files changed, 45 insertions(+), 2 deletions(-)
---
diff --git a/gsk/gskcurve.c b/gsk/gskcurve.c
index 9719aed5e4..c7a3974acc 100644
--- a/gsk/gskcurve.c
+++ b/gsk/gskcurve.c
@@ -74,6 +74,8 @@ struct _GskCurveClass
                                                          GskCurve               *reverse);
   float                         (* get_curvature)       (const GskCurve         *curve,
                                                          float                   t);
+
+  void                          (* print)               (const GskCurve         *curve);
 };
 
 /* {{{ Line implementation */
@@ -334,6 +336,14 @@ gsk_line_curve_get_curvature (const GskCurve *curve,
   return 0;
 }
 
+static void
+gsk_line_curve_print (const GskCurve *curve)
+{
+  g_print ("M %g %g L %g %g",
+           curve->line.points[0].x, curve->line.points[0].y,
+           curve->line.points[1].x, curve->line.points[1].y);
+}
+
 static const GskCurveClass GSK_LINE_CURVE_CLASS = {
   gsk_line_curve_init,
   gsk_line_curve_init_foreach,
@@ -352,7 +362,8 @@ static const GskCurveClass GSK_LINE_CURVE_CLASS = {
   gsk_line_curve_get_bounds,
   gsk_line_curve_offset,
   gsk_line_curve_reverse,
-  gsk_line_curve_get_curvature
+  gsk_line_curve_get_curvature,
+  gsk_line_curve_print,
 };
 
 /* }}} */
@@ -871,6 +882,16 @@ gsk_curve_curve_get_curvature (const GskCurve *curve,
   return num / denom;
 }
 
+static void
+gsk_curve_curve_print (const GskCurve *curve)
+{
+  g_print ("M %g %g C %g %g %g %g %g %g",
+           curve->curve.points[0].x, curve->curve.points[0].y,
+           curve->curve.points[1].x, curve->curve.points[1].y,
+           curve->curve.points[2].x, curve->curve.points[2].y,
+           curve->curve.points[3].x, curve->curve.points[3].y);
+}
+
 static const GskCurveClass GSK_CURVE_CURVE_CLASS = {
   gsk_curve_curve_init,
   gsk_curve_curve_init_foreach,
@@ -890,6 +911,7 @@ static const GskCurveClass GSK_CURVE_CURVE_CLASS = {
   gsk_curve_curve_offset,
   gsk_curve_curve_reverse,
   gsk_curve_curve_get_curvature,
+  gsk_curve_curve_print,
 };
 
 /* }}} */
@@ -1593,6 +1615,17 @@ gsk_conic_curve_get_curvature (const GskCurve *curve,
   return num / denom;
 }
 
+static void
+gsk_conic_curve_print (const GskCurve *curve)
+{
+  g_print ("M %g %g C %g %g %g %g %g",
+           curve->conic.points[0].x, curve->conic.points[0].y,
+           curve->conic.points[1].x, curve->conic.points[1].y,
+           curve->conic.points[2].x,
+           curve->conic.points[3].x, curve->conic.points[3].y);
+
+}
+
 static const GskCurveClass GSK_CONIC_CURVE_CLASS = {
   gsk_conic_curve_init,
   gsk_conic_curve_init_foreach,
@@ -1611,7 +1644,8 @@ static const GskCurveClass GSK_CONIC_CURVE_CLASS = {
   gsk_conic_curve_get_tight_bounds,
   gsk_conic_curve_offset,
   gsk_conic_curve_reverse,
-  gsk_conic_curve_get_curvature
+  gsk_conic_curve_get_curvature,
+  gsk_conic_curve_print,
 };
 
 /* }}} */
@@ -1806,6 +1840,12 @@ gsk_curve_get_curvature (const GskCurve   *curve,
   return k;
 }
 
+void
+gsk_curve_print (const GskCurve *curve)
+{
+  get_class (curve->op)->print (curve);
+}
+
 /* }}} */
 
 /* vim:set foldmethod=marker expandtab: */
diff --git a/gsk/gskcurveprivate.h b/gsk/gskcurveprivate.h
index 5af65f6fa9..c3ffd0d99f 100644
--- a/gsk/gskcurveprivate.h
+++ b/gsk/gskcurveprivate.h
@@ -149,6 +149,9 @@ float                   gsk_curve_get_curvature                 (const GskCurve
                                                                  float                   t,
                                                                  graphene_point_t       *center);
 
+void                    gsk_curve_print                         (const GskCurve         *curve);
+
+
 G_END_DECLS
 
 #endif /* __GSK_CURVE_PRIVATE_H__ */


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