1 /*******************************************************************************
\r
2 * Copyright (c) 2007, 2010 Association for Decentralized Information Management
\r
3 * in Industry THTH ry.
\r
4 * All rights reserved. This program and the accompanying materials
\r
5 * are made available under the terms of the Eclipse Public License v1.0
\r
6 * which accompanies this distribution, and is available at
\r
7 * http://www.eclipse.org/legal/epl-v10.html
\r
10 * VTT Technical Research Centre of Finland - initial API and implementation
\r
11 *******************************************************************************/
\r
14 * @author Toni Kalajainen
\r
16 package org.simantics.g2d.chassis;
\r
18 import java.awt.Color;
\r
19 import java.awt.Composite;
\r
20 import java.awt.Font;
\r
21 import java.awt.FontMetrics;
\r
22 import java.awt.Graphics;
\r
23 import java.awt.Graphics2D;
\r
24 import java.awt.GraphicsConfiguration;
\r
25 import java.awt.Image;
\r
26 import java.awt.Paint;
\r
27 import java.awt.Rectangle;
\r
28 import java.awt.RenderingHints;
\r
29 import java.awt.Shape;
\r
30 import java.awt.Stroke;
\r
31 import java.awt.RenderingHints.Key;
\r
32 import java.awt.font.FontRenderContext;
\r
33 import java.awt.font.GlyphVector;
\r
34 import java.awt.geom.AffineTransform;
\r
35 import java.awt.image.BufferedImage;
\r
36 import java.awt.image.BufferedImageOp;
\r
37 import java.awt.image.ImageObserver;
\r
38 import java.awt.image.RenderedImage;
\r
39 import java.awt.image.renderable.RenderableImage;
\r
40 import java.io.PrintStream;
\r
41 import java.text.AttributedCharacterIterator;
\r
42 import java.util.Arrays;
\r
43 import java.util.Map;
\r
45 public class DebugGraphics extends GraphicsAdapter {
\r
47 public final PrintStream o;
\r
49 public DebugGraphics(Graphics2D g, PrintStream out)
\r
55 public DebugGraphics(Graphics2D g)
\r
58 this.o = System.out;
\r
61 public void print(Object ... args)
\r
63 StackTraceElement[] e = Thread.currentThread().getStackTrace();
\r
64 o.print( e[2].getMethodName() );
\r
65 if (args!=null && args.length>0) {
\r
66 o.print(Arrays.toString(args));
\r
72 public void addRenderingHints(Map<?, ?> hints) {
\r
74 super.addRenderingHints(hints);
\r
78 public void clip(Shape s) {
\r
84 public void draw(Shape s) {
\r
90 public void drawGlyphVector(GlyphVector g, float x, float y) {
\r
91 super.drawGlyphVector(g, x, y);
\r
96 public boolean drawImage(Image img, AffineTransform xform, ImageObserver obs) {
\r
97 print(img, xform, obs);
\r
98 return g.drawImage(img, xform, obs);
\r
102 public void drawImage(BufferedImage img, BufferedImageOp op, int x, int y) {
\r
103 print(img, op, x, y);
\r
104 super.drawImage(img, op, x, y);
\r
108 public void drawRenderableImage(RenderableImage img, AffineTransform xform) {
\r
110 super.drawRenderableImage(img, xform);
\r
114 public void drawRenderedImage(RenderedImage img, AffineTransform xform) {
\r
116 super.drawRenderedImage(img, xform);
\r
120 public void drawString(String str, int x, int y) {
\r
122 super.drawString(str, x, y);
\r
126 public void drawString(String str, float x, float y) {
\r
128 super.drawString(str, x, y);
\r
132 public void drawString(AttributedCharacterIterator iterator, int x, int y) {
\r
133 print(iterator, x, y);
\r
134 super.drawString(iterator, x, y);
\r
138 public void drawString(AttributedCharacterIterator iterator, float x, float y) {
\r
139 print(iterator, x, y);
\r
140 super.drawString(iterator, x, y);
\r
144 public void fill(Shape s) {
\r
150 public Color getBackground() {
\r
152 return g.getBackground();
\r
156 public Composite getComposite() {
\r
158 return g.getComposite();
\r
162 public GraphicsConfiguration getDeviceConfiguration() {
\r
164 return g.getDeviceConfiguration();
\r
168 public FontRenderContext getFontRenderContext() {
\r
170 return g.getFontRenderContext();
\r
174 public Paint getPaint() {
\r
176 return g.getPaint();
\r
180 public Object getRenderingHint(Key hintKey) {
\r
182 return g.getRenderingHint(hintKey);
\r
186 public RenderingHints getRenderingHints() {
\r
188 return g.getRenderingHints();
\r
192 public Stroke getStroke() {
\r
194 return g.getStroke();
\r
198 public AffineTransform getTransform() {
\r
200 return g.getTransform();
\r
204 public boolean hit(Rectangle rect, Shape s, boolean onStroke) {
\r
205 print(rect, s, onStroke);
\r
206 return g.hit(rect, s, onStroke);
\r
210 public void rotate(double theta) {
\r
212 super.rotate(theta);
\r
216 public void rotate(double theta, double x, double y) {
\r
217 print(theta, x, y);
\r
218 super.rotate(theta, x, y);
\r
222 public void scale(double sx, double sy) {
\r
224 super.scale(sx, sy);
\r
228 public void setBackground(Color color) {
\r
230 super.setBackground(color);
\r
234 public void setComposite(Composite comp) {
\r
236 super.setComposite(comp);
\r
240 public void setPaint(Paint paint) {
\r
242 super.setPaint(paint);
\r
246 public void setRenderingHint(Key hintKey, Object hintValue) {
\r
247 print(hintKey, hintValue);
\r
248 super.setRenderingHint(hintKey, hintValue);
\r
252 public void setRenderingHints(Map<?, ?> hints) {
\r
254 super.setRenderingHints(hints);
\r
258 public void setStroke(Stroke s) {
\r
260 super.setStroke(s);
\r
264 public void setTransform(AffineTransform Tx) {
\r
266 super.setTransform(Tx);
\r
270 public void shear(double shx, double shy) {
\r
272 super.shear(shx, shy);
\r
276 public void transform(AffineTransform Tx) {
\r
278 super.transform(Tx);
\r
282 public void translate(int x, int y) {
\r
284 super.translate(x, y);
\r
288 public void translate(double tx, double ty) {
\r
290 super.translate(tx, ty);
\r
294 public void clearRect(int x, int y, int width, int height) {
\r
295 print(x, y, width, height);
\r
296 super.clearRect(x, y, width, height);
\r
300 public void clipRect(int x, int y, int width, int height) {
\r
301 print(x, y, width, height);
\r
302 super.clearRect(x, y, width, height);
\r
306 public void copyArea(int x, int y, int width, int height, int dx, int dy) {
\r
307 print(x, y, width, height, dx, dy);
\r
308 super.copyArea(x, y, width, height, dx, dy);
\r
312 public Graphics create() {
\r
314 return new DebugGraphics((Graphics2D) g.create());
\r
318 public void dispose() {
\r
324 public void drawArc(int x, int y, int width, int height, int startAngle, int arcAngle) {
\r
325 print(x, y, width, height, startAngle, arcAngle);
\r
326 super.drawArc(x, y, width, height, startAngle, arcAngle);
\r
330 public boolean drawImage(Image img, int x, int y, ImageObserver observer) {
\r
331 print(img, x, y, observer);
\r
332 return g.drawImage(img, x, y, observer);
\r
336 public boolean drawImage(Image img, int x, int y, Color bgcolor, ImageObserver observer) {
\r
337 print(img, x, y, bgcolor, observer);
\r
338 return g.drawImage(img, x, y, bgcolor, observer);
\r
342 public boolean drawImage(Image img, int x, int y, int width, int height, ImageObserver observer) {
\r
343 print(img, x, y, width, height, observer);
\r
344 return g.drawImage(img, x, y, width, height, observer);
\r
348 public boolean drawImage(Image img, int x, int y, int width, int height, Color bgcolor, ImageObserver observer) {
\r
349 print(img, x, y, width, height, bgcolor, observer);
\r
350 return g.drawImage(img, x, y, width, height, bgcolor, observer);
\r
354 public boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2,
\r
355 ImageObserver observer) {
\r
356 print(img, dx1, dy1, dx2, dy2, sx1, sy1, sx2, sy2, observer);
\r
357 return g.drawImage(img, dx1, dy1, dx2, dy2, sx1, sy1, sx2, sy2, observer);
\r
361 public boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2,
\r
362 Color bgcolor, ImageObserver observer) {
\r
363 print(img, dx1, dy1, dx2, dy2, sx1, sy1, sx2, sy2, bgcolor, observer);
\r
364 return g.drawImage(img, dx1, dy1, dx2, dy2, sx1, sy1, sx2, sy2, bgcolor, observer);
\r
368 public void drawLine(int x1, int y1, int x2, int y2) {
\r
369 print(x1, y1, x2, y2);
\r
370 super.drawLine(x1, y1, x2, y2);
\r
374 public void drawOval(int x, int y, int width, int height) {
\r
375 print(x, y, width, height);
\r
376 super.drawOval(x, y, width, height);
\r
380 public void drawPolygon(int[] points, int[] points2, int points3) {
\r
381 print(points, points2, points3);
\r
382 super.drawPolygon(points, points2, points3);
\r
386 public void drawPolyline(int[] points, int[] points2, int points3) {
\r
387 print(points, points2, points3);
\r
388 super.drawPolyline(points, points2, points3);
\r
392 public void drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) {
\r
393 print(x, y, width, height, arcWidth, arcHeight);
\r
394 super.drawRoundRect(x, y, width, height, arcWidth, arcHeight);
\r
398 public void fillArc(int x, int y, int width, int height, int startAngle, int arcAngle) {
\r
399 print(x, y, width, height, startAngle, arcAngle);
\r
400 super.fillArc(x, y, width, height, startAngle, arcAngle);
\r
404 public void fillOval(int x, int y, int width, int height) {
\r
405 print(x, y, width, height);
\r
406 super.fillOval(x, y, width, height);
\r
410 public void fillPolygon(int[] points, int[] points2, int points3) {
\r
411 print(points, points2, points3);
\r
412 super.fillPolygon(points, points2, points3);
\r
416 public void fillRect(int x, int y, int width, int height) {
\r
417 print(x, y, width, height);
\r
418 super.fillRect(x, y, width, height);
\r
422 public void fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) {
\r
423 print(x, y, width, height, arcWidth, arcHeight);
\r
424 super.fillRoundRect(x, y, width, height, arcWidth, arcHeight);
\r
428 public Shape getClip() {
\r
430 return g.getClip();
\r
434 public Rectangle getClipBounds() {
\r
436 return g.getClipBounds();
\r
440 public Color getColor() {
\r
442 return g.getColor();
\r
446 public Font getFont() {
\r
448 return g.getFont();
\r
452 public FontMetrics getFontMetrics(Font f) {
\r
454 return g.getFontMetrics(f);
\r
458 public void setClip(Shape clip) {
\r
460 super.setClip(clip);
\r
464 public void setClip(int x, int y, int width, int height) {
\r
465 print(x, y, width, height);
\r
466 super.setClip(x, y, width, height);
\r
470 public void setColor(Color c) {
\r
476 public void setFont(Font font) {
\r
478 super.setFont(font);
\r
482 public void setPaintMode() {
\r
484 super.setPaintMode();
\r
488 public void setXORMode(Color c1) {
\r
490 super.setXORMode(c1);
\r