# HG changeset patch # User Anton Epple # Date 1369391678 -7200 # Node ID 7db01893aaf80d1a208646b9863edd25bf7ba7d7 # Parent 69c81bdaf193bf691629ba7476714388f2921511 added caching of style to implementation diff -r 69c81bdaf193 -r 7db01893aaf8 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:29:58 2013 +0200 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/HTML5GraphicsEnvironment.java Fri May 24 12:34:38 2013 +0200 @@ -36,7 +36,8 @@ Object context; Canvas canvas; - public HTML5GraphicsEnvironment(Object contextImpl, Canvas canvas) { + + public HTML5GraphicsEnvironment(Object contextImpl, Canvas canvas) { this.context = contextImpl; this.canvas = canvas; } @@ -169,21 +170,15 @@ //// //// @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); - - @JavaScriptBody(args = {"style"}, body = "this._context().fillStyle=style.valueOf();") - @Override - public native void setFillStyle(String style); - - @JavaScriptBody(args = {}, body = "return this._context().fillStyle;") - @Override - public native String getFillStyle(); - - @Override - public void setFillStyle(Style style) { - setFillStyleImpl(context, createFillStyle(style)); + public Object setFillStyle(Style style, Object nativeStyle) { + if (nativeStyle == null) { + nativeStyle = createNativeStyle(style); + } + setFillStyleImpl(context, nativeStyle); + return nativeStyle; } - private Object createFillStyle(Style style) { + private Object createNativeStyle(Style style) { if (style instanceof RadialGradient) { RadialGradientWrapper gradient = createRadialGradientWrapper( ((RadialGradient) style).getX0(), @@ -212,14 +207,12 @@ addColorStopImpl(style, double1, stops.get(double1)); } return gradient; - } - else if (style instanceof Pattern) { + } else if (style instanceof Pattern) { // return createPatternWrapper(((Pattern) style).getImage(), ((Pattern) style).getRepeat()); } return null; } - @JavaScriptBody(args = {"gradient", "position", "color"}, body = "gradient.addColorStop(position,color)") private static native void addColorStopImpl(Object gradient, double position, String color); @@ -228,12 +221,15 @@ private native void setFillStyleImpl(Object context, Object obj); @JavaScriptBody(args = {"style"}, body = "this._context().strokeStyle=style.valueOf();") - @Override public native void setStrokeStyle(String style); @Override - public void setStrokeStyle(Style style) { - setStrokeStyleImpl(context, createFillStyle(style)); + public Object setStrokeStyle(Style style, Object nativeStyle) { + if (nativeStyle == null){ + nativeStyle = createNativeStyle(style); + } + setStrokeStyleImpl(context, nativeStyle); + return nativeStyle; } @JavaScriptBody(args = {"context", "obj"}, body = "context.strokeStyle=obj;") @@ -256,7 +252,6 @@ public native void setShadowOffsetY(double y); @JavaScriptBody(args = {}, body = "return this._context().strokeStyle;") - @Override public native String getStrokeStyle(); @JavaScriptBody(args = {}, body = "return this._context().shadowColor;") @@ -344,7 +339,7 @@ @Override public Dimension measureText(String text) { measureTextImpl(text); - return new Dimension(1,1); + return new Dimension(1, 1); } @JavaScriptBody(args = {"text"}, @@ -395,7 +390,6 @@ //// 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); //// } - @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); @@ -429,7 +423,6 @@ // // @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)); } @@ -440,27 +433,23 @@ //// //// @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(); + return canvas.getHeight(); } @Override public int getWidth() { - return canvas.getWidth(); + return canvas.getWidth(); } @Override public void setHeight(int height) { - canvas.setHeight(height); + canvas.setHeight(height); } @Override public void setWidth(int width) { - canvas.setWidth(width); + canvas.setWidth(width); } - }