/**
* pdfXtk - PDF Extraction Toolkit
* Copyright (c) by the authors/contributors. All rights reserved.
* This project includes code from PDFBox and TouchGraph.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* 3. Neither the names pdfXtk or PDF Extraction Toolkit; nor the names of its
* contributors may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* http://pdfxtk.sourceforge.net
*
*/
package at.ac.tuwien.dbai.pdfwrap.model.document;
import java.awt.*;
import java.util.ArrayList;
import java.util.List;
/**
* Rectangular segment document element; represents
* a rectangle drawn using ruling lines on the page
*
* @author Tamir Hassan, pdfanalyser@tamirhassan.com
* @version PDF Analyser 0.9
*/
public class RectSegment extends GenericSegment
{
/**
* Constructor.
*
* @param x1 The x1 coordinate of the segment.
* @param x2 The x2 coordinate of the segment.
* @param y1 The y1 coordinate of the segment.
* @param y2 The y2 coordinate of the segment.
*/
protected Color fillColor;
protected Color lineColor;
protected boolean isFilled;
public RectSegment(
float x1,
float x2,
float y1,
float y2
)
{
super(x1, x2, y1, y2);
this.isFilled = false;
}
public List<LineSegment> toLines()
{
ArrayList<LineSegment> retVal = new ArrayList<LineSegment>();
// if this rectangle is just a THICK LINE
if (this.getWidth() < 3.0f || this.getHeight() < 3.0f)
{
// the constructor of Line automatically
// determines its direction.
retVal.add(new LineSegment(this.getX1(), this.getX2(),
this.getY1(), this.getY2()));
return retVal;
}
else
{
// add top line
retVal.add(new LineSegment(x1, x2, y2, y2));
// add bottom line
retVal.add(new LineSegment(x1, x2, y1, y1));
// add left line
retVal.add(new LineSegment(x1, x1, y1, y2));
// add right line
retVal.add(new LineSegment(x2, x2, y1, y2));
return retVal;
}
}
public Color getFillColor()
{
return fillColor;
}
public void setFillColor(Color fillColor)
{
this.fillColor = fillColor;
}
public boolean isFilled()
{
return isFilled;
}
public void setFilled(boolean isFilled)
{
this.isFilled = isFilled;
}
public Color getLineColor()
{
return lineColor;
}
public void setLineColor(Color lineColor)
{
this.lineColor = lineColor;
}
public String tagName()
{
if (isFilled)
return "filled-rect";
else return super.tagName();
}
}