[gtk/matthiasc/lottie] Add a setter for the stroke
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/matthiasc/lottie] Add a setter for the stroke
- Date: Sun, 22 Nov 2020 07:01:04 +0000 (UTC)
commit ee3d6d8514427a102de536b9836a500b6825edb9
Author: Matthias Clasen <mclasen redhat com>
Date: Sun Nov 22 01:59:17 2020 -0500
Add a setter for the stroke
Make the stroke used for the curve itself settable,
and add a scale in the demo to set it. This is not
very interesting since the stroke doesn't have many
parameters yet.
tests/curve-editor.c | 16 +++++++++++++---
tests/curve-editor.h | 3 +++
tests/curve.c | 17 +++++++++++++++++
3 files changed, 33 insertions(+), 3 deletions(-)
---
diff --git a/tests/curve-editor.c b/tests/curve-editor.c
index b43167d487..12d65bf726 100644
--- a/tests/curve-editor.c
+++ b/tests/curve-editor.c
@@ -113,6 +113,7 @@ struct _CurveEditor
GtkWidget *menu;
GActionMap *actions;
+ GskStroke *stroke;
};
struct _CurveEditorClass
@@ -1246,9 +1247,7 @@ curve_editor_snapshot (GtkWidget *widget,
curve_editor_add_path (self, builder);
path = gsk_path_builder_free_to_path (builder);
- stroke = gsk_stroke_new (1);
- gtk_snapshot_push_stroke (snapshot, path, stroke);
- gsk_stroke_free (stroke);
+ gtk_snapshot_push_stroke (snapshot, path, self->stroke);
gsk_path_unref (path);
gtk_snapshot_append_color (snapshot,
@@ -1441,6 +1440,7 @@ curve_editor_init (CurveEditor *self)
self->dragged = -1;
self->edit = FALSE;
+ self->stroke = gsk_stroke_new (1.0);
controller = GTK_EVENT_CONTROLLER (gtk_gesture_drag_new ());
gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (controller), GDK_BUTTON_PRIMARY);
@@ -1613,5 +1613,15 @@ curve_editor_get_path (CurveEditor *self)
return gsk_path_builder_free_to_path (builder);
}
+
+void
+curve_editor_set_stroke (CurveEditor *self,
+ GskStroke *stroke)
+{
+ gsk_stroke_free (self->stroke);
+ self->stroke = gsk_stroke_copy (stroke);
+
+ gtk_widget_queue_draw (GTK_WIDGET (self));
+}
/* }}} */
/* vim:set foldmethod=marker expandtab: */
diff --git a/tests/curve-editor.h b/tests/curve-editor.h
index 5daf1c0114..85bac0d4b1 100644
--- a/tests/curve-editor.h
+++ b/tests/curve-editor.h
@@ -17,4 +17,7 @@ void curve_editor_set_path (CurveEditor *self,
GskPath * curve_editor_get_path (CurveEditor *self);
+void curve_editor_set_stroke (CurveEditor *self,
+ GskStroke *stroke);
+
G_END_DECLS
diff --git a/tests/curve.c b/tests/curve.c
index e0b1814d0b..e083ac8d18 100644
--- a/tests/curve.c
+++ b/tests/curve.c
@@ -53,6 +53,17 @@ reset (GtkButton *button,
gsk_path_unref (path);
}
+static void
+stroke_changed (GtkRange *range,
+ CurveEditor *editor)
+{
+ GskStroke *stroke;
+
+ stroke = gsk_stroke_new (gtk_range_get_value (range));
+ curve_editor_set_stroke (editor, stroke);
+ gsk_stroke_free (stroke);
+}
+
int
main (int argc, char *argv[])
{
@@ -61,6 +72,7 @@ main (int argc, char *argv[])
GtkWidget *edit_toggle;
GtkWidget *reset_button;
GtkWidget *titlebar;
+ GtkWidget *scale;
gtk_init ();
@@ -72,9 +84,13 @@ main (int argc, char *argv[])
reset_button = gtk_button_new_from_icon_name ("edit-undo-symbolic");
+ scale = gtk_scale_new_with_range (GTK_ORIENTATION_HORIZONTAL, 1, 10, 1);
+ gtk_widget_set_size_request (scale, 60, -1);
+
titlebar = gtk_header_bar_new ();
gtk_header_bar_pack_start (GTK_HEADER_BAR (titlebar), edit_toggle);
gtk_header_bar_pack_start (GTK_HEADER_BAR (titlebar), reset_button);
+ gtk_header_bar_pack_end (GTK_HEADER_BAR (titlebar), scale);
gtk_window_set_titlebar (GTK_WINDOW (window), titlebar);
@@ -82,6 +98,7 @@ main (int argc, char *argv[])
g_signal_connect (edit_toggle, "notify::active", G_CALLBACK (edit_changed), demo);
g_signal_connect (reset_button, "clicked", G_CALLBACK (reset), demo);
+ g_signal_connect (scale, "value-changed", G_CALLBACK (stroke_changed), demo);
reset (NULL, CURVE_EDITOR (demo));
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]