toni@1129: /** toni@1129: * Back 2 Browser Bytecode Translator Copyright (C) 2012 Jaroslav Tulach toni@1129: * toni@1129: * toni@1129: * This program is free software: you can redistribute it and/or modify it under toni@1129: * the terms of the GNU General Public License as published by the Free Software toni@1129: * Foundation, version 2 of the License. toni@1129: * toni@1129: * This program is distributed in the hope that it will be useful, but WITHOUT toni@1129: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS toni@1129: * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more toni@1129: * details. toni@1129: * toni@1129: * You should have received a copy of the GNU General Public License along with toni@1129: * this program. Look for COPYING file in the top folder. If not, see toni@1129: * http://opensource.org/licenses/GPL-2.0. toni@1128: */ toni@1136: package net.java.html.canvas.spi; toni@1128: toni@1137: import net.java.html.canvas.Dimension; toni@1144: import net.java.html.canvas.Image; toni@1144: import net.java.html.canvas.ImageData; toni@1136: import net.java.html.canvas.Style; toni@1128: toni@1128: /** toni@1136: * Provider API for Canvas. Implement this to add support for your platform. toni@1141: * toni@1128: * @author antonepple toni@1128: */ toni@1128: public interface GraphicsEnvironment { toni@1129: toni@1128: public void arc(double centerX, toni@1128: double centerY, toni@1128: double startAngle, toni@1128: double radius, toni@1128: double endAngle, toni@1128: boolean ccw); toni@1128: toni@1128: public void arcTo(double x1, toni@1128: double y1, toni@1128: double x2, toni@1128: double y2, toni@1128: double r); toni@1128: toni@1128: public boolean isPointInPath(double x, double y); toni@1128: toni@1128: public void fill(); toni@1128: toni@1128: public void stroke(); toni@1128: toni@1128: public void beginPath(); toni@1128: toni@1128: public void closePath(); toni@1128: toni@1128: public void clip(); toni@1128: toni@1128: public void moveTo(double x, double y); toni@1128: toni@1128: public void lineTo(double x, double y); toni@1128: toni@1128: public void quadraticCurveTo(double cpx, double cpy, double x, double y); toni@1128: toni@1128: public void bezierCurveTo(double cp1x, double cp1y, double cp2x, double cp2y, double x, double y); toni@1128: toni@1128: public void fillRect(double x, double y, double width, double height); toni@1128: toni@1128: public void strokeRect(double x, double y, double width, double height); toni@1128: toni@1128: public void clearRect(double x, double y, double width, double height); toni@1128: toni@1128: public void rect(double x, double y, double width, double height); toni@1128: toni@1128: public void save(); toni@1128: toni@1128: public void restore(); toni@1128: toni@1128: public void rotate(double angle); toni@1128: toni@1128: public void transform(double a, double b, double c, double d, double e, double f); toni@1128: toni@1128: public void setTransform(double a, double b, double c, double d, double e, double f); toni@1128: toni@1128: public void translate(double x, double y); toni@1128: toni@1128: public void scale(double x, double y); toni@1128: toni@1144: public Object drawImage(Image image, double x, double y, Object nativeImage); toni@1144: toni@1144: public Object drawImage(Image image, double x, double y, double width, double height, Object nativeImage); toni@1144: toni@1144: public Object drawImage(Image image, double sx, double sy, double sWidth, double sHeight, double x, double y, double width, double height, Object nativeImage); toni@1144: toni@1128: toni@1141: /** toni@1141: * When implementing you can return an Object of your choice to enable toni@1141: * caching. Returning null means no caching. When caching is enabled, and toni@1141: * the cache hasn't been invalidated, the Object you returned will be passed toni@1141: * as a parameter. toni@1141: * toni@1141: * @param style The style object you should use to create your native style toni@1141: * @param nativeStyle your native object if cached, null otherwise toni@1141: * @return return native Object for caching toni@1141: * toni@1141: */ toni@1141: public Object setFillStyle(Style style, Object nativeStyle); toni@1128: toni@1141: /** toni@1141: * When implementing you can return an Object of your choice to enable toni@1141: * caching. Returning null means no caching. When caching is enabled, and toni@1141: * the cache hasn't been invalidated, the Object you returned will be passed toni@1141: * as a parameter. toni@1141: * toni@1141: * @param style The style object you should use to create your native style toni@1141: * @param nativeStyle your native object if cached, null otherwise toni@1141: * @return return native Object for caching toni@1141: * toni@1141: */ toni@1141: public Object setStrokeStyle(Style style, Object nativeStyle); toni@1128: toni@1128: public void setShadowColor(String color); toni@1128: toni@1128: public void setShadowBlur(double blur); toni@1128: toni@1128: public void setShadowOffsetX(double x); toni@1128: toni@1128: public void setShadowOffsetY(double y); toni@1144: toni@1128: public String getShadowColor(); toni@1128: toni@1128: public double getShadowBlur(); toni@1128: toni@1128: public double getShadowOffsetX(); toni@1128: toni@1128: public double getShadowOffsetY(); toni@1128: toni@1128: public String getLineCap(); toni@1128: toni@1128: public void setLineCap(String style); toni@1128: toni@1128: public String getLineJoin(); toni@1128: toni@1128: public void setLineJoin(String style); toni@1128: toni@1128: public double getLineWidth(); toni@1128: toni@1128: public void setLineWidth(double width); toni@1128: toni@1128: public double getMiterLimit(); toni@1128: toni@1128: public void setMiterLimit(double limit); toni@1128: toni@1128: public String getFont(); toni@1128: toni@1128: public void setFont(String font); toni@1128: toni@1128: public String getTextAlign(); toni@1128: toni@1128: public void setTextAlign(String textAlign); toni@1128: toni@1128: public String getTextBaseline(); toni@1128: toni@1128: public void setTextBaseline(String textbaseline); toni@1128: toni@1128: public void fillText(String text, double x, double y); toni@1128: toni@1128: public void fillText(String text, double x, double y, double maxWidth); toni@1128: toni@1128: public Dimension measureText(String text); toni@1128: toni@1128: public void strokeText(String text, double x, double y); toni@1128: toni@1128: public void strokeText(String text, double x, double y, double maxWidth); toni@1128: toni@1144: public ImageData createPixelMap(double x, double y); toni@1144: toni@1144: public ImageData createPixelMap(ImageData imageData); toni@1144: toni@1144: public ImageData getPixelMap(double x, double y, double width, double height); toni@1144: toni@1144: public void putPixelMap(ImageData imageData, double x, double y); toni@1144: toni@1144: public void putPixelMap(ImageData imageData, double x, double y, double dirtyx, double dirtyy, double dirtywidth, double dirtyheight); toni@1144: toni@1128: public void setGlobalAlpha(double alpha); toni@1128: toni@1128: public double getGlobalAlpha(); toni@1128: toni@1128: public void setGlobalCompositeOperation(String operation); toni@1128: toni@1128: public String getGlobalCompositeOperation(); toni@1144: toni@1128: public int getHeight(); toni@1128: toni@1128: public int getWidth(); toni@1128: toni@1128: public void setHeight(int height); toni@1128: toni@1128: public void setWidth(int width); toni@1128: }