[gtk/matthiasc/for-master] rendernodepaintable: Provide accurate aspect ratio
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/matthiasc/for-master] rendernodepaintable: Provide accurate aspect ratio
- Date: Fri, 17 Sep 2021 14:29:03 +0000 (UTC)
commit 52a849288793e7eede878798a88760c058266f60
Author: Matthias Clasen <mclasen redhat com>
Date: Fri Sep 17 09:28:12 2021 -0400
rendernodepaintable: Provide accurate aspect ratio
Since we report width and height as integers, the
default implementation of this introduces rounding
errors. This shows up in the node-editor, as having
uneven scale factors like sx=1.0 and sy=1.0035.
Text nodes don't handle uneven scales like that well
and overdraw.
gtk/gtkrendernodepaintable.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
---
diff --git a/gtk/gtkrendernodepaintable.c b/gtk/gtkrendernodepaintable.c
index a777187247..bbe9cc5b13 100644
--- a/gtk/gtkrendernodepaintable.c
+++ b/gtk/gtkrendernodepaintable.c
@@ -87,6 +87,17 @@ gtk_render_node_paintable_paintable_get_intrinsic_height (GdkPaintable *paintabl
return ceilf (self->bounds.size.height);
}
+static double
+gtk_render_node_paintable_paintable_get_intrinsic_aspect_ratio (GdkPaintable *paintable)
+{
+ GtkRenderNodePaintable *self = GTK_RENDER_NODE_PAINTABLE (paintable);
+
+ if (self->bounds.size.height != 0)
+ return self->bounds.size.width / self->bounds.size.height;
+
+ return 0;
+}
+
static void
gtk_render_node_paintable_paintable_init (GdkPaintableInterface *iface)
{
@@ -94,6 +105,7 @@ gtk_render_node_paintable_paintable_init (GdkPaintableInterface *iface)
iface->get_flags = gtk_render_node_paintable_paintable_get_flags;
iface->get_intrinsic_width = gtk_render_node_paintable_paintable_get_intrinsic_width;
iface->get_intrinsic_height = gtk_render_node_paintable_paintable_get_intrinsic_height;
+ iface->get_intrinsic_aspect_ratio = gtk_render_node_paintable_paintable_get_intrinsic_aspect_ratio;
}
G_DEFINE_TYPE_EXTENDED (GtkRenderNodePaintable, gtk_render_node_paintable, G_TYPE_OBJECT, 0,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]