1package de.ur.mi.oop.app;
3import de.ur.mi.oop.fonts.FontPool;
4import de.ur.mi.oop.graphics.*;
5import de.ur.mi.oop.graphics.Label;
6import de.ur.mi.oop.graphics.Point;
10import java.awt.Rectangle;
11import java.awt.geom.AffineTransform;
12import java.awt.geom.Arc2D;
13import java.awt.geom.Ellipse2D;
14import java.awt.geom.Rectangle2D;
22 private RenderingHints renderingHints;
25 this.setOpaque(
false);
26 createRenderingHints();
29 private void createRenderingHints() {
30 renderingHints =
new RenderingHints(RenderingHints.KEY_ANTIALIASING,
31 RenderingHints.VALUE_ANTIALIAS_ON);
32 renderingHints.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_SPEED);
37 this.components = components;
42 super.paintComponent(g);
43 Graphics2D g2d = (Graphics2D) g;
44 g2d.setRenderingHints(renderingHints);
48 private void draw(Graphics2D g2d) {
49 if (components !=
null) {
51 drawComponent(g2d, component);
56 private void drawComponent(Graphics2D g2d,
GraphicsObject object) {
57 switch (
object.getType()) {
59 drawArc(g2d, (
Arc)
object);
62 drawCircle(g2d, (
Circle)
object);
65 drawEllipse(g2d, (
Ellipse)
object);
68 drawImage(g2d, (de.ur.mi.oop.graphics.Image)
object);
71 drawLabel(g2d, (de.ur.mi.oop.graphics.Label)
object);
74 drawLine(g2d, (
Line)
object);
77 drawPieArc(g2d, (
Arc)
object);
81 drawRectangle(g2d, (de.ur.mi.oop.graphics.Rectangle)
object);
88 private void drawArc(Graphics2D g2d,
Arc arc) {
89 Arc2D arcShape =
new Arc2D.Float(
96 drawShape(g2d, arc, arcShape);
99 private void drawCircle(Graphics2D g2d,
Circle circle) {
100 Ellipse2D circleShape =
new Ellipse2D.Float(
106 drawShape(g2d, circle, circleShape);
109 private void drawEllipse(Graphics2D g2d,
Ellipse ellipse) {
110 Ellipse2D ellipseShape =
new Ellipse2D.Float(
116 drawShape(g2d, ellipse, ellipseShape);
119 private void drawImage(Graphics2D g2d, de.ur.mi.oop.graphics.Image image) {
120 AffineTransform rotatedTransform = getRotationTransformForObject(image);
121 rotatedTransform.translate(image.getXPos(), image.getYPos());
122 rotatedTransform.scale(1, 1);
123 g2d.drawImage(image.getImage(), rotatedTransform,
null);
126 private void drawLabel(Graphics2D g2d,
Label label) {
127 AffineTransform originalTransform = g2d.getTransform();
132 Font originalFont = FontPool.getFont(label.
getFont(), Font.PLAIN, label.
getFontSize());
133 g2d.setFont(originalFont.deriveFont(getRotationTransformForObject(label)));
136 g2d.scale(originalTransform.getScaleX(), originalTransform.getScaleY());
137 g2d.drawString(label.
getText(), 0, 0);
138 g2d.setTransform(originalTransform);
141 private void drawLine(Graphics2D g2d,
Line line) {
144 g2d.setStroke(stroke);
152 private void drawPieArc(Graphics2D g2d,
Arc arc) {
153 Arc2D arcShape =
new Arc2D.Float(
160 drawShape(g2d, arc, arcShape);
163 private void drawRectangle(Graphics2D g2d, de.ur.mi.oop.graphics.Rectangle rect) {
164 Rectangle2D rectShape =
new Rectangle.Float(
170 drawShape(g2d, rect, rectShape);
173 private void drawShape(Graphics2D g2d,
GraphicsObject graphicsObject, Shape shape) {
179 g2d.setStroke(stroke);
180 g2d.setPaint(strokeColor);
192 double rotationAngleInRadians =
object.getRotationAngleInRadians();
193 Point rotationOrigin =
object.getRotationOrigin();
194 return AffineTransform.getRotateInstance(rotationAngleInRadians, rotationOrigin.
getXPos(), rotationOrigin.
getYPos());
void setComponents(GraphicsObject[] components)
void paintComponent(Graphics g)
java.awt.Color asAWTColor()