org.apache.poi.hslf.usermodel
Class HSLFShape

java.lang.Object
  extended by org.apache.poi.hslf.usermodel.HSLFShape
All Implemented Interfaces:
Shape<HSLFShape,HSLFTextParagraph>
Direct Known Subclasses:
HSLFBackground, HSLFGroupShape, HSLFSimpleShape

public abstract class HSLFShape
extends java.lang.Object
implements Shape<HSLFShape,HSLFTextParagraph>

Represents a Shape which is the elemental object that composes a drawing. This class is a wrapper around EscherSpContainer which holds all information about a shape in PowerPoint document.

When you add a shape, you usually specify the dimensions of the shape and the position of the upper'left corner of the bounding box for the shape relative to the upper'left corner of the page, worksheet, or slide. Distances in the drawing layer are measured in points (72 points = 1 inch).


Constructor Summary
protected HSLFShape(EscherContainerRecord escherRecord, ShapeContainer<HSLFShape,HSLFTextParagraph> parent)
          Create a Shape object.
 
Method Summary
protected  void afterInsert(HSLFSheet sh)
          Event which fires when a shape is inserted in the sheet.
protected  EscherContainerRecord createSpContainer(boolean isChild)
          Create and assign the lower level escher record to this shape
 void draw(java.awt.Graphics2D graphics, java.awt.geom.Rectangle2D bounds)
          Convenience method to draw a single shape
 java.awt.geom.Rectangle2D getAnchor()
          Returns the anchor (the bounding box rectangle) of this shape.
protected  HSLFEscherClientDataRecord getClientData(boolean create)
          Create a new HSLF-specific EscherClientDataRecord
<T extends Record>
T
getClientDataRecord(int recordType)
          Find a record in the underlying EscherClientDataRecord
protected  java.util.List<? extends Record> getClientRecords()
          Search for EscherClientDataRecord, if found, convert its contents into an array of HSLF records
static
<T extends EscherRecord>
T
getEscherChild(EscherContainerRecord owner, int recordId)
          Helper method to return escher child by record ID
static
<T extends EscherRecord>
T
getEscherChild(EscherContainerRecord owner, RecordTypes recordId)
           
<T extends EscherRecord>
T
getEscherChild(int recordId)
           
<T extends EscherRecord>
T
getEscherChild(RecordTypes recordId)
           
 AbstractEscherOptRecord getEscherOptRecord()
           
static
<T extends EscherProperty>
T
getEscherProperty(AbstractEscherOptRecord opt, int propId)
          Returns escher property by id.
 int getEscherProperty(short propId)
          Get the value of a simple escher property for this shape.
 int getEscherProperty(short propId, int defaultValue)
          Get the value of a simple escher property for this shape.
 HSLFFill getFill()
          Fill properties of this shape
 FillStyle getFillStyle()
           
 boolean getFlipHorizontal()
           
 boolean getFlipVertical()
           
 ShapeContainer<HSLFShape,HSLFTextParagraph> getParent()
           
 double getRotation()
           
 int getShapeId()
           
 java.lang.String getShapeName()
           
 ShapeType getShapeType()
           
 HSLFSheet getSheet()
           
 EscherContainerRecord getSpContainer()
           
 boolean isPlaceholder()
           
 void moveTo(double x, double y)
          Moves the top left corner of the shape to the specified point.
 void setAnchor(java.awt.geom.Rectangle2D anchor)
          Sets the anchor (the bounding box rectangle) of this shape.
static void setEscherProperty(AbstractEscherOptRecord opt, short propId, int value)
          Set an escher property for this shape.
 void setEscherProperty(short propId, int value)
          Set an simple escher property for this shape.
 void setFlipHorizontal(boolean flip)
           
 void setFlipVertical(boolean flip)
           
 void setRotation(double theta)
           
 void setShapeId(int id)
          Sets shape ID
 void setShapeType(ShapeType type)
           
 void setSheet(HSLFSheet sheet)
          Assign the SlideShow this shape belongs to
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

HSLFShape

protected HSLFShape(EscherContainerRecord escherRecord,
                    ShapeContainer<HSLFShape,HSLFTextParagraph> parent)
Create a Shape object. This constructor is used when an existing Shape is read from from a PowerPoint document.

Parameters:
escherRecord - EscherSpContainer container which holds information about this shape
parent - the parent of this Shape
Method Detail

createSpContainer

protected EscherContainerRecord createSpContainer(boolean isChild)
Create and assign the lower level escher record to this shape


getParent

public ShapeContainer<HSLFShape,HSLFTextParagraph> getParent()
Specified by:
getParent in interface Shape<HSLFShape,HSLFTextParagraph>
Returns:
the parent of this shape

getShapeName

public java.lang.String getShapeName()
Returns:
name of the shape.

getShapeType

public ShapeType getShapeType()

setShapeType

public void setShapeType(ShapeType type)

getAnchor

public java.awt.geom.Rectangle2D getAnchor()
Returns the anchor (the bounding box rectangle) of this shape. All coordinates are expressed in points (72 dpi).

