My guess is that is that transformations that you perform on
SVGGraphics2D are applied to the 2D image, NOT to the SVG. And it's
the SVG that gets turned into a PNG.

Martin.

On 12 August 2010 11:49, Tiago Matias <[email protected]> wrote:
> So the solution is to manually add a <G> element to the top of the DOM ?
>
> Isn't there a way to pull this with SVGGraphics2D.rotate() ?
>
> As for the dimensions, I managed to obtain them. Since the rotations are all
> in 90 degree increments it suffices to swap the original document dimensions.
>
> regards,
>
> Tiago
>
> -----Original Message-----
> From: Martin Jacobson [mailto:[email protected]]
> Sent: quinta-feira, 12 de Agosto de 2010 10:57
> To: [email protected]
> Subject: Re: Rotating an existing SVG document
>
> I may not understand the details of what you are trying to achieve -
> but I am assuming that you have an SVG file (that you don't control),
> you want to rotate the image by some arbitrary amount, and transcode
> the rotated image as a PNG? Putting to one side the problem of working
> out the size of the output image, I would create my own SVG as
> follows:
>
> <svg ...>
> <g transform="rotate(45, <x>, <y>)">
>    <svg>Imported SVG file</svg>
> </g>
> </svg>
>
> Obviously, the dimensions of the outer SVG document must be at least
> as large as the bounding box of the rotated inner document.
>
> HTH
> Martin
>
>
> On 12 August 2010 10:13, Tiago Matias <[email protected]> wrote:
>>  Just a small update. I managed to obtain the dimensions of the SVG file
>> using this bit of code:
>>
>>               UserAgentAdapter userAgent = new UserAgentAdapter();
>>               DocumentLoader loader = new DocumentLoader(userAgent);
>>               BridgeContext ctx = new BridgeContext(userAgent, loader);
>>               ctx.setDynamicState(BridgeContext.DYNAMIC);
>>               GVTBuilder builder = new GVTBuilder();
>>               GraphicsNode rootGN = builder.build(ctx, svgDocument);
>>
>>               Rectangle2D bounds =  rootGN.getBounds();
>>
>> So only one question remains: how to apply a transformation to the
>> SVGGraphics2D and get the result back (or update the original SVGDocument
>> DOM)?
>>
>> Thanks once again!
>>
>> Tiago Matias
>>
>> ________________________________
>> From: Tiago Matias
>> Sent: Wednesday, August 11, 2010 2:16 PM
>> To: [email protected]
>> Subject: Rotating an existing SVG document
>>
>> Hello all,
>>
>>
>>
>> I'm sorry for asking this question once more, but I'm really having trouble
>> rotating an existing SVG document.
>>
>>
>>
>> The purpose is to load an SVG file, rotate it about the centerpoint and then
>> transcode it.
>>
>>
>>
>> I got the process sort of working except for the rotation.
>>
>>
>>
>> Here's the code (questions below)
>>
>>
>>
>>                                private final SVGDocument svgDocument;
>>
>>
>>
>>             // Load the SVG file.
>>
>>             SAXSVGDocumentFactory factory = new
>> SAXSVGDocumentFactory(SAXParser.class.getCanonicalName());
>>
>>             svgDocument = (SVGDocument)
>> factory.createDocument(url.toString());
>>
>>
>>
>>             SVGGraphics2D engine = new SVGGraphics2D(svgDocument);
>>
>>
>>
>>             // 90º rotation
>>
>>             engine.rotate(Math.Pi / 2);
>>
>>
>>
>>             Element root = svgDocument.getDocumentElement();
>>
>>             root.appendChild(engine.getRoot());
>>
>>
>>
>>           // Transcode.
>>
>>           PNGTranscoder trans = new PNGTranscoder();
>>
>>
>>
>>           ByteArrayOutputStream outputStream = new
>> ByteArrayOutputStream(2048);
>>
>>           trans.transcode(new TranscoderInput(svgDocument), new
>> TranscoderOutput(outputStream));
>>
>>
>>
>> My questions are:
>>
>>                 1) If I invoke a engine.stream() I get an empty document. It
>> just contains (roughly) <SVG><G/></SVG> (plus a defs element and some
>> styling attributes).
>>
>>                 2) To proper rotate the document I'd need to translat it to
>> the origin. Thing is, how may I obtain the dimensions and height of the
>> canvas? I tried engine.getDimension() but it returns null.
>>
>>
>>
>> Additionally, the output of this bit of code is the original file transcoded
>> to PNG. Which means that the original svgDocument was not changed (with or
>> without rotation).
>>
>>
>>
>> Any help would be greatly appreciated.
>>
>>
>>
>> Best retards,
>>
>>
>>
>> Tiago Matias
>>
>>
>>
>>
>
>
>
> --
> From my MacBook Pro
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>



-- 
>From my MacBook Pro

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to