[cairo] get bounded box using cairo_stroke_extents

Lawrence D'Oliveiro ldo at geek-central.gen.nz
Sun Feb 21 22:55:41 UTC 2016


On Sat, 20 Feb 2016 23:52:30 -0700, Mark Olesen wrote:

> I am trying to get the bounded box using cairo_stroke_extents
> (cairo_fill_extents has similar issue). I wind up with x1 being
> way off. The rest look okay. I have attached a png. The blue
> rectangle is the bounds box. Any suggestions?

It makes more sense if you do cairo_restore before trying to get the
extents. Here is the patch I made, and attached is the patched source
and the PNG output.

diff -u stroke_extents.c{-orig,}
--- stroke_extents.c-orig       2016-02-22 11:53:06.963033270 +1300
+++ stroke_extents.c    2016-02-22 11:53:46.594795711 +1300
@@ -1,7 +1,8 @@
-#include <cairo.h>
 #include <math.h>
 #include <string.h>
 #include <stdlib.h>
+#include <stdio.h>
+#include <cairo/cairo.h>
 
 int
 main (int argc, char *argv[])
@@ -37,10 +38,11 @@
   cairo_translate(cr, -50., -20.); // *Lawrence D'Oliveiro tip*
   cairo_set_source_rgb(cr, 0., 0., 0.);
   cairo_stroke_extents(cr, &x1, &y1, &x2, &y2);
-  cairo_stroke(cr);
+  printf("(%lf, %lf) (%lf,%lf)\n", x1, y1, x2, y2);
   cairo_restore(cr);
-
+  cairo_stroke_extents(cr, &x1, &y1, &x2, &y2);
   printf("(%lf, %lf) (%lf,%lf)\n", x1, y1, x2, y2);
+  cairo_stroke(cr);
 /*
 x1 is way off
 (-1.500000, 19.500000) (151.500000,70.500000)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: skew.png
Type: image/png
Size: 784 bytes
Desc: not available
URL: <https://lists.cairographics.org/archives/cairo/attachments/20160222/b1537c67/attachment.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: stroke_extents.c
Type: text/x-c++src
Size: 1385 bytes
Desc: not available
URL: <https://lists.cairographics.org/archives/cairo/attachments/20160222/b1537c67/attachment.c>


More information about the cairo mailing list