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:18 +0200
branchcanvas
changeset 11445bf850c5b7f1
parent 1142 7db01893aaf8
child 1145 0e2c3676d77a
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/canvas/src/main/java/net/java/html/canvas/GraphicsContext.java
javaquery/canvas/src/main/java/net/java/html/canvas/Image.java
javaquery/canvas/src/main/java/net/java/html/canvas/ImageData.java
javaquery/canvas/src/main/java/net/java/html/canvas/Pattern.java
javaquery/canvas/src/main/java/net/java/html/canvas/Style.java
javaquery/canvas/src/main/java/net/java/html/canvas/spi/GraphicsEnvironment.java
     1.1 --- a/javaquery/canvas/src/main/java/net/java/html/canvas/GraphicsContext.java	Fri May 24 12:34:38 2013 +0200
     1.2 +++ b/javaquery/canvas/src/main/java/net/java/html/canvas/GraphicsContext.java	Mon May 27 08:30:18 2013 +0200
     1.3 @@ -132,17 +132,20 @@
     1.4          graphicsEnvironmentImpl.scale(x, y);
     1.5      }
     1.6  
     1.7 -////    public void drawImage(ImageData image, double x, double y){
     1.8 -////        graphicsEnvironmentImpl.drawImage(image, x, y);
     1.9 -////    }
    1.10 -////
    1.11 -////    public void drawImage(ImageData image, double x, double y, double width, double height){
    1.12 -////        graphicsEnvironmentImpl.drawImage(image, x, y, width, height);
    1.13 -////    }
    1.14 -////
    1.15 -////    public void drawImage(ImageData image, double sx, double sy, double sWidth, double sHeight, double x, double y, double width, double height){
    1.16 -////        graphicsEnvironmentImpl.drawImage(image, sx, sy, sWidth, sHeight, x, y, width, height);
    1.17 -////    }
    1.18 +    public void paintImage(Image image, double x, double y){
    1.19 +        Object nativeImage = graphicsEnvironmentImpl.drawImage(image, x, y, image.getCached());
    1.20 +        image.cache(nativeImage);
    1.21 +    }
    1.22 +
    1.23 +    public void paintImage(Image image, double x, double y, double width, double height){
    1.24 +        Object nativeImage = graphicsEnvironmentImpl.drawImage(image, x, y, width, height, image.getCached());
    1.25 +        image.cache(nativeImage);
    1.26 +    }
    1.27 +
    1.28 +    public void paintImage(Image image, double sx, double sy, double sWidth, double sHeight, double x, double y, double width, double height){
    1.29 +        Object nativeImage = graphicsEnvironmentImpl.drawImage(image, sx, sy, sWidth, sHeight, x, y, width, height, image.getCached());
    1.30 +        image.cache(nativeImage);
    1.31 +    }
    1.32  
    1.33      public void setShadowColor(String color){
    1.34          graphicsEnvironmentImpl.setShadowColor(color);
    1.35 @@ -262,25 +265,25 @@
    1.36          graphicsEnvironmentImpl.strokeText(text, x, y, maxWidth);
    1.37      }
    1.38  
    1.39 -////    public ImageData createImageData(double x, double y){
    1.40 -////        return graphicsEnvironmentImpl.createImageData(x, y);
    1.41 -////    }
    1.42 -////
    1.43 -////    public ImageData createImageData(ImageData imageData){
    1.44 -////        return graphicsEnvironmentImpl.createImageData(imageData);
    1.45 -////    }
    1.46 -////
    1.47 -////    public ImageData getImageData(double x, double y, double width, double height){
    1.48 -////        return graphicsEnvironmentImpl.getImageData(x, y, width, height);
    1.49 -////    }
    1.50 -////
    1.51 -////    public void putImageData(ImageData imageData, double x, double y){
    1.52 -////        graphicsEnvironmentImpl.putImageData(imageData, x, y);
    1.53 -////    }
    1.54 -////
    1.55 -////    public void putImageData(ImageData imageData, double x, double y, double dirtyx, double dirtyy, double dirtywidth, double dirtyheight){
    1.56 -////        graphicsEnvironmentImpl.putImageData(imageData, x, y, dirtyx, dirtyy, dirtywidth, dirtyheight);
    1.57 -////    }
    1.58 +    public ImageData createPixelMap(double x, double y){
    1.59 +        return graphicsEnvironmentImpl.createPixelMap(x, y);
    1.60 +    }
    1.61 +
    1.62 +    public ImageData createPixelMap(ImageData pixelMap){
    1.63 +        return graphicsEnvironmentImpl.createPixelMap(pixelMap);
    1.64 +    }
    1.65 +
    1.66 +    public ImageData getSnapshot(double x, double y, double width, double height){
    1.67 +        return graphicsEnvironmentImpl.getPixelMap(x, y, width, height);
    1.68 +    }
    1.69 +
    1.70 +    public void paintPixelMap(ImageData pixelMap, double x, double y){
    1.71 +        graphicsEnvironmentImpl.putPixelMap(pixelMap, x, y);
    1.72 +    }
    1.73 +
    1.74 +    public void paintPixelMap(ImageData pixelMap, double x, double y, double dirtyx, double dirtyy, double dirtywidth, double dirtyheight){
    1.75 +        graphicsEnvironmentImpl.putPixelMap(pixelMap, x, y, dirtyx, dirtyy, dirtywidth, dirtyheight);
    1.76 +    }
    1.77  
    1.78      public void setGlobalAlpha(double alpha){
    1.79          graphicsEnvironmentImpl.setGlobalAlpha(alpha);
    1.80 @@ -302,17 +305,17 @@
    1.81          return new LinearGradient(x0, y0, x1, y1);
    1.82      }
    1.83  
    1.84 -////    public Pattern createPattern(ImageData image, String repeat){
    1.85 -////        return new Pattern(image, repeat);
    1.86 -////    }
    1.87 +    public Pattern createPattern(Image image, String repeat){
    1.88 +        return new Pattern(image, repeat);
    1.89 +    }
    1.90  
    1.91      public RadialGradient createRadialGradient(double x0, double y0, double r0, double x1, double y1, double r1){
    1.92          return new RadialGradient(x0, y0, r0, x1, y1, r1);
    1.93      }
    1.94  
    1.95 -////    public ImageData getImageDataForPath(String path){
    1.96 -////        return graphicsEnvironmentImpl.getImageForPath(path);
    1.97 -////    }
    1.98 +    public Image getImageForPath(String path){
    1.99 +        return graphicsEnvironmentImpl.getImageForPath(path);
   1.100 +    }
   1.101  
   1.102      public int getHeight(){
   1.103          return graphicsEnvironmentImpl.getHeight();
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/javaquery/canvas/src/main/java/net/java/html/canvas/Image.java	Mon May 27 08:30:18 2013 +0200
     2.3 @@ -0,0 +1,77 @@
     2.4 +/**
     2.5 + * Back 2 Browser Bytecode Translator Copyright (C) 2012 Jaroslav Tulach
     2.6 + * <jaroslav.tulach@apidesign.org>
     2.7 + *
     2.8 + * This program is free software: you can redistribute it and/or modify it under
     2.9 + * the terms of the GNU General Public License as published by the Free Software
    2.10 + * Foundation, version 2 of the License.
    2.11 + *
    2.12 + * This program is distributed in the hope that it will be useful, but WITHOUT
    2.13 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
    2.14 + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
    2.15 + * details.
    2.16 + *
    2.17 + * You should have received a copy of the GNU General Public License along with
    2.18 + * this program. Look for COPYING file in the top folder. If not, see
    2.19 + * http://opensource.org/licenses/GPL-2.0.
    2.20 + */
    2.21 +package net.java.html.canvas;
    2.22 +
    2.23 +import java.util.Objects;
    2.24 +
    2.25 +/**
    2.26 + * Image represents an Image defined by a Path.
    2.27 + *
    2.28 + *
    2.29 + * @author antonepple
    2.30 + */
    2.31 +public class Image {
    2.32 +
    2.33 +    private String src;
    2.34 +    private Object cached;
    2.35 +    private int cacheHash;
    2.36 +
    2.37 +    void Image(String src) {
    2.38 +        this.src = src;
    2.39 +    }
    2.40 +
    2.41 +    void cache(Object toCache) {
    2.42 +        cacheHash = hashCode();
    2.43 +        this.cached = toCache;
    2.44 +    }
    2.45 +
    2.46 +    private boolean isCached() {
    2.47 +        return cacheHash == hashCode();
    2.48 +    }
    2.49 +
    2.50 +    Object getCached() {
    2.51 +        return isCached() ? cached : null;
    2.52 +    }
    2.53 +
    2.54 +    public String getSrc() {
    2.55 +        return src;
    2.56 +    }
    2.57 +
    2.58 +    @Override
    2.59 +    public int hashCode() {
    2.60 +        int hash = 7;
    2.61 +        hash = 59 * hash + Objects.hashCode(this.src);
    2.62 +        return hash;
    2.63 +    }
    2.64 +
    2.65 +    @Override
    2.66 +    public boolean equals(Object obj) {
    2.67 +        if (obj == null) {
    2.68 +            return false;
    2.69 +        }
    2.70 +        if (getClass() != obj.getClass()) {
    2.71 +            return false;
    2.72 +        }
    2.73 +        final Image other = (Image) obj;
    2.74 +        if (!Objects.equals(this.src, other.src)) {
    2.75 +            return false;
    2.76 +        }
    2.77 +        return true;
    2.78 +    }
    2.79 + 
    2.80 +}
     3.1 --- a/javaquery/canvas/src/main/java/net/java/html/canvas/ImageData.java	Fri May 24 12:34:38 2013 +0200
     3.2 +++ b/javaquery/canvas/src/main/java/net/java/html/canvas/ImageData.java	Mon May 27 08:30:18 2013 +0200
     3.3 @@ -18,7 +18,9 @@
     3.4  package net.java.html.canvas;
     3.5  
     3.6  /**
     3.7 - *
     3.8 + * ImageData is an updateable 2-Dimensional Array of Colour values.
     3.9 + * Created ( createPixelMap / getSnapShot ) and rendered ( paintPixelMap ) by GraphicsContext .
    3.10 + * 
    3.11   * @author antonepple
    3.12   */
    3.13  public interface ImageData {
    3.14 @@ -27,5 +29,8 @@
    3.15  
    3.16      public double getWidth();
    3.17      
    3.18 +    public int getPixel(double x, double y);
    3.19      
    3.20 +    public void setPixel(double x, double y, int value);
    3.21 +       
    3.22  }
     4.1 --- a/javaquery/canvas/src/main/java/net/java/html/canvas/Pattern.java	Fri May 24 12:34:38 2013 +0200
     4.2 +++ b/javaquery/canvas/src/main/java/net/java/html/canvas/Pattern.java	Mon May 27 08:30:18 2013 +0200
     4.3 @@ -23,20 +23,20 @@
     4.4   */
     4.5   public final class Pattern extends Style{
     4.6      
     4.7 -    ImageData imageData; 
     4.8 +    Image imageResource; 
     4.9      String repeat;
    4.10  
    4.11 -    Pattern(ImageData imageData, String repeat) {
    4.12 -        this.imageData = imageData;
    4.13 +    Pattern(Image imageResource, String repeat) {
    4.14 +        this.imageResource = imageResource;
    4.15          this.repeat = repeat;
    4.16      }
    4.17      
    4.18 -    public ImageData getImageData() {
    4.19 -        return imageData;
    4.20 +    public Image getImageResource() {
    4.21 +        return imageResource;
    4.22      }
    4.23  
    4.24 -    public void setImageData(ImageData imageData) {
    4.25 -        this.imageData = imageData;
    4.26 +    public void setImageResource(Image imageResource) {
    4.27 +        this.imageResource = imageResource;
    4.28      }
    4.29  
    4.30      public String getRepeat() {
     5.1 --- a/javaquery/canvas/src/main/java/net/java/html/canvas/Style.java	Fri May 24 12:34:38 2013 +0200
     5.2 +++ b/javaquery/canvas/src/main/java/net/java/html/canvas/Style.java	Mon May 27 08:30:18 2013 +0200
     5.3 @@ -37,8 +37,8 @@
     5.4          return new LinearGradient(x0, y0, x1, y1);
     5.5      }
     5.6  
     5.7 -    public static final Pattern createPattern(ImageData imageData, String repeat) {
     5.8 -        return new Pattern(imageData, repeat);
     5.9 +    public static final Pattern createPattern(Image imageResource, String repeat) {
    5.10 +        return new Pattern(imageResource, repeat);
    5.11      }
    5.12  
    5.13      void cache(Object toCache) {
     6.1 --- a/javaquery/canvas/src/main/java/net/java/html/canvas/spi/GraphicsEnvironment.java	Fri May 24 12:34:38 2013 +0200
     6.2 +++ b/javaquery/canvas/src/main/java/net/java/html/canvas/spi/GraphicsEnvironment.java	Mon May 27 08:30:18 2013 +0200
     6.3 @@ -18,6 +18,8 @@
     6.4  package net.java.html.canvas.spi;
     6.5  
     6.6  import net.java.html.canvas.Dimension;
     6.7 +import net.java.html.canvas.Image;
     6.8 +import net.java.html.canvas.ImageData;
     6.9  import net.java.html.canvas.Style;
    6.10  
    6.11  /**
    6.12 @@ -82,12 +84,12 @@
    6.13  
    6.14      public void scale(double x, double y);
    6.15  
    6.16 -////    public void drawImage(ImageData image, double x, double y);
    6.17 -////
    6.18 -////    public void drawImage(ImageData image, double x, double y, double width, double height);
    6.19 -////
    6.20 -////    public void drawImage(ImageData image, double sx, double sy, double sWidth, double sHeight, double x, double y, double width, double height);
    6.21 -//
    6.22 +    public Object drawImage(Image image,  double x, double y, Object nativeImage);
    6.23 +
    6.24 +    public Object drawImage(Image image, double x, double y, double width, double height, Object nativeImage);
    6.25 +
    6.26 +    public Object drawImage(Image image, double sx, double sy, double sWidth, double sHeight, double x, double y, double width, double height, Object nativeImage);
    6.27 +
    6.28  
    6.29      /**
    6.30       * When implementing you can return an Object of your choice to enable
    6.31 @@ -122,7 +124,7 @@
    6.32      public void setShadowOffsetX(double x);
    6.33  
    6.34      public void setShadowOffsetY(double y);
    6.35 -
    6.36 +    
    6.37      public String getShadowColor();
    6.38  
    6.39      public double getShadowBlur();
    6.40 @@ -169,15 +171,16 @@
    6.41  
    6.42      public void strokeText(String text, double x, double y, double maxWidth);
    6.43  
    6.44 -////    public ImageData createImageData(double x, double y);
    6.45 -////
    6.46 -////    public ImageData createImageData(ImageData imageData);
    6.47 -////
    6.48 -////    public ImageData getImageData(double x, double y, double width, double height);
    6.49 -////
    6.50 -////    public void putImageData(ImageData imageData, double x, double y);
    6.51 -////
    6.52 -////    public void putImageData(ImageData imageData, double x, double y, double dirtyx, double dirtyy, double dirtywidth, double dirtyheight);
    6.53 +    public ImageData createPixelMap(double x, double y);
    6.54 +
    6.55 +    public ImageData createPixelMap(ImageData imageData);
    6.56 +
    6.57 +    public ImageData getPixelMap(double x, double y, double width, double height);
    6.58 +
    6.59 +    public void putPixelMap(ImageData imageData, double x, double y);
    6.60 +
    6.61 +    public void putPixelMap(ImageData imageData, double x, double y, double dirtyx, double dirtyy, double dirtywidth, double dirtyheight);
    6.62 +    
    6.63      public void setGlobalAlpha(double alpha);
    6.64  
    6.65      public double getGlobalAlpha();
    6.66 @@ -186,7 +189,8 @@
    6.67  
    6.68      public String getGlobalCompositeOperation();
    6.69  
    6.70 -////    public ImageData getImageForPath(String path);
    6.71 +    public Image getImageForPath(String path);
    6.72 +    
    6.73      public int getHeight();
    6.74  
    6.75      public int getWidth();