org.apache.poi.hwmf.draw

## Class HwmfGraphics

- java.lang.Object
- - org.apache.poi.hwmf.draw.HwmfGraphics

- Direct Known Subclasses:
    HemfGraphics

      public class HwmfGraphics
      extends java.lang.Object

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `HwmfGraphics.FillDrawStyle`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected java.awt.Graphics2D` | `graphicsCtx`
    `protected java.util.BitSet` | `objectIndexes`
    `protected java.util.TreeMap<java.lang.Integer,HwmfObjectTableEntry>` | `objectTable`
    `protected HwmfDrawProperties` | `prop`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `HwmfGraphics(java.awt.Graphics2D graphicsCtx, java.awt.geom.Rectangle2D bbox)` Initialize a graphics context for wmf rendering

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addObjectTableEntry(HwmfObjectTableEntry entry)` Adds an record of type `HwmfObjectTableEntry` to the object table.
    `void` | `applyObjectTableEntry(int index)` Applies the object table entry
    `void` | `draw(java.awt.Shape shape)`
    `void` | `drawImage(java.awt.image.BufferedImage img, java.awt.geom.Rectangle2D srcBounds, java.awt.geom.Rectangle2D dstBounds)`
    `void` | `drawImage(ImageRenderer img, java.awt.geom.Rectangle2D srcBounds, java.awt.geom.Rectangle2D dstBounds)`
    `void` | `drawString(byte[] text, int length, java.awt.geom.Point2D reference)`
    `void` | `drawString(byte[] text, int length, java.awt.geom.Point2D reference, java.awt.geom.Dimension2D scale, java.awt.geom.Rectangle2D clip, HwmfText.WmfExtTextOutOptions opts, java.util.List<java.lang.Integer> dx, boolean isUnicode)`
    `void` | `fill(java.awt.Shape shape)`
    `protected java.awt.Paint` | `getFill()`
    `protected java.awt.Paint` | `getHatchedFill()`
    `ImageRenderer` | `getImageRenderer(java.lang.String contentType)`
    `java.awt.geom.AffineTransform` | `getInitTransform()`
    `protected java.awt.Paint` | `getLinearGradient()`
    `protected java.awt.Paint` | `getPatternPaint()`
    `HwmfDrawProperties` | `getProperties()`
    `protected java.awt.Paint` | `getSolidFill()`
    `protected java.awt.BasicStroke` | `getStroke()`
    `java.awt.geom.AffineTransform` | `getTransform()`
    `protected HwmfDrawProperties` | `newProperties(HwmfDrawProperties oldProps)`
    `void` | `restoreProperties(int index)` Restores the properties from the stack
    `void` | `saveProperties()` Saves the current properties to the stack
    `void` | `setClip(java.awt.Shape clip, HwmfRegionMode regionMode, boolean useInitialAT)` Set the new clipping region
    `void` | `setTransform(java.awt.geom.AffineTransform tx)` Set the current AffineTransform
    `void` | `unsetObjectTableEntry(int index)` Unsets (deletes) the object table entry for further usage When a META_DELETEOBJECT record (section 2.3.4.7) is received that specifies this object's particular index, the object's resources are released, the binding to its WMF Object Table index is ended, and the index value is returned to the pool of available indexes.
    `void` | `updateWindowMapMode()` After setting various window and viewport related properties, the underlying graphics context needs to be adapted.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### prop

          protected HwmfDrawProperties prop

    - #### graphicsCtx

          protected final java.awt.Graphics2D graphicsCtx

    - #### objectIndexes

          protected final java.util.BitSet objectIndexes

    - #### objectTable

          protected final java.util.TreeMap<java.lang.Integer,HwmfObjectTableEntry> objectTable

  - ### Constructor Detail

    - #### HwmfGraphics

          public HwmfGraphics(java.awt.Graphics2D graphicsCtx,
                              java.awt.geom.Rectangle2D bbox)

      Initialize a graphics context for wmf rendering
      Parameters:
        `graphicsCtx` - the graphics context to delegate drawing calls
        `bbox` - the bounding box of the wmf (taken from the placeable header)

  - ### Method Detail

    - #### getProperties

          public HwmfDrawProperties getProperties()

    - #### newProperties

          protected HwmfDrawProperties newProperties(HwmfDrawProperties oldProps)

    - #### draw

          public void draw(java.awt.Shape shape)

    - #### fill

          public void fill(java.awt.Shape shape)

    - #### getStroke

          protected java.awt.BasicStroke getStroke()

    - #### getFill

          protected java.awt.Paint getFill()

    - #### getLinearGradient

          protected java.awt.Paint getLinearGradient()

    - #### getSolidFill

          protected java.awt.Paint getSolidFill()

    - #### getHatchedFill

          protected java.awt.Paint getHatchedFill()

    - #### getPatternPaint

          protected java.awt.Paint getPatternPaint()

    - #### addObjectTableEntry

          public void addObjectTableEntry(HwmfObjectTableEntry entry)

      Adds an record of type `HwmfObjectTableEntry` to the object table. Every object is assigned the lowest available index-that is, the smallest numerical value-in the WMF Object Table. This binding happens at object creation, not when the object is used. Moreover, each object table index uniquely refers to an object. Indexes in the WMF Object Table always start at 0.
      Parameters:
        `entry` -

    - #### applyObjectTableEntry

          public void applyObjectTableEntry(int index)

      Applies the object table entry
      Parameters:
        `index` - the index of the object table entry (0-based)
      Throws:
        `java.lang.IndexOutOfBoundsException` - if the index is out of range
        `java.util.NoSuchElementException` - if the entry was deleted before

    - #### unsetObjectTableEntry

          public void unsetObjectTableEntry(int index)

      Unsets (deletes) the object table entry for further usage When a META_DELETEOBJECT record (section 2.3.4.7) is received that specifies this object's particular index, the object's resources are released, the binding to its WMF Object Table index is ended, and the index value is returned to the pool of available indexes. The index will be reused, if needed, by a subsequent object created by another Object Record Type record.
      Parameters:
        `index` - the index (0-based)
      Throws:
        `java.lang.IndexOutOfBoundsException` - if the index is out of range

    - #### saveProperties

          public void saveProperties()

      Saves the current properties to the stack

    - #### restoreProperties

          public void restoreProperties(int index)

      Restores the properties from the stack
      Parameters:
        `index` - if the index is positive, the n-th element from the start is activated. If the index is negative, the n-th previous element relative to the current properties element is activated.

    - #### updateWindowMapMode

          public void updateWindowMapMode()

      After setting various window and viewport related properties, the underlying graphics context needs to be adapted. This methods gathers and sets the corresponding graphics transformations.

    - #### drawString

          public void drawString(byte[] text,
                                 int length,
                                 java.awt.geom.Point2D reference)

    - #### drawString

          public void drawString(byte[] text,
                                 int length,
                                 java.awt.geom.Point2D reference,
                                 java.awt.geom.Dimension2D scale,
                                 java.awt.geom.Rectangle2D clip,
                                 HwmfText.WmfExtTextOutOptions opts,
                                 java.util.List<java.lang.Integer> dx,
                                 boolean isUnicode)

    - #### drawImage

          public void drawImage(java.awt.image.BufferedImage img,
                                java.awt.geom.Rectangle2D srcBounds,
                                java.awt.geom.Rectangle2D dstBounds)

    - #### drawImage

          public void drawImage(ImageRenderer img,
                                java.awt.geom.Rectangle2D srcBounds,
                                java.awt.geom.Rectangle2D dstBounds)

    - #### getInitTransform

          public java.awt.geom.AffineTransform getInitTransform()

      Returns:
        the initial AffineTransform, when this graphics context was created

    - #### getTransform

          public java.awt.geom.AffineTransform getTransform()

      Returns:
        the current AffineTransform

    - #### setTransform

          public void setTransform(java.awt.geom.AffineTransform tx)

      Set the current AffineTransform
      Parameters:
        `tx` - the current AffineTransform

    - #### setClip

          public void setClip(java.awt.Shape clip,
                              HwmfRegionMode regionMode,
                              boolean useInitialAT)

      Set the new clipping region
      Parameters:
        `clip` - the next clipping region to be processed
        `regionMode` - the mode and operation of how to apply the next clipping region
        `useInitialAT` - if true, the clipping is applied on the initial (world) coordinate system

    - #### getImageRenderer

          public ImageRenderer getImageRenderer(java.lang.String contentType)

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