Esempio n. 1
0
  /** 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();
  }