## org.apache.poi.hslf.model
Class Shape

    java.lang.Object
      org.apache.poi.hslf.model.Shape

Direct Known Subclasses:
  Background, ShapeGroup, SimpleShape

    public abstract class Shape

extends java.lang.Object

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).

Author:
  Yegor Kozlov

Field Summary
`protected EscherContainerRecord` `_escherContainer` Either EscherSpContainer or EscheSpgrContainer record which holds information about this shape.
`protected Fill` `_fill` Fill
`protected Shape` `_parent` Parent of this shape.
`protected Sheet` `_sheet` The `Sheet` this shape belongs to
`static int` `EMU_PER_CENTIMETER`
`static int` `EMU_PER_INCH` In Escher absolute distances are specified in English Metric Units (EMUs), occasionally referred to as A units; there are 360000 EMUs per centimeter, 914400 EMUs per inch, 12700 EMUs per point.
`static int` `EMU_PER_POINT`
`protected POILogger` `logger`
`static int` `MASTER_DPI` Master DPI (576 pixels per inch).
`static int` `PIXEL_DPI` Pixels DPI (96 pixels per inch)
`static int` `POINT_DPI` Points DPI (72 pixels per inch)

Constructor Summary
`protected` `Shape(EscherContainerRecord escherRecord, Shape parent)` Create a Shape object.

Method Summary
`protected void` `afterInsert(Sheet sh)` Event which fires when a shape is inserted in the sheet.
`protected abstract EscherContainerRecord` `createSpContainer(boolean isChild)` Creates the lowerlevel escher records for this shape.
`void` `draw(java.awt.Graphics2D graphics)`
`java.awt.Rectangle` `getAnchor()` Returns the anchor (the bounding box rectangle) of this shape.
`java.awt.geom.Rectangle2D` `getAnchor2D()` Returns the anchor (the bounding box rectangle) of this shape.
`static EscherRecord` `getEscherChild(EscherContainerRecord owner, int recordId)` Helper method to return escher child by record ID
`static EscherProperty` `getEscherProperty(EscherOptRecord 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.
`Fill` `getFill()` Fill properties of this shape
`Hyperlink` `getHyperlink()` Returns the hyperlink assigned to this shape
`java.awt.geom.Rectangle2D` `getLogicalAnchor2D()`
`java.awt.Shape` `getOutline()` Return shape outline as a java.awt.Shape object
`Shape` `getParent()`
`int` `getShapeId()`
`java.lang.String` `getShapeName()`
`int` `getShapeType()`
`Sheet` `getSheet()`
`EscherContainerRecord` `getSpContainer()`
`void` `moveTo(float x, float 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(EscherOptRecord 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` `setShapeId(int id)` Sets shape ID
`void` `setShapeType(int type)`
`void` `setSheet(Sheet 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`

Field Detail

### logger

    protected POILogger logger

### EMU_PER_INCH

    public static final int EMU_PER_INCH

  In Escher absolute distances are specified in English Metric Units (EMUs), occasionally referred to as A units; there are 360000 EMUs per centimeter, 914400 EMUs per inch, 12700 EMUs per point.

  See Also:
    Constant Field Values

### EMU_PER_POINT

    public static final int EMU_PER_POINT

See Also:
  Constant Field Values

### EMU_PER_CENTIMETER

    public static final int EMU_PER_CENTIMETER

See Also:
  Constant Field Values

### MASTER_DPI

    public static final int MASTER_DPI

  Master DPI (576 pixels per inch). Used by the reference coordinate system in PowerPoint.

  See Also:
    Constant Field Values

### PIXEL_DPI

    public static final int PIXEL_DPI

  Pixels DPI (96 pixels per inch)

  See Also:
    Constant Field Values

### POINT_DPI

    public static final int POINT_DPI

  Points DPI (72 pixels per inch)

  See Also:
    Constant Field Values

### _escherContainer

    protected EscherContainerRecord _escherContainer

  Either EscherSpContainer or EscheSpgrContainer record which holds information about this shape.

### _parent

    protected Shape _parent

  Parent of this shape. `null` for the topmost shapes.

### _sheet

    protected Sheet _sheet

  The `Sheet` this shape belongs to

### _fill

    protected Fill _fill

  Fill

Constructor Detail

### Shape

    protected Shape(EscherContainerRecord escherRecord,
                    Shape 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 abstract EscherContainerRecord createSpContainer(boolean isChild)

  Creates the lowerlevel escher records for this shape.

### getParent

    public Shape getParent()

  Returns:
    the parent of this shape

### getShapeName

    public java.lang.String getShapeName()

  Returns:
    name of the shape.

### getShapeType

    public int getShapeType()

  Returns:
    type of the shape.
  See Also:
    `RecordTypes`

### setShapeType

    public void setShapeType(int type)

  Parameters:
    `type` - type of the shape.
  See Also:
    `RecordTypes`

### getAnchor

    public java.awt.Rectangle getAnchor()

  Returns the anchor (the bounding box rectangle) of this shape. All coordinates are expressed in points (72 dpi).

  Returns:
    the anchor of this shape

### getAnchor2D

    public java.awt.geom.Rectangle2D getAnchor2D()

  Returns the anchor (the bounding box rectangle) of this shape. All coordinates are expressed in points (72 dpi).

  Returns:
    the anchor of this shape

### getLogicalAnchor2D

    public java.awt.geom.Rectangle2D getLogicalAnchor2D()

### 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 void moveTo(float x,
                       float 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 EscherRecord getEscherChild(EscherContainerRecord owner,
                                              int recordId)

  Helper method to return escher child by record ID

  Returns:
    escher record or `null` if not found.

### getEscherProperty

    public static EscherProperty getEscherProperty(EscherOptRecord opt,
                                                   int propId)

  Returns escher property by id.

  Returns:
    escher property or `null` if not found.

### setEscherProperty

    public static void setEscherProperty(EscherOptRecord 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(Sheet 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 Sheet getSheet()

  Returns:
    the `SlideShow` this shape belongs to

### setSheet

    public void setSheet(Sheet 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 Fill getFill()

  Fill properties of this shape

  Returns:
    fill properties of this shape

### getHyperlink

    public Hyperlink getHyperlink()

  Returns the hyperlink assigned to this shape

  Returns:
    the hyperlink assigned to this shape or `null` if not found.

### draw

    public void draw(java.awt.Graphics2D graphics)

### getOutline

    public java.awt.Shape getOutline()

  Return shape outline as a java.awt.Shape object

  Returns:
    the shape outline

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