diff -r 7db01893aaf8 -r 0e2c3676d77a javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/HTML5GraphicsEnvironment.java --- a/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/HTML5GraphicsEnvironment.java Fri May 24 12:34:38 2013 +0200 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/HTML5GraphicsEnvironment.java Mon May 27 08:30:30 2013 +0200 @@ -20,13 +20,16 @@ import java.util.HashMap; import java.util.Set; import net.java.html.canvas.Dimension; +import net.java.html.canvas.Image; import net.java.html.canvas.LinearGradient; import net.java.html.canvas.Pattern; +import net.java.html.canvas.ImageData; import net.java.html.canvas.RadialGradient; import net.java.html.canvas.Style; import net.java.html.canvas.spi.GraphicsEnvironment; import org.apidesign.bck2brwsr.core.JavaScriptBody; import org.apidesign.bck2brwsr.htmlpage.api.Canvas; +import org.apidesign.bck2brwsr.htmlpage.api.Element; /** * @@ -115,7 +118,7 @@ @Override public native void clearRect(double x, double y, double width, double height); - @JavaScriptBody(args = {"x", "y", "width", "height"}, body = "this._context().rectect(x,y,width,height);") + @JavaScriptBody(args = {"x", "y", "width", "height"}, body = "this._context().rect(x,y,width,height);") @Override public native void rect(double x, double y, double width, double height); @@ -147,29 +150,39 @@ @Override public native void scale(double x, double y); -//// @Override -//// public void drawImage(Image image, double x, double y) { -//// drawImageImpl(context, Element.getElementById((Image) image), x, y); -//// } -//// -//// @Override -//// public void drawImage(Image image, double x, double y, double width, double height) { -//// drawImageImpl(context, Element.getElementById((Image) image), x, y, width, height); -//// } -//// -//// @Override -//// public void drawImage(Image image, double sx, double sy, double sWidth, double sHeight, double x, double y, double width, double height) { -//// drawImageImpl(context, Element.getElementById((Image) image), sx, sy, sWidth, sHeight, x, y, width, height); -//// } -// -//// @JavaScriptBody(args = {"ctx", "img", "x", "y", "width", "height"}, body = "ctx.drawImage(img,x,y,width,height);") -//// private native static void drawImageImpl(Object ctx, Object img, double x, double y, double width, double height); -//// -//// @JavaScriptBody(args = {"ctx", "img", "sx", "sy", "swidth", "sheight", "x", "y", "width", "height"}, body = "ctx.drawImage(img,sx,sy,swidth,sheight,x,y,width,height);") -//// 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); -//// -//// @JavaScriptBody(args = {"ctx", "img", "x", "y"}, body = "ctx.drawImage(img,x,y);") -//// private native static void drawImageImpl(Object ctx, Object img, double x, double y); + @Override + public Object drawImage(Image image, double x, double y, Object nativeImage) { + if (nativeImage == null) { + nativeImage = createImage(image.getSrc()); + } + return drawImageImpl(context, nativeImage, x, y); + } + + @Override + public Object drawImage(Image image, double x, double y, double width, double height, Object nativeImage) { + if (nativeImage == null) { + nativeImage = createImage(image.getSrc()); + } + return drawImageImpl(context, nativeImage, x, y, width, height); + } + + @Override + public Object drawImage(Image image, double sx, double sy, double sWidth, double sHeight, double x, double y, double width, double height, Object nativeImage) { + if (nativeImage == null) { + nativeImage = createImage(image.getSrc()); + } + return drawImageImpl(context, nativeImage, sx, sy, sWidth, sHeight, x, y, width, height); + } + + @JavaScriptBody(args = {"ctx", "img", "x", "y", "width", "height"}, body = "ctx.drawImage(img,x,y,width,height); return img;") + private native static Object drawImageImpl(Object ctx, Object img, double x, double y, double width, double height); + + @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;") + 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); + + @JavaScriptBody(args = {"ctx", "img", "x", "y"}, body = "ctx.drawImage(img,x,y); return img;") + private native static Object drawImageImpl(Object ctx, Object img, double x, double y); + public Object setFillStyle(Style style, Object nativeStyle) { if (nativeStyle == null) { nativeStyle = createNativeStyle(style); @@ -225,7 +238,7 @@ @Override public Object setStrokeStyle(Style style, Object nativeStyle) { - if (nativeStyle == null){ + if (nativeStyle == null) { nativeStyle = createNativeStyle(style); } setStrokeStyleImpl(context, nativeStyle); @@ -354,45 +367,46 @@ @Override public native void strokeText(String text, double x, double y, double maxWidth); -//// @Override -//// public ImageData createImageData(double x, double y) { -//// return new ImageDataWrapper(createImageDataImpl(x, y)); -//// } -//// -//// @JavaScriptBody(args = {"x", "y"}, -//// body = "return this._context().createImageData(x,y);") -//// private native Object createImageDataImpl(double x, double y); -//// -//// @Override -//// public ImageData createImageData(ImageData imageData) { -//// return new ImageDataWrapper(createImageDataImpl(imageData.getWidth(), imageData.getHeight())); -//// } -//// -//// @Override -//// public ImageData getImageData(double x, double y, double width, double height) { -//// return new ImageDataWrapper(getImageDataImpl(x, y, width, height)); -//// } -// -// @JavaScriptBody(args = {"x", "y", "width", "height"}, -// body = "return this._context().getImageData(x,y,width,height);") -// private native Object getImageDataImpl(double x, double y, double width, double height); -// -//// @Override -//// public void putImageData(ImageData imageData, double x, double y) { -//// putImageDataImpl(((ImageDataWrapper) imageData).object(), x, y); -//// } -//// -//// @JavaScriptBody(args = {"imageData", "x", "y"}, -//// body = "this._context().putImageData(imageData,x,y);") -//// private native void putImageDataImpl(Object imageData, double x, double y); -//// -//// @Override -//// public void putImageData(ImageData imageData, double x, double y, double dirtyx, double dirtyy, double dirtywidth, double dirtyheight) { -//// putImageDataImpl(((ImageDataWrapper) imageData).object(), x, y, dirtyx, dirtyy, dirtywidth, dirtyheight); -//// } + @Override + public ImageData createPixelMap(double x, double y) { + return new ImageDataWrapper(createPixelMapImpl(x, y)); + } + + @JavaScriptBody(args = {"x", "y"}, + body = "return this._context().createImageData(x,y);") + private native Object createPixelMapImpl(double x, double y); + + @Override + public ImageData createPixelMap(ImageData imageData) { + return new ImageDataWrapper(createPixelMapImpl(imageData.getWidth(), imageData.getHeight())); + } + + @Override + public ImageData getPixelMap(double x, double y, double width, double height) { + return new ImageDataWrapper(getPixelMapImpl(x, y, width, height)); + } + + @JavaScriptBody(args = {"x", "y", "width", "height"}, + body = "return this._context().getImageData(x,y,width,height);") + private native Object getPixelMapImpl(double x, double y, double width, double height); + + @Override + public void putPixelMap(ImageData imageData, double x, double y) { + putPixelMapImpl(((ImageDataWrapper) imageData).object(), x, y); + } + + @JavaScriptBody(args = {"imageData", "x", "y"}, + body = "this._context().putImageData(imageData,x,y);") + private native void putPixelMapImpl(Object imageData, double x, double y); + + @Override + public void putPixelMap(ImageData imageData, double x, double y, double dirtyx, double dirtyy, double dirtywidth, double dirtyheight) { + putPixelMapImpl(((ImageDataWrapper) imageData).object(), x, y, dirtyx, dirtyy, dirtywidth, dirtyheight); + } + @JavaScriptBody(args = {"imageData", "x", "y", "dirtyx", "dirtyy", "dirtywidth", "dirtyheight"}, body = "this._context().putImageData(imageData,x,y, dirtyx, dirtyy, dirtywidth,dirtyheight);") - private native void putImageDataImpl(Object imageData, double x, double y, double dirtyx, double dirtyy, double dirtywidth, double dirtyheight); + private native void putPixelMapImpl(Object imageData, double x, double y, double dirtyx, double dirtyy, double dirtywidth, double dirtyheight); @JavaScriptBody(args = {"alpha"}, body = "this._context().globalAlpha=alpha;") @Override @@ -417,12 +431,13 @@ @JavaScriptBody(args = {"context", "x0", "y0", "x1", "y1"}, body = "return context.createLinearGradient(x0,y0,x1,y1);") private native Object createLinearGradientImpl(Object context, double x0, double y0, double x1, double y1); -// public PatternWrapper createPatternWrapper(Image image, String repeat) { -// return new PatternWrapper(createPatternImpl(context, image, repeat)); -// } -// -// @JavaScriptBody(args = {"context", "image", "repeat"}, body = "return context.createPattern(image, repeat);") -// private static native Object createPatternImpl(Object context, Image image, String repeat); + public PatternWrapper createPatternWrapper(Image image, String repeat) { + return new PatternWrapper(createPatternImpl(context, image, repeat)); + } + + @JavaScriptBody(args = {"context", "image", "repeat"}, body = "return context.createPattern(image, repeat);") + private static native Object createPatternImpl(Object context, Image image, String repeat); + public RadialGradientWrapper createRadialGradientWrapper(double x0, double y0, double r0, double x1, double y1, double r1) { return new RadialGradientWrapper(createRadialGradientImpl(context, x0, y0, r0, x1, y1, r1)); } @@ -430,9 +445,9 @@ @JavaScriptBody(args = {"context", "x0", "y0", "r0", "x1", "y1", "r1"}, body = "return context.createRadialGradient(x0,y0,r0,x1,y1,r1);") private static native Object createRadialGradientImpl(Object context, double x0, double y0, double r0, double x1, double y1, double r1); -//// -//// @JavaScriptBody(args = {"path"}, body = "var b = new Image(); b.src=path; return b;") -//// public native Image getImageForPath(String path); + @JavaScriptBody(args = {"path"}, body = "var b = new Image(); b.src=path; return b;") + public native Image getImageForPath(String path); + @Override public int getHeight() { return canvas.getHeight(); @@ -452,4 +467,7 @@ public void setWidth(int width) { canvas.setWidth(width); } + + @JavaScriptBody(args = {"src"}, body = "var image = new Image(); image.src = src; return image;") + private static native Object createImage(String src); }