001 /* 002 * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 017 /* $Id: LineObject.java,v 88b901bf20fb 2008/06/07 14:12:27 maxberger $ */ 018 019 package net.sourceforge.jeuclid.layout; 020 021 import java.awt.BasicStroke; 022 import java.awt.Color; 023 import java.awt.Graphics2D; 024 import java.awt.Stroke; 025 import java.awt.geom.Line2D; 026 027 /** 028 * @version $Revision: 88b901bf20fb $ 029 */ 030 public class LineObject implements GraphicsObject { 031 032 private final float x1; 033 034 private final float y1; 035 036 private final float x2; 037 038 private final float y2; 039 040 private final float width; 041 042 private final Color col; 043 044 private final boolean dash; 045 046 /** 047 * Default Constructor. 048 * 049 * @param color 050 * Color of the line. 051 * @param lineWidth 052 * StrokeWidth of the line. 053 * @param offsetY 054 * Y Offset from baseline. 055 * @param offsetX 056 * X Offset from left. 057 * @param offsetY2 058 * Y2 Offset from baseline. 059 * @param offsetX2 060 * X2 Offset from left. 061 */ 062 public LineObject(final float offsetX, final float offsetY, 063 final float offsetX2, final float offsetY2, final float lineWidth, 064 final Color color) { 065 this.x1 = offsetX; 066 this.y1 = offsetY; 067 this.x2 = offsetX2; 068 this.y2 = offsetY2; 069 this.width = lineWidth; 070 this.col = color; 071 this.dash = false; 072 } 073 074 /** 075 * Default Constructor. 076 * 077 * @param color 078 * Color of the line. 079 * @param lineWidth 080 * StrokeWidth of the line. 081 * @param offsetY 082 * Y Offset from baseline. 083 * @param offsetX 084 * X Offset from left. 085 * @param offsetY2 086 * Y2 Offset from baseline. 087 * @param offsetX2 088 * X2 Offset from left. 089 * @param dashed 090 * if true line is dashed instead of solid. 091 */ 092 public LineObject(final float offsetX, final float offsetY, 093 final float offsetX2, final float offsetY2, final float lineWidth, 094 final Color color, final boolean dashed) { 095 this.x1 = offsetX; 096 this.y1 = offsetY; 097 this.x2 = offsetX2; 098 this.y2 = offsetY2; 099 this.width = lineWidth; 100 this.col = color; 101 this.dash = dashed; 102 } 103 104 /** {@inheritDoc} */ 105 public void paint(final float x, final float y, final Graphics2D g) { 106 g.setColor(this.col); 107 final Stroke oldStroke = g.getStroke(); 108 if (this.dash) { 109 final float dashWidth = 3.0f * this.width; 110 g.setStroke(new BasicStroke(this.width, BasicStroke.CAP_SQUARE, 111 BasicStroke.JOIN_BEVEL, this.width, new float[] { 112 dashWidth, dashWidth, }, 0)); 113 } else { 114 g.setStroke(new BasicStroke(this.width)); 115 } 116 g.draw(new Line2D.Float(x + this.x1, y + this.y1, x + this.x2, y 117 + this.y2)); 118 g.setStroke(oldStroke); 119 120 } 121 }