[cairo] SVG Misunderstanding?
Travis Griggs
tgriggs at cincom.com
Wed Oct 21 15:27:06 PDT 2009
I apologize for this being possibly off topic. I'm trying to use Cairo
to draw an SVG file (the one attached for example). And something's
not going right. I must be missing something obvious.
When rendered as an icon from Inkscape, I end up with a 16x16 icon,
with 9 little orange gradient squares. They're nicely pixel aligned to
keep it crisp. If I understand the SVG correctly, I should be able to
do the following cairo stuff in pseudo code:
// These values derived from the height/width and the viewBox of the
root svg node
scale( cr , 16 / 64.424 , 16 / 51.278 );
// apply the transform found at the g4466 node
matrix.xx = 0.6031636;
matrix.yx = 0;
matrix.xy = 0;
matrix.yy = 0.6190702;
matrix.x0 = 7.87836;
matrix.y0 = 5.1860675;
set_matrix( cr , &matrix );
// rect3654
rectangle(cr,
-5.9716139,
-15.317435,
-5.9716139 + 28.360464,
-15.317435 + 27.631762);
//set a source and fill after this
Unfortunately, this doesn't end up right. If I work the numbers by
pencil myself, at least for the origin of the rectangle, I get:
(-5.9716139 * 0.6031636 + 7.87836) * (16 / 64.424) --> 1.06209
(-15.317435 * 0.6190702 + 5.1860675) * (16 / 51.278) --> -1.34061
I could almost believe that the 1.06 was just rounding error (rather
severe actually), but the y value shouldn't be negative at all, and
it's not at all near integral.
I don't know what I'm doing wrong. I'm wondering at this point, if
I've mixed something in the application of viewBox.
Any helps or hints would be hugely appreciated.
--
Travis Griggs
Objologist
One man's blue plane is another man's pink plane.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Array.svg
Type: image/svg+xml
Size: 301695 bytes
Desc: not available
Url : http://lists.cairographics.org/archives/cairo/attachments/20091021/204c032d/attachment-0001.svg
More information about the cairo
mailing list