/** Carga una imagen en la posición X,Y dada. */ public void loadImage(int x, int y, int width, int height, String path) { // SVGEvent event = new SVGEvent(SVGEvent.EVENT_LOAD_IMAGE, new SVGLoadImageEventData(x, y, // width, height, path)); // postEvent(event); SVGDocument document = raster.document; SVGSVGElem rootElem = (SVGSVGElem) document.root; SVGNode selNode = null; // Parece que la siguiente linea no es necesaria. La matriz de transformacion es la misma que la // del root // selNode = rootElem.nodeHitAt(canvas.raster, new TinyPoint(evData.getX(), evData.getY())); if (selNode == null) selNode = raster.root; // Calculo de la posicion de la imagen en el SVG TinyMatrix inverse = selNode.getGlobalTransform().inverse(); TinyPoint p = new TinyPoint(x << TinyUtil.FIX_BITS, y << TinyUtil.FIX_BITS); inverse.transform(p); TinyPoint p2 = new TinyPoint((x + width) << TinyUtil.FIX_BITS, (y + height) << TinyUtil.FIX_BITS); inverse.transform(p2); // Nuevo elemento imagen SVGImageElem imageElem = (SVGImageElem) document.createElement(SVG.ELEM_IMAGE); imageElem.x = p.x; imageElem.y = p.y; imageElem.width = p2.x - p.x; imageElem.height = p2.y - p.y; imageElem.xlink_href = new TinyString(path.toCharArray()); // Insertar la imagen en el root rootElem.addChildAndRecordEvent(imageElem, rootElem.children.count); drawSVG(); }