[gtk/matthiasc/lottie: 3/7] Add more api
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/matthiasc/lottie: 3/7] Add more api
- Date: Sat, 21 Nov 2020 15:36:44 +0000 (UTC)
commit 01abd68455a0a39f325207de303345ea76e08b3d
Author: Matthias Clasen <mclasen redhat com>
Date: Fri Nov 20 21:51:25 2020 -0500
Add more api
Add curve_editor_get_path.
tests/curve-editor.c | 73 +++++++++++++++++++++++++++++++++-------------------
tests/curve-editor.h | 2 ++
2 files changed, 49 insertions(+), 26 deletions(-)
---
diff --git a/tests/curve-editor.c b/tests/curve-editor.c
index 5b278bdff8..cc0040152e 100644
--- a/tests/curve-editor.c
+++ b/tests/curve-editor.c
@@ -608,9 +608,42 @@ curve_editor_init (CurveEditor *self)
gtk_widget_set_parent (self->menu, GTK_WIDGET (self));
}
+static void
+curve_editor_add_path (CurveEditor *self,
+ GskPathBuilder *builder)
+{
+ int i;
+
+ gsk_path_builder_move_to (builder, self->points[0].x, self->points[0].y);
+ for (i = 1; i < self->n_points; i += 3)
+ {
+ switch (self->point_data[i / 3].op)
+ {
+ case MOVE:
+ gsk_path_builder_move_to (builder,
+ self->points[(i + 2) % self->n_points].x, self->points[(i + 2) %
self->n_points].y);
+ break;
+
+ case LINE:
+ gsk_path_builder_line_to (builder,
+ self->points[(i + 2) % self->n_points].x, self->points[(i + 2) %
self->n_points].y);
+ break;
+
+ case CURVE:
+ gsk_path_builder_curve_to (builder,
+ self->points[i].x, self->points[i].y,
+ self->points[(i + 1) % self->n_points].x, self->points[(i + 1) %
self->n_points].y,
+ self->points[(i + 2) % self->n_points].x, self->points[(i + 2) %
self->n_points].y);
+ break;
+ default:
+ g_assert_not_reached ();
+ }
+ }
+}
+
static void
curve_editor_snapshot (GtkWidget *widget,
- GtkSnapshot *snapshot)
+ GtkSnapshot *snapshot)
{
CurveEditor *self = (CurveEditor *)widget;
GskPathBuilder *builder;
@@ -662,31 +695,7 @@ curve_editor_snapshot (GtkWidget *widget,
/* Add the curve itself */
- gsk_path_builder_move_to (builder, self->points[0].x, self->points[0].y);
- for (i = 1; i < self->n_points; i += 3)
- {
- switch (self->point_data[i / 3].op)
- {
- case MOVE:
- gsk_path_builder_move_to (builder,
- self->points[(i + 2) % self->n_points].x, self->points[(i + 2) %
self->n_points].y);
- break;
-
- case LINE:
- gsk_path_builder_line_to (builder,
- self->points[(i + 2) % self->n_points].x, self->points[(i + 2) %
self->n_points].y);
- break;
-
- case CURVE:
- gsk_path_builder_curve_to (builder,
- self->points[i].x, self->points[i].y,
- self->points[(i + 1) % self->n_points].x, self->points[(i + 1) %
self->n_points].y,
- self->points[(i + 2) % self->n_points].x, self->points[(i + 2) %
self->n_points].y);
- break;
- default:
- g_assert_not_reached ();
- }
- }
+ curve_editor_add_path (self, builder);
/* Stroke everything we have so far */
@@ -1012,3 +1021,15 @@ curve_editor_set_path (CurveEditor *self,
gtk_widget_queue_draw (GTK_WIDGET (self));
}
+
+GskPath *
+curve_editor_get_path (CurveEditor *self)
+{
+ GskPathBuilder *builder;
+
+ builder = gsk_path_builder_new ();
+
+ curve_editor_add_path (self, builder);
+
+ return gsk_path_builder_free_to_path (builder);
+}
diff --git a/tests/curve-editor.h b/tests/curve-editor.h
index e26247ba2b..5daf1c0114 100644
--- a/tests/curve-editor.h
+++ b/tests/curve-editor.h
@@ -15,4 +15,6 @@ void curve_editor_set_edit (CurveEditor *self,
void curve_editor_set_path (CurveEditor *self,
GskPath *path);
+GskPath * curve_editor_get_path (CurveEditor *self);
+
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]