Class HwmfGraphics

    • Constructor Summary

      Constructors 
      Constructor Description
      HwmfGraphics​(java.awt.Graphics2D graphicsCtx, java.awt.geom.Rectangle2D bbox)
      Initialize a graphics context for wmf rendering
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method 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)  
      ImageRenderer getImageRenderer​(java.lang.String contentType)  
      java.awt.geom.AffineTransform getInitTransform()  
      static java.awt.image.BufferedImage getPatternFromLong​(long patternLng, java.awt.Color background, java.awt.Color foreground, boolean hasAlpha)  
      HwmfDrawProperties getProperties()  
      java.awt.geom.AffineTransform getTransform()  
      void restoreProperties​(int index)
      Restores the properties from the stack
      void saveProperties()
      Saves the current properties to the stack
      void setCharsetProvider​(java.util.function.Supplier<java.nio.charset.Charset> provider)  
      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

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 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

      • draw

        public void draw​(java.awt.Shape shape)
      • fill

        public void fill​(java.awt.Shape shape)
      • getPatternFromLong

        public static java.awt.image.BufferedImage getPatternFromLong​(long patternLng,
                                                                      java.awt.Color background,
                                                                      java.awt.Color foreground,
                                                                      boolean hasAlpha)
      • 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 - the object table 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)
      • setCharsetProvider

        public void setCharsetProvider​(java.util.function.Supplier<java.nio.charset.Charset> provider)
        Specified by:
        setCharsetProvider in interface HwmfCharsetAware
      • 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)