Readded Image and ImageData to have the complete API again. No need to use Data in API anymore. Added caching to Image. Image are not required to be added to the page anymore, but are created in javaScript instead. canvas
authorAnton Epple <toni.epple@eppleton.de>
Mon, 27 May 2013 08:30:30 +0200
branchcanvas
changeset 11450e2c3676d77a
parent 1144 5bf850c5b7f1
child 1148 6ef06b72bb06
Readded Image and ImageData to have the complete API again. No need to use Data in API anymore. Added caching to Image. Image are not required to be added to the page anymore, but are created in javaScript instead.
javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/HTML5GraphicsEnvironment.java
javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/ImageDataWrapper.java
javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/api/Image.java
     1.1 --- a/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/HTML5GraphicsEnvironment.java	Mon May 27 08:30:18 2013 +0200
     1.2 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/HTML5GraphicsEnvironment.java	Mon May 27 08:30:30 2013 +0200
     1.3 @@ -20,13 +20,16 @@
     1.4  import java.util.HashMap;
     1.5  import java.util.Set;
     1.6  import net.java.html.canvas.Dimension;
     1.7 +import net.java.html.canvas.Image;
     1.8  import net.java.html.canvas.LinearGradient;
     1.9  import net.java.html.canvas.Pattern;
    1.10 +import net.java.html.canvas.ImageData;
    1.11  import net.java.html.canvas.RadialGradient;
    1.12  import net.java.html.canvas.Style;
    1.13  import net.java.html.canvas.spi.GraphicsEnvironment;
    1.14  import org.apidesign.bck2brwsr.core.JavaScriptBody;
    1.15  import org.apidesign.bck2brwsr.htmlpage.api.Canvas;
    1.16 +import org.apidesign.bck2brwsr.htmlpage.api.Element;
    1.17  
    1.18  /**
    1.19   *
    1.20 @@ -115,7 +118,7 @@
    1.21      @Override
    1.22      public native void clearRect(double x, double y, double width, double height);
    1.23  
    1.24 -    @JavaScriptBody(args = {"x", "y", "width", "height"}, body = "this._context().rectect(x,y,width,height);")
    1.25 +    @JavaScriptBody(args = {"x", "y", "width", "height"}, body = "this._context().rect(x,y,width,height);")
    1.26      @Override
    1.27      public native void rect(double x, double y, double width, double height);
    1.28  
    1.29 @@ -147,29 +150,39 @@
    1.30      @Override
    1.31      public native void scale(double x, double y);
    1.32  
    1.33 -////    @Override
    1.34 -////    public void drawImage(Image image, double x, double y) {
    1.35 -////        drawImageImpl(context, Element.getElementById((Image) image), x, y);
    1.36 -////    }
    1.37 -////
    1.38 -////    @Override
    1.39 -////    public void drawImage(Image image, double x, double y, double width, double height) {
    1.40 -////        drawImageImpl(context, Element.getElementById((Image) image), x, y, width, height);
    1.41 -////    }
    1.42 -////
    1.43 -////    @Override
    1.44 -////    public void drawImage(Image image, double sx, double sy, double sWidth, double sHeight, double x, double y, double width, double height) {
    1.45 -////        drawImageImpl(context, Element.getElementById((Image) image), sx, sy, sWidth, sHeight, x, y, width, height);
    1.46 -////    }
    1.47 -//
    1.48 -////    @JavaScriptBody(args = {"ctx", "img", "x", "y", "width", "height"}, body = "ctx.drawImage(img,x,y,width,height);")
    1.49 -////    private native static void drawImageImpl(Object ctx, Object img, double x, double y, double width, double height);
    1.50 -////
    1.51 -////    @JavaScriptBody(args = {"ctx", "img", "sx", "sy", "swidth", "sheight", "x", "y", "width", "height"}, body = "ctx.drawImage(img,sx,sy,swidth,sheight,x,y,width,height);")
    1.52 -////    private native static void drawImageImpl(Object ctx, Object img, double sx, double sy, double sWidth, double sHeight, double x, double y, double width, double height);
    1.53 -////
    1.54 -////    @JavaScriptBody(args = {"ctx", "img", "x", "y"}, body = "ctx.drawImage(img,x,y);")
    1.55 -////    private native static void drawImageImpl(Object ctx, Object img, double x, double y);
    1.56 +    @Override
    1.57 +    public Object drawImage(Image image, double x, double y, Object nativeImage) {
    1.58 +        if (nativeImage == null) {
    1.59 +            nativeImage = createImage(image.getSrc());
    1.60 +        }
    1.61 +        return drawImageImpl(context, nativeImage, x, y);
    1.62 +    }
    1.63 +
    1.64 +    @Override
    1.65 +    public Object drawImage(Image image, double x, double y, double width, double height, Object nativeImage) {
    1.66 +        if (nativeImage == null) {
    1.67 +            nativeImage = createImage(image.getSrc());
    1.68 +        }
    1.69 +        return drawImageImpl(context, nativeImage, x, y, width, height);
    1.70 +    }
    1.71 +
    1.72 +    @Override
    1.73 +    public Object drawImage(Image image, double sx, double sy, double sWidth, double sHeight, double x, double y, double width, double height, Object nativeImage) {
    1.74 +        if (nativeImage == null) {
    1.75 +            nativeImage = createImage(image.getSrc());
    1.76 +        }
    1.77 +        return drawImageImpl(context, nativeImage, sx, sy, sWidth, sHeight, x, y, width, height);
    1.78 +    }
    1.79 +
    1.80 +    @JavaScriptBody(args = {"ctx", "img", "x", "y", "width", "height"}, body = "ctx.drawImage(img,x,y,width,height); return img;")
    1.81 +    private native static Object drawImageImpl(Object ctx, Object img, double x, double y, double width, double height);
    1.82 +
    1.83 +    @JavaScriptBody(args = {"ctx", "img", "sx", "sy", "swidth", "sheight", "x", "y", "width", "height"}, body = "ctx.drawImage(img,sx,sy,swidth,sheight,x,y,width,height); return img;")
    1.84 +    private native static Object drawImageImpl(Object ctx, Object img, double sx, double sy, double sWidth, double sHeight, double x, double y, double width, double height);
    1.85 +
    1.86 +    @JavaScriptBody(args = {"ctx", "img", "x", "y"}, body = "ctx.drawImage(img,x,y); return img;")
    1.87 +    private native static Object drawImageImpl(Object ctx, Object img, double x, double y);
    1.88 +
    1.89      public Object setFillStyle(Style style, Object nativeStyle) {
    1.90          if (nativeStyle == null) {
    1.91              nativeStyle = createNativeStyle(style);
    1.92 @@ -225,7 +238,7 @@
    1.93  
    1.94      @Override
    1.95      public Object setStrokeStyle(Style style, Object nativeStyle) {
    1.96 -        if (nativeStyle == null){
    1.97 +        if (nativeStyle == null) {
    1.98              nativeStyle = createNativeStyle(style);
    1.99          }
   1.100          setStrokeStyleImpl(context, nativeStyle);
   1.101 @@ -354,45 +367,46 @@
   1.102      @Override
   1.103      public native void strokeText(String text, double x, double y, double maxWidth);
   1.104  
   1.105 -////    @Override
   1.106 -////    public ImageData createImageData(double x, double y) {
   1.107 -////        return new ImageDataWrapper(createImageDataImpl(x, y));
   1.108 -////    }
   1.109 -////
   1.110 -////    @JavaScriptBody(args = {"x", "y"},
   1.111 -////            body = "return this._context().createImageData(x,y);")
   1.112 -////    private native Object createImageDataImpl(double x, double y);
   1.113 -////
   1.114 -////    @Override
   1.115 -////    public ImageData createImageData(ImageData imageData) {
   1.116 -////        return new ImageDataWrapper(createImageDataImpl(imageData.getWidth(), imageData.getHeight()));
   1.117 -////    }
   1.118 -////
   1.119 -////    @Override
   1.120 -////    public ImageData getImageData(double x, double y, double width, double height) {
   1.121 -////        return new ImageDataWrapper(getImageDataImpl(x, y, width, height));
   1.122 -////    }
   1.123 -//
   1.124 -//    @JavaScriptBody(args = {"x", "y", "width", "height"},
   1.125 -//            body = "return this._context().getImageData(x,y,width,height);")
   1.126 -//    private native Object getImageDataImpl(double x, double y, double width, double height);
   1.127 -//
   1.128 -////    @Override
   1.129 -////    public void putImageData(ImageData imageData, double x, double y) {
   1.130 -////        putImageDataImpl(((ImageDataWrapper) imageData).object(), x, y);
   1.131 -////    }
   1.132 -////
   1.133 -////    @JavaScriptBody(args = {"imageData", "x", "y"},
   1.134 -////            body = "this._context().putImageData(imageData,x,y);")
   1.135 -////    private native void putImageDataImpl(Object imageData, double x, double y);
   1.136 -////
   1.137 -////    @Override
   1.138 -////    public void putImageData(ImageData imageData, double x, double y, double dirtyx, double dirtyy, double dirtywidth, double dirtyheight) {
   1.139 -////        putImageDataImpl(((ImageDataWrapper) imageData).object(), x, y, dirtyx, dirtyy, dirtywidth, dirtyheight);
   1.140 -////    }
   1.141 +    @Override
   1.142 +    public ImageData createPixelMap(double x, double y) {
   1.143 +        return new ImageDataWrapper(createPixelMapImpl(x, y));
   1.144 +    }
   1.145 +
   1.146 +    @JavaScriptBody(args = {"x", "y"},
   1.147 +            body = "return this._context().createImageData(x,y);")
   1.148 +    private native Object createPixelMapImpl(double x, double y);
   1.149 +
   1.150 +    @Override
   1.151 +    public ImageData createPixelMap(ImageData imageData) {
   1.152 +        return new ImageDataWrapper(createPixelMapImpl(imageData.getWidth(), imageData.getHeight()));
   1.153 +    }
   1.154 +
   1.155 +    @Override
   1.156 +    public ImageData getPixelMap(double x, double y, double width, double height) {
   1.157 +        return new ImageDataWrapper(getPixelMapImpl(x, y, width, height));
   1.158 +    }
   1.159 +
   1.160 +    @JavaScriptBody(args = {"x", "y", "width", "height"},
   1.161 +            body = "return this._context().getImageData(x,y,width,height);")
   1.162 +    private native Object getPixelMapImpl(double x, double y, double width, double height);
   1.163 +
   1.164 +    @Override
   1.165 +    public void putPixelMap(ImageData imageData, double x, double y) {
   1.166 +        putPixelMapImpl(((ImageDataWrapper) imageData).object(), x, y);
   1.167 +    }
   1.168 +
   1.169 +    @JavaScriptBody(args = {"imageData", "x", "y"},
   1.170 +            body = "this._context().putImageData(imageData,x,y);")
   1.171 +    private native void putPixelMapImpl(Object imageData, double x, double y);
   1.172 +
   1.173 +    @Override
   1.174 +    public void putPixelMap(ImageData imageData, double x, double y, double dirtyx, double dirtyy, double dirtywidth, double dirtyheight) {
   1.175 +        putPixelMapImpl(((ImageDataWrapper) imageData).object(), x, y, dirtyx, dirtyy, dirtywidth, dirtyheight);
   1.176 +    }
   1.177 +
   1.178      @JavaScriptBody(args = {"imageData", "x", "y", "dirtyx", "dirtyy", "dirtywidth", "dirtyheight"},
   1.179              body = "this._context().putImageData(imageData,x,y, dirtyx, dirtyy, dirtywidth,dirtyheight);")
   1.180 -    private native void putImageDataImpl(Object imageData, double x, double y, double dirtyx, double dirtyy, double dirtywidth, double dirtyheight);
   1.181 +    private native void putPixelMapImpl(Object imageData, double x, double y, double dirtyx, double dirtyy, double dirtywidth, double dirtyheight);
   1.182  
   1.183      @JavaScriptBody(args = {"alpha"}, body = "this._context().globalAlpha=alpha;")
   1.184      @Override
   1.185 @@ -417,12 +431,13 @@
   1.186      @JavaScriptBody(args = {"context", "x0", "y0", "x1", "y1"}, body = "return context.createLinearGradient(x0,y0,x1,y1);")
   1.187      private native Object createLinearGradientImpl(Object context, double x0, double y0, double x1, double y1);
   1.188  
   1.189 -//    public PatternWrapper createPatternWrapper(Image image, String repeat) {
   1.190 -//        return new PatternWrapper(createPatternImpl(context, image, repeat));
   1.191 -//    }
   1.192 -//
   1.193 -//    @JavaScriptBody(args = {"context", "image", "repeat"}, body = "return context.createPattern(image, repeat);")
   1.194 -//    private static native Object createPatternImpl(Object context, Image image, String repeat);
   1.195 +    public PatternWrapper createPatternWrapper(Image image, String repeat) {
   1.196 +        return new PatternWrapper(createPatternImpl(context, image, repeat));
   1.197 +    }
   1.198 +
   1.199 +    @JavaScriptBody(args = {"context", "image", "repeat"}, body = "return context.createPattern(image, repeat);")
   1.200 +    private static native Object createPatternImpl(Object context, Image image, String repeat);
   1.201 +
   1.202      public RadialGradientWrapper createRadialGradientWrapper(double x0, double y0, double r0, double x1, double y1, double r1) {
   1.203          return new RadialGradientWrapper(createRadialGradientImpl(context, x0, y0, r0, x1, y1, r1));
   1.204      }
   1.205 @@ -430,9 +445,9 @@
   1.206      @JavaScriptBody(args = {"context", "x0", "y0", "r0", "x1", "y1", "r1"}, body = "return context.createRadialGradient(x0,y0,r0,x1,y1,r1);")
   1.207      private static native Object createRadialGradientImpl(Object context, double x0, double y0, double r0, double x1, double y1, double r1);
   1.208  
   1.209 -////  
   1.210 -////    @JavaScriptBody(args = {"path"}, body = "var b = new Image(); b.src=path; return b;")
   1.211 -////    public native Image getImageForPath(String path);
   1.212 +    @JavaScriptBody(args = {"path"}, body = "var b = new Image(); b.src=path; return b;")
   1.213 +    public native Image getImageForPath(String path);
   1.214 +
   1.215      @Override
   1.216      public int getHeight() {
   1.217          return canvas.getHeight();
   1.218 @@ -452,4 +467,7 @@
   1.219      public void setWidth(int width) {
   1.220          canvas.setWidth(width);
   1.221      }
   1.222 +
   1.223 +    @JavaScriptBody(args = {"src"}, body = "var image = new Image(); image.src = src; return image;")
   1.224 +    private static native Object createImage(String src);
   1.225  }
     2.1 --- a/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/ImageDataWrapper.java	Mon May 27 08:30:18 2013 +0200
     2.2 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/ImageDataWrapper.java	Mon May 27 08:30:30 2013 +0200
     2.3 @@ -21,13 +21,14 @@
     2.4   */
     2.5  package org.apidesign.bck2brwsr.htmlpage;
     2.6  
     2.7 +import net.java.html.canvas.ImageData;
     2.8  import org.apidesign.bck2brwsr.core.JavaScriptBody;
     2.9  
    2.10  /**
    2.11   *
    2.12   * @author Anton Epple <toni.epple@eppleton.de>
    2.13   */
    2.14 -public class ImageDataWrapper {
    2.15 +public class ImageDataWrapper implements ImageData{
    2.16  
    2.17      private Object imageData;
    2.18      private Data data;
    2.19 @@ -64,6 +65,16 @@
    2.20          return imageData;
    2.21      }
    2.22  
    2.23 +    @Override
    2.24 +    public int getPixel(double x, double y) {
    2.25 +        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    2.26 +    }
    2.27 +
    2.28 +    @Override
    2.29 +    public void setPixel(double x, double y, int value) {
    2.30 +        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    2.31 +    }
    2.32 +
    2.33  
    2.34      public static class Data {
    2.35  
     3.1 --- a/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/api/Image.java	Mon May 27 08:30:18 2013 +0200
     3.2 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/api/Image.java	Mon May 27 08:30:30 2013 +0200
     3.3 @@ -17,6 +17,7 @@
     3.4   */
     3.5  package org.apidesign.bck2brwsr.htmlpage.api;
     3.6  
     3.7 +
     3.8  /**
     3.9   *
    3.10   * @author Anton Epple <toni.epple@eppleton.de>