Re: get bounded box using cairo_stroke_extents
Mark Olesen <[email protected]>
| Newsgroups | gmane.comp.lib.cairo |
|---|---|
| Message-ID | <CAExh6bYiNj+nHf2pJaFDj3GJMzfS0u0V-ewfQhtYgnV=-GQ9mA@mail.gmail.com> |
That's wicked. Your changes make the bounding box perfect. Thanks for the help Lawrence. On Sun, Feb 21, 2016 at 3:55 PM, Lawrence D'Oliveiro < [email protected]> wrote: > 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) > > -- > cairo mailing list > [email protected] > https://lists.cairographics.org/mailman/listinfo/cairo > -- cairo mailing list [email protected] https://lists.cairographics.org/mailman/listinfo/cairo