[gtk/path-work-rebased: 1018/1045] path: support conic->curve in foreach
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/path-work-rebased: 1018/1045] path: support conic->curve in foreach
- Date: Thu, 7 Apr 2022 19:09:27 +0000 (UTC)
commit 393e3afbaf87989ccc27fd69d84899abe6bf5ce3
Author: Matthias Clasen <mclasen redhat com>
Date: Wed Dec 9 19:07:37 2020 -0500
path: support conic->curve in foreach
gsk/gskpath.c | 31 ++++++++++++++++++++++++-------
1 file changed, 24 insertions(+), 7 deletions(-)
---
diff --git a/gsk/gskpath.c b/gsk/gskpath.c
index 2f2abc502c..d15fbfcb2f 100644
--- a/gsk/gskpath.c
+++ b/gsk/gskpath.c
@@ -465,6 +465,15 @@ gsk_path_foreach_trampoline_add_line (const graphene_point_t *from,
trampoline->user_data);
}
+static gboolean
+gsk_path_foreach_trampoline_add_curve (const graphene_point_t points[4],
+ gpointer data)
+{
+ GskPathForeachTrampoline *trampoline = data;
+
+ return trampoline->func (GSK_PATH_CURVE, points, 4, 0.0f, trampoline->user_data);
+}
+
static gboolean
gsk_path_foreach_trampoline (GskPathOperation op,
const graphene_point_t *pts,
@@ -497,17 +506,25 @@ gsk_path_foreach_trampoline (GskPathOperation op,
case GSK_PATH_CONIC:
{
- GskCurve curve;
+ GskCurve curve;
if (trampoline->flags & GSK_PATH_FOREACH_ALLOW_CONIC)
return trampoline->func (op, pts, n_pts, weight, trampoline->user_data);
+ else
+ {
+ gsk_curve_init (&curve, gsk_pathop_encode (GSK_PATH_CONIC, (graphene_point_t[4]) { pts[0],
pts[1], { weight, }, pts[2] } ));
- /* XXX: decompose into curves if allowed */
- gsk_curve_init (&curve, gsk_pathop_encode (GSK_PATH_CONIC, (graphene_point_t[4]) { pts[0], pts[1], {
weight, }, pts[2] } ));
- return gsk_curve_decompose (&curve,
- trampoline->tolerance,
- gsk_path_foreach_trampoline_add_line,
- trampoline);
+ if (trampoline->flags & GSK_PATH_FOREACH_ALLOW_CURVE)
+ return gsk_curve_decompose_curve (&curve,
+ trampoline->tolerance,
+ gsk_path_foreach_trampoline_add_curve,
+ trampoline);
+ else
+ return gsk_curve_decompose (&curve,
+ trampoline->tolerance,
+ gsk_path_foreach_trampoline_add_line,
+ trampoline);
+ }
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]