1 /* Copyright (C) 2000, 2002, 2004, 2006, Free Software Foundation 2 3 This file is part of GNU Classpath. 4 5 GNU Classpath 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; either version 2, or (at your option) 8 any later version. 9 10 GNU Classpath is distributed in the hope that it will be useful, but 11 WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 General Public License for more details. 14 15 You should have received a copy of the GNU General Public License 16 along with GNU Classpath; see the file COPYING. If not, write to the 17 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 18 02110-1301 USA. 19 20 Linking this library statically or dynamically with other modules is 21 making a combined work based on this library. Thus, the terms and 22 conditions of the GNU General Public License cover the whole 23 combination. 24 25 As a special exception, the copyright holders of this library give you 26 permission to link this library with independent modules to produce an 27 executable, regardless of the license terms of these independent 28 modules, and to copy and distribute the resulting executable under 29 terms of your choice, provided that you also meet, for each linked 30 independent module, the terms and conditions of the license of that 31 module. An independent module is a module which is not derived from 32 or based on this library. If you modify this library, you may extend 33 this exception to your version of the library, but you are not 34 obligated to do so. If you do not wish to do so, delete this 35 exception statement from your version. */ 36 37 38 package java.awt; 39 40 import java.awt.font.FontRenderContext; 41 import java.awt.font.GlyphVector; 42 import java.awt.geom.AffineTransform; 43 import java.awt.image.BufferedImage; 44 import java.awt.image.BufferedImageOp; 45 import java.awt.image.ImageObserver; 46 import java.awt.image.RenderedImage; 47 import java.awt.image.renderable.RenderableImage; 48 import java.awt.print.PageFormat; 49 import java.awt.print.Printable; 50 import java.text.AttributedCharacterIterator; 51 import java.util.Map; 52 53 /** 54 * An abstract class defining a device independent two-dimensional vector 55 * graphics API. Concrete subclasses implement this API for output of 56 * vector graphics to: 57 * <p> 58 * <ul> 59 * <li>a {@link javax.swing.JComponent} - in the 60 * {@link javax.swing.JComponent#paint(Graphics)} method, the incoming 61 * {@link Graphics} should always be an instance of 62 * <code>Graphics2D</code>;</li> 63 * <li>a {@link BufferedImage} - see 64 * {@link BufferedImage#createGraphics()};</li> 65 * <li>a {@link java.awt.print.PrinterJob} - in the 66 * {@link Printable#print(Graphics, PageFormat, int)} method, the incoming 67 * {@link Graphics} should always be an instance of 68 * <code>Graphics2D</code>.</li> 69 * </ul> 70 * <p> 71 * Third party libraries provide support for output to other formats via this 72 * API, including encapsulated postscript (EPS), portable document format (PDF), 73 * and scalable vector graphics (SVG). 74 * 75 * @author Rolf W. Rasmussen (rolfwr@ii.uib.no) 76 */ 77 public abstract class Graphics2D extends Graphics 78 { 79 Graphics2D()80 protected Graphics2D() 81 { 82 } 83 draw3DRect(int x, int y, int width, int height, boolean raised)84 public void draw3DRect(int x, int y, int width, int height, 85 boolean raised) 86 { 87 super.draw3DRect(x, y, width, height, raised); 88 } 89 fill3DRect(int x, int y, int width, int height, boolean raised)90 public void fill3DRect(int x, int y, int width, int height, 91 boolean raised) 92 { 93 super.fill3DRect(x, y, width, height, raised); 94 } 95 96 /** 97 * Draws an outline around a shape using the current stroke and paint. 98 * 99 * @param shape the shape (<code>null</code> not permitted). 100 * 101 * @see #getStroke() 102 * @see #getPaint() 103 */ draw(Shape shape)104 public abstract void draw(Shape shape); 105 drawImage(Image image, AffineTransform xform, ImageObserver obs)106 public abstract boolean drawImage(Image image, AffineTransform xform, 107 ImageObserver obs); 108 drawImage(BufferedImage image, BufferedImageOp op, int x, int y)109 public abstract void drawImage(BufferedImage image, 110 BufferedImageOp op, 111 int x, 112 int y); 113 drawRenderedImage(RenderedImage image, AffineTransform xform)114 public abstract void drawRenderedImage(RenderedImage image, 115 AffineTransform xform); 116 drawRenderableImage(RenderableImage image, AffineTransform xform)117 public abstract void drawRenderableImage(RenderableImage image, 118 AffineTransform xform); 119 120 /** 121 * Draws a string at the specified location, using the current font. 122 * 123 * @param text the string to draw. 124 * @param x the x-coordinate. 125 * @param y the y-coordinate. 126 * 127 * @see Graphics#setFont(Font) 128 */ drawString(String text, int x, int y)129 public abstract void drawString(String text, int x, int y); 130 131 /** 132 * Draws a string at the specified location, using the current font. 133 * 134 * @param text the string to draw. 135 * @param x the x-coordinate. 136 * @param y the y-coordinate. 137 * 138 * @see Graphics#setFont(Font) 139 */ drawString(String text, float x, float y)140 public abstract void drawString(String text, float x, float y); 141 142 /** 143 * Draws an attributed string at the specified location. 144 * 145 * @param iterator the source of the attributed text. 146 * @param x the x-coordinate. 147 * @param y the y-coordinate. 148 */ drawString(AttributedCharacterIterator iterator, int x, int y)149 public abstract void drawString(AttributedCharacterIterator iterator, 150 int x, int y); 151 152 /** 153 * Draws an attributed string at the specified location. 154 * 155 * @param iterator the source of the attributed text. 156 * @param x the x-coordinate. 157 * @param y the y-coordinate. 158 */ drawString(AttributedCharacterIterator iterator, float x, float y)159 public abstract void drawString(AttributedCharacterIterator iterator, 160 float x, float y); 161 162 /** 163 * Fills the interior of the specified <code>shape</code> using the current 164 * paint. 165 * 166 * @param shape the shape to fill (<code>null</code> not permitted). 167 * 168 * @see #draw(Shape) 169 * @see #getPaint() 170 */ fill(Shape shape)171 public abstract void fill(Shape shape); 172 hit(Rectangle rect, Shape text, boolean onStroke)173 public abstract boolean hit(Rectangle rect, Shape text, 174 boolean onStroke); 175 getDeviceConfiguration()176 public abstract GraphicsConfiguration getDeviceConfiguration(); 177 178 /** 179 * Sets the current compositing rule. 180 * 181 * @param comp the composite. 182 * 183 * @see #getComposite() 184 */ setComposite(Composite comp)185 public abstract void setComposite(Composite comp); 186 187 /** 188 * Sets the paint to be used for subsequent drawing operations. 189 * 190 * @param paint the paint (<code>null</code> not permitted). 191 * 192 * @see #getPaint() 193 */ setPaint(Paint paint)194 public abstract void setPaint(Paint paint); 195 196 /** 197 * Sets the stroke to be used for subsequent drawing operations. 198 * 199 * @param stroke the stroke (<code>null</code> not permitted). 200 * 201 * @see #getStroke() 202 */ setStroke(Stroke stroke)203 public abstract void setStroke(Stroke stroke); 204 205 /** 206 * Adds or updates a hint in the current rendering hints table. 207 * 208 * @param hintKey the hint key. 209 * @param hintValue the hint value. 210 */ setRenderingHint(RenderingHints.Key hintKey, Object hintValue)211 public abstract void setRenderingHint(RenderingHints.Key hintKey, 212 Object hintValue); 213 214 /** 215 * Returns the current value of a rendering hint. 216 * 217 * @param hintKey the key for the hint. 218 * 219 * @return The value for the specified hint. 220 */ getRenderingHint(RenderingHints.Key hintKey)221 public abstract Object getRenderingHint(RenderingHints.Key hintKey); 222 223 /** 224 * Replaces the current rendering hints with the supplied hints. 225 * 226 * @param hints the hints. 227 * 228 * @see #addRenderingHints(Map) 229 */ setRenderingHints(Map<?,?> hints)230 public abstract void setRenderingHints(Map<?,?> hints); 231 232 /** 233 * Adds/updates the rendering hint. 234 * 235 * @param hints the hints to add or update. 236 */ addRenderingHints(Map<?,?> hints)237 public abstract void addRenderingHints(Map<?,?> hints); 238 239 /** 240 * Returns the current rendering hints. 241 * 242 * @return The current rendering hints. 243 */ getRenderingHints()244 public abstract RenderingHints getRenderingHints(); 245 translate(int x, int y)246 public abstract void translate(int x, int y); 247 translate(double tx, double ty)248 public abstract void translate(double tx, double ty); 249 rotate(double theta)250 public abstract void rotate(double theta); 251 rotate(double theta, double x, double y)252 public abstract void rotate(double theta, double x, double y); 253 scale(double scaleX, double scaleY)254 public abstract void scale(double scaleX, double scaleY); 255 shear(double shearX, double shearY)256 public abstract void shear(double shearX, double shearY); 257 258 /** 259 * Sets the current transform to a concatenation of <code>transform</code> 260 * and the existing transform. 261 * 262 * @param transform the transform. 263 */ transform(AffineTransform transform)264 public abstract void transform(AffineTransform transform); 265 266 /** 267 * Sets the current transform. If the caller specifies a <code>null</code> 268 * transform, this method should set the current transform to the 269 * identity transform. 270 * 271 * @param transform the transform (<code>null</code> permitted). 272 * 273 * @see #getTransform() 274 */ setTransform(AffineTransform transform)275 public abstract void setTransform(AffineTransform transform); 276 277 /** 278 * Returns the current transform. 279 * 280 * @return The current transform. 281 * 282 * @see #setTransform(AffineTransform) 283 */ getTransform()284 public abstract AffineTransform getTransform(); 285 286 /** 287 * Returns the current paint. 288 * 289 * @return The current paint. 290 * 291 * @see #setPaint(Paint) 292 */ getPaint()293 public abstract Paint getPaint(); 294 295 /** 296 * Returns the current compositing rule. 297 * 298 * @return The current compositing rule. 299 * 300 * @see #setComposite(Composite) 301 */ getComposite()302 public abstract Composite getComposite(); 303 304 /** 305 * Sets the background color (used by the 306 * {@link Graphics#clearRect(int, int, int, int)} method). 307 * 308 * @param color the color. 309 * 310 * @see #getBackground() 311 */ setBackground(Color color)312 public abstract void setBackground(Color color); 313 314 /** 315 * Returns the color used by the 316 * {@link Graphics#clearRect(int, int, int, int)} method. 317 * 318 * @return The background color. 319 * 320 * @see #setBackground(Color) 321 */ getBackground()322 public abstract Color getBackground(); 323 324 /** 325 * Returns the current stroke. 326 * 327 * @return The current stroke. 328 * 329 * @see #setStroke(Stroke) 330 */ getStroke()331 public abstract Stroke getStroke(); 332 333 /** 334 * Sets the clip region to the intersection of the current clipping region 335 * and <code>s</code>. 336 * 337 * @param s the shape to intersect with the current clipping region. 338 * 339 * @see Graphics#setClip(Shape) 340 */ clip(Shape s)341 public abstract void clip(Shape s); 342 343 /** 344 * Returns the font render context. 345 * 346 * @return The font render context. 347 */ getFontRenderContext()348 public abstract FontRenderContext getFontRenderContext(); 349 350 /** 351 * Draws a glyph vector at the specified location. 352 * 353 * @param g the glyph vector. 354 * @param x the x-coordinate. 355 * @param y the y-coordinate. 356 */ drawGlyphVector(GlyphVector g, float x, float y)357 public abstract void drawGlyphVector(GlyphVector g, float x, float y); 358 } 359