Specified by:
getAnchor in interface Shape<HSLFShape,HSLFTextParagraph>
Returns:
the anchor of this shape

setAnchor

public void setAnchor(java.awt.geom.Rectangle2D anchor)
Sets the anchor (the bounding box rectangle) of this shape. All coordinates should be expressed in points (72 dpi).

Parameters:
anchor - new anchor

moveTo

public final void moveTo(double x,
                         double y)
Moves the top left corner of the shape to the specified point.

Parameters:
x - the x coordinate of the top left corner of the shape
y - the y coordinate of the top left corner of the shape

getEscherChild

public static <T extends EscherRecord> T getEscherChild(EscherContainerRecord owner,
                                                        int recordId)
Helper method to return escher child by record ID

Returns:
escher record or null if not found.

getEscherChild

public static <T extends EscherRecord> T getEscherChild(EscherContainerRecord owner,
                                                        RecordTypes recordId)
Since:
POI 3.14-Beta2

getEscherChild

public <T extends EscherRecord> T getEscherChild(int recordId)

getEscherChild

public <T extends EscherRecord> T getEscherChild(RecordTypes recordId)
Since:
POI 3.14-Beta2

getEscherProperty

public static <T extends EscherProperty> T getEscherProperty(AbstractEscherOptRecord opt,
                                                             int propId)
Returns escher property by id.

Returns:
escher property or null if not found.

setEscherProperty

public static void setEscherProperty(AbstractEscherOptRecord opt,
                                     short propId,
                                     int value)
Set an escher property for this shape.

Parameters:
opt - The opt record to set the properties to.
propId - The id of the property. One of the constants defined in EscherOptRecord.
value - value of the property. If value = -1 then the property is removed.

setEscherProperty

public void setEscherProperty(short propId,
                              int value)
Set an simple escher property for this shape.

Parameters:
propId - The id of the property. One of the constants defined in EscherOptRecord.
value - value of the property. If value = -1 then the property is removed.

getEscherProperty

public int getEscherProperty(short propId)
Get the value of a simple escher property for this shape.

Parameters:
propId - The id of the property. One of the constants defined in EscherOptRecord.

getEscherProperty

public int getEscherProperty(short propId,
                             int defaultValue)
Get the value of a simple escher property for this shape.

Parameters:
propId - The id of the property. One of the constants defined in EscherOptRecord.

getSpContainer

public EscherContainerRecord getSpContainer()
Returns:
The shape container and it's children that can represent this shape.

afterInsert

protected void afterInsert(HSLFSheet sh)
Event which fires when a shape is inserted in the sheet. In some cases we need to propagate changes to upper level containers.
Default implementation does nothing.

Parameters:
sh - - owning shape

getSheet

public HSLFSheet getSheet()
Specified by:
getSheet in interface Shape<HSLFShape,HSLFTextParagraph>
Returns:
the SlideShow this shape belongs to

setSheet

public void setSheet(HSLFSheet sheet)
Assign the SlideShow this shape belongs to

Parameters:
sheet - owner of this shape

getShapeId

public int getShapeId()
Returns:
id for the shape.

setShapeId

public void setShapeId(int id)
Sets shape ID

Parameters:
id - of the shape

getFill

public HSLFFill getFill()
Fill properties of this shape

Returns:
fill properties of this shape

getFillStyle

public FillStyle getFillStyle()

draw

public void draw(java.awt.Graphics2D graphics,
                 java.awt.geom.Rectangle2D bounds)
Description copied from interface: Shape
Convenience method to draw a single shape

Specified by:
draw in interface Shape<HSLFShape,HSLFTextParagraph>
Parameters:
graphics - the graphics context
bounds - the rectangle to fit the shape to. if null, the bounds of the shape are used.

getEscherOptRecord

public AbstractEscherOptRecord getEscherOptRecord()

getFlipHorizontal

public boolean getFlipHorizontal()

setFlipHorizontal

public void setFlipHorizontal(boolean flip)

getFlipVertical

public boolean getFlipVertical()

setFlipVertical

public void setFlipVertical(boolean flip)

getRotation

public double getRotation()

setRotation

public void setRotation(double theta)

isPlaceholder

public boolean isPlaceholder()

getClientDataRecord

public <T extends Record> T getClientDataRecord(int recordType)
Find a record in the underlying EscherClientDataRecord

Parameters:
recordType - type of the record to search

getClientRecords

protected java.util.List<? extends Record> getClientRecords()
Search for EscherClientDataRecord, if found, convert its contents into an array of HSLF records

Returns:
an array of HSLF records contained in the shape's EscherClientDataRecord or null

getClientData

protected HSLFEscherClientDataRecord getClientData(boolean create)
Create a new HSLF-specific EscherClientDataRecord

Parameters:
create - if true, create the missing record
Returns:
the client record or null if it was missing and create wasn't activated


Copyright 2017 The Apache Software Foundation or its licensors, as applicable.