javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/api/HTML5GraphicsContext.java
author toni.epple@eppleton.de
Fri, 17 May 2013 11:00:38 +0200
branchcanvas
changeset 1110 ca05c9890031
parent 871 javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/api/GraphicsContext.java@6168fb585ab4
permissions -rw-r--r--
Started extracting GraphicsContext interface from JavaQuery API. First extracting methods with primitive parameters and return type.
     1 /**
     2  * Back 2 Browser Bytecode Translator
     3  * Copyright (C) 2012 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
     4  *
     5  * This program is free software: you can redistribute it and/or modify
     6  * it under the terms of the GNU General Public License as published by
     7  * the Free Software Foundation, version 2 of the License.
     8  *
     9  * This program is distributed in the hope that it will be useful,
    10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
    11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    12  * GNU General Public License for more details.
    13  *
    14  * You should have received a copy of the GNU General Public License
    15  * along with this program. Look for COPYING file in the top folder.
    16  * If not, see http://opensource.org/licenses/GPL-2.0.
    17  */
    18 package org.apidesign.bck2brwsr.htmlpage.api;
    19 
    20 import net.java.html.canvas.GraphicsContext;
    21 import org.apidesign.bck2brwsr.core.JavaScriptBody;
    22 
    23 /**
    24  *
    25  * @author Anton Epple <toni.epple@eppleton.de>
    26  */
    27 public class HTML5GraphicsContext implements GraphicsContext {
    28 
    29     Object context;
    30 
    31     HTML5GraphicsContext(Object contextImpl) {
    32         this.context = contextImpl;
    33     }
    34 
    35     @JavaScriptBody(args = {"centerx", "centery", "radius", "startangle", "endangle", "ccw"},
    36             body = "this._context().arc(centerx,centery, radius, startangle, endangle,ccw);")
    37     @Override
    38     public native void arc(double centerX,
    39             double centerY,
    40             double startAngle,
    41             double radius,
    42             double endAngle,
    43             boolean ccw);
    44 
    45     @JavaScriptBody(args = {"x1", "y1", "x2", "y2", "r"},
    46             body = "this._context().arcTo(x1,y1,x2,y2,r);")
    47     @Override
    48     public native void arcTo(double x1,
    49             double y1,
    50             double x2,
    51             double y2,
    52             double r);
    53 
    54     @JavaScriptBody(args = {"x", "y"},
    55             body = "return this._context().isPointInPath(x,y);")
    56     @Override
    57     public native boolean isPointInPath(double x, double y);
    58 
    59     @JavaScriptBody(args = {}, body = "this._context().fill();")
    60     @Override
    61     public native void fill();
    62 
    63     @JavaScriptBody(args = {}, body = "this._context().stroke();")
    64     @Override
    65     public native void stroke();
    66 
    67     @JavaScriptBody(args = {}, body = "this._context().beginPath();")
    68     @Override
    69     public native void beginPath();
    70 
    71     @JavaScriptBody(args = {}, body = "this._context().closePath();")
    72     @Override
    73     public native void closePath();
    74 
    75     @JavaScriptBody(args = {}, body = "this._context().clip();")
    76     @Override
    77     public native void clip();
    78 
    79     @JavaScriptBody(args = {"x", "y"}, body = "this._context().moveTo(x,y);")
    80     @Override
    81     public native void moveTo(double x, double y);
    82 
    83     @JavaScriptBody(args = {"x", "y"}, body = "this._context().lineTo(x,y);")
    84     @Override
    85     public native void lineTo(double x, double y);
    86 
    87     @JavaScriptBody(args = {"cpx", "cpy", "x", "y"}, body = "this._context().quadraticCurveTo(cpx,cpy,x,y);")
    88     @Override
    89     public native void quadraticCurveTo(double cpx, double cpy, double x, double y);
    90 
    91     @JavaScriptBody(args = {"cp1x", "cp1y", "cp2x", "cp2y", "x", "y"},
    92             body = "this._context().bezierCurveTo(cp1x,cp1y,cp2x,cp2y,x,y);")
    93     @Override
    94     public native void bezierCurveTo(double cp1x, double cp1y, double cp2x, double cp2y, double x, double y);
    95 
    96     @JavaScriptBody(args = {"x", "y", "width", "height"}, body = "this._context().fillRect(x,y,width,height);")
    97     @Override
    98     public native void fillRect(double x, double y, double width, double height);
    99 
   100     @JavaScriptBody(args = {"x", "y", "width", "height"}, body = "this._context().strokeRect(x,y,width,height);")
   101     @Override
   102     public native void strokeRect(double x, double y, double width, double height);
   103 
   104     @JavaScriptBody(args = {"x", "y", "width", "height"}, body = "this._context().clearRect(x,y,width,height);")
   105     @Override
   106     public native void clearRect(double x, double y, double width, double height);
   107 
   108     @JavaScriptBody(args = {"x", "y", "width", "height"}, body = "this._context().rectect(x,y,width,height);")
   109     @Override
   110     public native void rect(double x, double y, double width, double height);
   111 
   112     @JavaScriptBody(args = {}, body = "this._context().save();")
   113     @Override
   114     public native void save();
   115 
   116     @JavaScriptBody(args = {}, body = "this._context().restore();")
   117     @Override
   118     public native void restore();
   119 
   120     @JavaScriptBody(args = {"angle"}, body = "this._context().rotate(angle);")
   121     @Override
   122     public native void rotate(double angle);
   123 
   124     @JavaScriptBody(args = {"a", "b", "c", "d", "e", "f"}, body = "this._context().transform(a,b,c,d,e,f);")
   125     @Override
   126     public native void transform(double a, double b, double c, double d, double e, double f);
   127 
   128     @JavaScriptBody(args = {"a", "b", "c", "d", "e", "f"}, body = "this._context().setTransform(a,b,c,d,e,f);")
   129     @Override
   130     public native void setTransform(double a, double b, double c, double d, double e, double f);
   131 
   132     @JavaScriptBody(args = {"x", "y"}, body = "this._context().translate(x,y);")
   133     @Override
   134     public native void translate(double x, double y);
   135 
   136     @JavaScriptBody(args = {"x", "y"}, body = "this._context().scale(x,y);")
   137     @Override
   138     public native void scale(double x, double y);
   139 
   140     public void drawImage(Image image, double x, double y) {
   141         drawImageImpl(context, Element.getElementById(image), x, y);
   142     }
   143 
   144     public void drawImage(Image image, double x, double y, double width, double height) {
   145         drawImageImpl(context, Element.getElementById(image), x, y, width, height);
   146     }
   147 
   148     public void drawImage(Image image, double sx, double sy, double sWidth, double sHeight, double x, double y, double width, double height) {
   149         drawImageImpl(context, Element.getElementById(image), sx, sy, sWidth, sHeight, x, y, width, height);
   150     }
   151 
   152     @JavaScriptBody(args = {"ctx", "img", "x", "y", "width", "height"}, body = "ctx.drawImage(img,x,y,width,height);")
   153     private native static void drawImageImpl(Object ctx, Object img, double x, double y, double width, double height);
   154 
   155     @JavaScriptBody(args = {"ctx", "img", "sx", "sy", "swidth", "sheight", "x", "y", "width", "height"}, body = "ctx.drawImage(img,sx,sy,swidth,sheight,x,y,width,height);")
   156     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);
   157 
   158     @JavaScriptBody(args = {"ctx", "img", "x", "y"}, body = "ctx.drawImage(img,x,y);")
   159     private native static void drawImageImpl(Object ctx, Object img, double x, double y);
   160 
   161     @JavaScriptBody(args = {"style"}, body = "this._context().fillStyle=style.valueOf();")
   162     @Override
   163     public native void setFillStyle(String style);
   164 
   165     @JavaScriptBody(args = {}, body = "return this._context().fillStyle;")
   166     @Override
   167     public native String getFillStyle();
   168 
   169     public void setFillStyle(LinearGradient style) {
   170         setFillStyleImpl(context, style.object());
   171     }
   172 
   173     public void setFillStyle(RadialGradient style) {
   174         setFillStyleImpl(context, style.object());
   175     }
   176 
   177     public void setFillStyle(Pattern style) {
   178         setFillStyleImpl(context, style.object());
   179     }
   180 
   181     @JavaScriptBody(args = {"context","obj"}, body = "context.fillStyle=obj;")
   182     private native void setFillStyleImpl(Object context, Object obj);
   183 
   184     @JavaScriptBody(args = {"style"}, body = "this._context().strokeStyle=style.valueOf();")
   185     @Override
   186     public native void setStrokeStyle(String style);
   187 
   188     public void setStrokeStyle(LinearGradient style) {
   189         setStrokeStyleImpl(context, style.object());
   190     }
   191 
   192     public void setStrokeStyle(RadialGradient style) {
   193         setStrokeStyleImpl(context, style.object());
   194     }
   195 
   196     @JavaScriptBody(args = {"style"}, body = "this._context().fillStyle=style;")
   197     public void setStrokeStyle(Pattern style) {
   198         setStrokeStyleImpl(context, style.object());
   199     }
   200 
   201     @JavaScriptBody(args = {"context","obj"}, body = "context.strokeStyle=obj;")
   202     private native void setStrokeStyleImpl(Object context, Object obj);
   203 
   204     @JavaScriptBody(args = {"color"}, body = "this._context().shadowColor=color.valueOf();")
   205     @Override
   206     public native void setShadowColor(String color);
   207 
   208     @JavaScriptBody(args = {"blur"}, body = "this._context().shadowBlur=blur;")
   209     @Override
   210     public native void setShadowBlur(double blur);
   211     
   212     @JavaScriptBody(args = {"x"}, body = "this._context().shadowOffsetX=x;")
   213     @Override
   214     public native void setShadowOffsetX(double x);
   215 
   216     @JavaScriptBody(args = {"y"}, body = "this._context().shadowOffsetY=y;")
   217     @Override
   218     public native void setShadowOffsetY(double y);
   219 
   220     @JavaScriptBody(args = {}, body = "return this._context().strokeStyle;")
   221     @Override
   222     public native String getStrokeStyle();
   223 
   224     @JavaScriptBody(args = {}, body = "return this._context().shadowColor;")
   225     @Override
   226     public native String getShadowColor();
   227 
   228     @JavaScriptBody(args = {}, body = "return this._context().shadowBlur;")
   229     @Override
   230     public native double getShadowBlur();
   231 
   232     @JavaScriptBody(args = {}, body = "return this._context().shadowOffsetX;")
   233     @Override
   234     public native double getShadowOffsetX();
   235 
   236     @JavaScriptBody(args = {}, body = "return this._context().shadowOffsetY;")
   237     @Override
   238     public native double getShadowOffsetY();
   239 
   240     @JavaScriptBody(args = {}, body = "return this._context().lineCap;")
   241     @Override
   242     public native String getLineCap();
   243 
   244     @JavaScriptBody(args = {"style"}, body = "this._context().lineCap=style.valueOf();")
   245     @Override
   246     public native void setLineCap(String style);
   247 
   248     @JavaScriptBody(args = {}, body = "return this._context().lineJoin;")
   249     @Override
   250     public native String getLineJoin();
   251 
   252     @JavaScriptBody(args = {"style"}, body = "this._context().lineJoin=style.valueOf();")
   253     @Override
   254     public native void setLineJoin(String style);
   255 
   256     @JavaScriptBody(args = {}, body = "return this._context().lineWidth;")
   257     @Override
   258     public native double getLineWidth();
   259 
   260     @JavaScriptBody(args = {"width"}, body = "this._context().lineWidth=width;")
   261     @Override
   262     public native void setLineWidth(double width);
   263 
   264     @JavaScriptBody(args = {}, body = "return this._context().miterLimit;")
   265     @Override
   266     public native double getMiterLimit();
   267 
   268     @JavaScriptBody(args = {"limit"}, body = "this._context().miterLimit=limit;")
   269     @Override
   270     public native void setMiterLimit(double limit);
   271 
   272     @JavaScriptBody(args = {}, body = "return this._context().font;")
   273     @Override
   274     public native String getFont();
   275 
   276     @JavaScriptBody(args = {"font"}, body = "this._context().font=font.valueOf();")
   277     @Override
   278     public native void setFont(String font);
   279 
   280     @JavaScriptBody(args = {}, body = "return this._context().textAlign;")
   281     @Override
   282     public native String getTextAlign();
   283 
   284     @JavaScriptBody(args = {"textalign"}, body = "this._context().textAlign=textalign.valueOf();")
   285     @Override
   286     public native void setTextAlign(String textAlign);
   287 
   288     @JavaScriptBody(args = {}, body = "return this._context().textBaseline;")
   289     @Override
   290     public native String getTextBaseline();
   291 
   292     @JavaScriptBody(args = {"textbaseline"}, body = "this._context().textBaseline=textbaseline.valueOf();")
   293     @Override
   294     public native void setTextBaseline(String textbaseline);
   295 
   296     @JavaScriptBody(args = {"text", "x", "y"}, body = "this._context().fillText(text,x,y);")
   297     @Override
   298     public native void fillText(String text, double x, double y);
   299 
   300     @JavaScriptBody(args = {"text", "x", "y", "maxwidth"}, body = "this._context().fillText(text,x,y,maxwidth);")
   301     @Override
   302     public void fillText(String text, double x, double y, double maxWidth) {
   303     }
   304 
   305     public TextMetrics measureText(String text) {
   306         return new TextMetrics(measureTextImpl(text));
   307     }
   308 
   309     @JavaScriptBody(args = {"text"},
   310             body = "return this._context().measureText(text);")
   311     private native Object measureTextImpl(String text);
   312 
   313     @JavaScriptBody(args = {"text", "x", "y"}, body = "this._context().strokeText(text,x,y);")
   314     @Override
   315     public native void strokeText(String text, double x, double y);
   316 
   317     @JavaScriptBody(args = {"text", "x", "y", "maxWidth"}, body = "this._context().strokeText(text,x,y,maxWidth);")
   318     @Override
   319     public native void strokeText(String text, double x, double y, double maxWidth);
   320 
   321     public ImageData createImageData(double x, double y) {
   322         return new ImageData(createImageDataImpl(x, y));
   323     }
   324 
   325     @JavaScriptBody(args = {"x", "y"},
   326             body = "return this._context().createImageData(x,y);")
   327     private native Object createImageDataImpl(double x, double y);
   328 
   329     public ImageData createImageData(ImageData imageData) {
   330         return new ImageData(createImageDataImpl(imageData.getWidth(), imageData.getHeight()));
   331     }
   332 
   333     public ImageData getImageData(double x, double y, double width, double height) {
   334         return new ImageData(getImageDataImpl(x, y, width, height));
   335     }
   336 
   337     @JavaScriptBody(args = {"x", "y", "width", "height"},
   338             body = "return this._context().getImageData(x,y,width,height);")
   339     private native Object getImageDataImpl(double x, double y, double width, double height);
   340 
   341     public void putImageData(ImageData imageData, double x, double y) {
   342         putImageDataImpl(imageData.object(), x, y);
   343     }
   344 
   345     @JavaScriptBody(args = {"imageData", "x", "y"},
   346             body = "this._context().putImageData(imageData,x,y);")
   347     private native void putImageDataImpl(Object imageData, double x, double y);
   348 
   349     public void putImageData(ImageData imageData, double x, double y, double dirtyx, double dirtyy, double dirtywidth, double dirtyheight) {
   350         putImageDataImpl(imageData.object(), x, y, dirtyx, dirtyy, dirtywidth, dirtyheight);
   351     }
   352 
   353     @JavaScriptBody(args = {"imageData", "x", "y", "dirtyx", "dirtyy", "dirtywidth", "dirtyheight"},
   354             body = "this._context().putImageData(imageData,x,y, dirtyx, dirtyy, dirtywidth,dirtyheight);")
   355     private native void putImageDataImpl(Object imageData, double x, double y, double dirtyx, double dirtyy, double dirtywidth, double dirtyheight);
   356 
   357     @JavaScriptBody(args = {"alpha"}, body = "this._context().globalAlpha=alpha;")
   358     @Override
   359     public native void setGlobalAlpha(double alpha);
   360 
   361     @JavaScriptBody(args = {}, body = "return this._context().globalAlpha;")
   362     @Override
   363     public native double getGlobalAlpha();
   364 
   365     @JavaScriptBody(args = {"operation"}, body = "this._context().globalCompositeOperation=operation.valueOf();")
   366     @Override
   367     public native void setGlobalCompositeOperation(String operation);
   368 
   369     @JavaScriptBody(args = {}, body = "return this._context().globalCompositeOperation;")
   370     @Override
   371     public native String getGlobalCompositeOperation();
   372 
   373     public LinearGradient createLinearGradient(double x0, double y0, double x1, double y1) {
   374         return new LinearGradient(createLinearGradientImpl(context, x0, y0, x1, y1));
   375     }
   376 
   377     @JavaScriptBody(args = {"context", "x0", "y0", "x1", "y1"}, body = "return context.createLinearGradient(x0,y0,x1,y1);")
   378     private  native Object createLinearGradientImpl(Object context, double x0, double y0, double x1, double y1);
   379 
   380     public Pattern createPattern(Image image, String repeat) {
   381         return new Pattern(createPatternImpl(context, image, repeat));
   382     }
   383 
   384     @JavaScriptBody(args = {"context", "image", "repeat"}, body = "return context.createPattern(image, repeat);")
   385     private static native Object createPatternImpl(Object context, Image image, String repeat);
   386 
   387     public RadialGradient createRadialGradient(double x0, double y0, double r0, double x1, double y1, double r1) {
   388         return new RadialGradient(createRadialGradientImpl(context, x0, y0, r0, x1, y1, r1));
   389     }
   390 
   391     @JavaScriptBody(args = {"context", "x0", "y0", "r0", "x1", "y1", "r1"}, body = "return context.createRadialGradient(x0,y0,r0,x1,y1,r1);")
   392     private static native Object createRadialGradientImpl(Object context, double x0, double y0, double r0, double x1, double y1, double r1);
   393 }