53 |
53 |
import java.awt.image.BufferedImage;
|
54 |
54 |
import java.awt.image.ImagingOpException;
|
55 |
55 |
import java.io.File;
|
|
56 |
import java.net.MalformedURLException;
|
|
57 |
import java.net.URI;
|
|
58 |
import java.net.URISyntaxException;
|
|
59 |
import java.net.URL;
|
56 |
60 |
|
57 |
61 |
import javax.swing.ImageIcon;
|
58 |
62 |
|
... | ... | |
63 |
67 |
import org.apache.batik.bridge.ViewBox;
|
64 |
68 |
import org.apache.batik.gvt.GraphicsNode;
|
65 |
69 |
import org.apache.batik.gvt.renderer.StaticRenderer;
|
|
70 |
import org.apache.batik.util.ParsedURL;
|
66 |
71 |
import org.w3c.dom.Document;
|
67 |
72 |
import org.w3c.dom.Element;
|
68 |
73 |
import org.w3c.dom.svg.SVGDocument;
|
... | ... | |
182 |
187 |
* @param rv Rect?ngulo que forma la parte visible del Layout.
|
183 |
188 |
*/
|
184 |
189 |
private void drawSVG(Graphics2D g, Rectangle2D rect, Rectangle2D rv) {
|
185 |
|
if ((rv == null) || rv.contains(rect)) {
|
186 |
|
AffineTransform ataux = new AffineTransform();
|
|
190 |
AffineTransform ataux = new AffineTransform();
|
|
191 |
|
|
192 |
System.out.println("SVG GLOBAL TRANSFORM: " + gvtRoot.getGlobalTransform());
|
|
193 |
System.out.println("SVG TRANSFORM: " + gvtRoot.getTransform());
|
|
194 |
// try {
|
|
195 |
// URI uri = new URI(m_path);
|
|
196 |
// URL url = new URL(m_path);
|
|
197 |
//
|
|
198 |
// ParsedURL pU = new ParsedURL(url);
|
|
199 |
//
|
|
200 |
// String fragmentIdentifier = url.getRef();
|
|
201 |
gvtRoot.setTransform(new AffineTransform());
|
|
202 |
ataux.translate(rect.getX(), rect.getY());
|
|
203 |
AffineTransform aux = ViewBox.getPreserveAspectRatioTransform(elt,
|
|
204 |
(float) rect.getWidth(), (float) rect.getHeight());
|
187 |
205 |
|
188 |
|
ataux.translate(rect.getX(), rect.getY());
|
|
206 |
// AffineTransform aux = ViewBox.getViewTransform(fragmentIdentifier, elt,
|
|
207 |
// (float) rect.getWidth(), (float) rect.getHeight());
|
189 |
208 |
|
190 |
|
try {
|
191 |
|
ataux.concatenate(ViewBox.getViewTransform(null, elt,
|
192 |
|
(float) rect.getWidth(), (float) rect.getHeight()));
|
193 |
|
gvtRoot.setTransform(ataux);
|
194 |
|
} catch (Exception e) {
|
195 |
|
// TODO: handle exception
|
196 |
|
}
|
197 |
|
} else {
|
198 |
|
AffineTransform ataux = new AffineTransform();
|
199 |
|
|
200 |
|
ataux.translate(rect.getX(), rect.getY());
|
201 |
|
ataux.concatenate(ViewBox.getViewTransform(null, elt,
|
202 |
|
(float) rect.getWidth(), (float) rect.getHeight()));
|
203 |
|
|
204 |
|
gvtRoot.setTransform(ataux);
|
205 |
|
}
|
206 |
|
|
207 |
|
RenderingHints renderingHints = new RenderingHints(defaultRenderingHints);
|
208 |
|
g.setRenderingHints(renderingHints);
|
209 |
|
|
210 |
|
if (gvtRoot != null) {
|
211 |
|
gvtRoot.paint(g);
|
212 |
|
}
|
|
209 |
ataux.concatenate(aux);
|
|
210 |
|
|
211 |
gvtRoot.setTransform(ataux);
|
|
212 |
|
|
213 |
RenderingHints renderingHints = new RenderingHints(defaultRenderingHints);
|
|
214 |
g.setRenderingHints(renderingHints);
|
|
215 |
|
|
216 |
if (gvtRoot != null) {
|
|
217 |
gvtRoot.paint(g);
|
|
218 |
}
|
|
219 |
// } catch (URISyntaxException e) {
|
|
220 |
// // TODO Auto-generated catch block
|
|
221 |
// e.printStackTrace();
|
|
222 |
// } catch (MalformedURLException e) {
|
|
223 |
// // TODO Auto-generated catch block
|
|
224 |
// e.printStackTrace();
|
|
225 |
// }
|
|
226 |
|
213 |
227 |
}
|
214 |
228 |
|
215 |
229 |
/**
|
... | ... | |
310 |
324 |
Image img = load(file);
|
311 |
325 |
|
312 |
326 |
if (isSVG) {
|
313 |
|
return new Dimension(100, 100);
|
|
327 |
return new Dimension((int) gvtRoot.getBounds().getWidth(),
|
|
328 |
(int) gvtRoot.getBounds().getHeight());
|
|
329 |
// return new Dimension(100, 100);
|
314 |
330 |
}
|
315 |
331 |
|
316 |
332 |
if (img == null) {
|
... | ... | |
380 |
396 |
BridgeContext ctx = new BridgeContext(userAgent, loader);
|
381 |
397 |
Document svgDoc = loader.loadDocument(file.toURI().toString());
|
382 |
398 |
gvtRoot = gvtBuilder.build(ctx, svgDoc);
|
|
399 |
|
383 |
400 |
renderer.setTree(gvtRoot);
|
384 |
401 |
elt = ((SVGDocument) svgDoc).getRootElement();
|
|
402 |
|
385 |
403 |
} catch (Exception ex) {
|
386 |
404 |
ex.printStackTrace();
|
387 |
405 |
}
|