/* * Copyright (c) 2014 tabletoptool.com team. * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html * * Contributors: * rptools.com team - initial implementation * tabletoptool.com team - further development */ package com.t3.model.drawing; import java.awt.Graphics2D; import java.awt.Point; import java.awt.RenderingHints; import java.awt.geom.Area; import com.t3.xstreamversioned.version.SerializationVersion; /** * An Cross */ @SerializationVersion(0) public class Cross extends AbstractDrawing { protected Point startPoint; protected Point endPoint; private transient java.awt.Rectangle bounds; public Cross(int startX, int startY, int endX, int endY) { startPoint = new Point(startX, startY); endPoint = new Point(endX, endY); } @Override public Area getArea() { return new Area(getBounds()); } /* (non-Javadoc) * @see com.t3.model.drawing.Drawable#getBounds() */ @Override public java.awt.Rectangle getBounds() { if (bounds == null) { int x = Math.min(startPoint.x, endPoint.x); int y = Math.min(startPoint.y, endPoint.y); int width = Math.abs(endPoint.x - startPoint.x); int height = Math.abs(endPoint.y - startPoint.y); bounds = new java.awt.Rectangle(x, y, width, height); } return bounds; } public Point getStartPoint() { return startPoint; } public Point getEndPoint() { return endPoint; } @Override protected void draw(Graphics2D g) { Object oldAA = g.getRenderingHint(RenderingHints.KEY_ANTIALIASING); g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF); //g.drawRect(minX, minY, width, height); g.drawLine(startPoint.x, startPoint.y, endPoint.x, endPoint.y); g.drawLine(startPoint.x, endPoint.y, endPoint.x, startPoint.y); g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, oldAA); } @Override protected void drawBackground(Graphics2D g) { int minX = Math.min(startPoint.x, endPoint.x); int minY = Math.min(startPoint.y, endPoint.y); int width = Math.abs(startPoint.x - endPoint.x); int height = Math.abs(startPoint.y - endPoint.y); Object oldAA = g.getRenderingHint(RenderingHints.KEY_ANTIALIASING); g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF); g.fillRect(minX, minY, width, height); g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, oldAA); } }