196 lines
5.1 KiB
Java
Raw Normal View History

package org.apache.poi.hssf.usermodel;
/**
* An abstract shape.
*
* @author Glen Stampoultzis (glens at apache.org)
*/
public abstract class HSSFShape
{
public static final int LINEWIDTH_ONE_PT = 12700;
public static final int LINEWIDTH_DEFAULT = 9525;
public static final int LINESTYLE_SOLID = 0; // Solid (continuous) pen
public static final int LINESTYLE_DASHSYS = 1; // PS_DASH system dash style
public static final int LINESTYLE_DOTSYS = 2; // PS_DOT system dash style
public static final int LINESTYLE_DASHDOTSYS = 3; // PS_DASHDOT system dash style
public static final int LINESTYLE_DASHDOTDOTSYS = 4; // PS_DASHDOTDOT system dash style
public static final int LINESTYLE_DOTGEL = 5; // square dot style
public static final int LINESTYLE_DASHGEL = 6; // dash style
public static final int LINESTYLE_LONGDASHGEL = 7; // long dash style
public static final int LINESTYLE_DASHDOTGEL = 8; // dash short dash
public static final int LINESTYLE_LONGDASHDOTGEL = 9; // long dash short dash
public static final int LINESTYLE_LONGDASHDOTDOTGEL = 10; // long dash short dash short dash
public static final int LINESTYLE_NONE = -1;
HSSFShape parent;
HSSFAnchor anchor;
int lineStyleColor = 0x08000040;
int fillColor = 0x08000009;
int lineWidth = LINEWIDTH_DEFAULT; // 12700 = 1pt
int lineStyle = LINESTYLE_SOLID;
boolean noFill = false;
/**
* Create a new shape with the specified parent and anchor.
*/
HSSFShape( HSSFShape parent, HSSFAnchor anchor )
{
this.parent = parent;
this.anchor = anchor;
}
/**
* Gets the parent shape.
*/
public HSSFShape getParent()
{
return parent;
}
/**
* @return the anchor that is used by this shape.
*/
public HSSFAnchor getAnchor()
{
return anchor;
}
/**
* Sets a particular anchor. A top-level shape must have an anchor of
* HSSFClientAnchor. A child anchor must have an anchor of HSSFChildAnchor
*
* @param anchor the anchor to use.
* @throws IllegalArgumentException when the wrong anchor is used for
* this particular shape.
*
* @see HSSFChildAnchor
* @see HSSFClientAnchor
*/
public void setAnchor( HSSFAnchor anchor )
{
if ( parent == null )
{
if ( anchor instanceof HSSFChildAnchor )
throw new IllegalArgumentException( "Must use client anchors for shapes directly attached to sheet." );
}
else
{
if ( anchor instanceof HSSFClientAnchor )
throw new IllegalArgumentException( "Must use child anchors for shapes attached to groups." );
}
this.anchor = anchor;
}
/**
* The color applied to the lines of this shape.
*/
public int getLineStyleColor()
{
return lineStyleColor;
}
/**
* The color applied to the lines of this shape.
*/
public void setLineStyleColor( int lineStyleColor )
{
this.lineStyleColor = lineStyleColor;
}
/**
* The color applied to the lines of this shape.
*/
public void setLineStyleColor( int red, int green, int blue )
{
this.lineStyleColor = ((blue) << 16) | ((green) << 8) | red;
}
/**
* The color used to fill this shape.
*/
public int getFillColor()
{
return fillColor;
}
/**
* The color used to fill this shape.
*/
public void setFillColor( int fillColor )
{
this.fillColor = fillColor;
}
/**
* The color used to fill this shape.
*/
public void setFillColor( int red, int green, int blue )
{
this.fillColor = ((blue) << 16) | ((green) << 8) | red;
}
/**
* @return returns with width of the line in EMUs. 12700 = 1 pt.
*/
public int getLineWidth()
{
return lineWidth;
}
/**
* Sets the width of the line. 12700 = 1 pt.
*
* @param lineWidth width in EMU's. 12700EMU's = 1 pt
*
* @see HSSFShape#LINEWIDTH_ONE_PT
*/
public void setLineWidth( int lineWidth )
{
this.lineWidth = lineWidth;
}
/**
* @return One of the constants in LINESTYLE_*
*/
public int getLineStyle()
{
return lineStyle;
}
/**
* Sets the line style.
*
* @param lineStyle One of the constants in LINESTYLE_*
*/
public void setLineStyle( int lineStyle )
{
this.lineStyle = lineStyle;
}
/**
* @return true if this shape is not filled with a color.
*/
public boolean isNoFill()
{
return noFill;
}
/**
* Sets whether this shape is filled or transparent.
*/
public void setNoFill( boolean noFill )
{
this.noFill = noFill;
}
/**
* Count of all children and their childrens children.
*/
public int countOfAllChildren()
{
return 1;
}
}