Class WMFHeaderProperties


  • public class WMFHeaderProperties
    extends AbstractWMFReader
    This class holds simple properties about a WMF Metafile. It can be used whenever general information must be retrieved about this file.
    Version:
    $Id: WMFHeaderProperties.java 1831630 2018-05-15 12:56:55Z ssteiner $
    • Field Detail

      • INTEGER_0

        private static final java.lang.Integer INTEGER_0
      • stream

        protected java.io.DataInputStream stream
      • _bleft

        private int _bleft
      • _bright

        private int _bright
      • _btop

        private int _btop
      • _bbottom

        private int _bbottom
      • _bwidth

        private int _bwidth
      • _bheight

        private int _bheight
      • _ileft

        private int _ileft
      • _iright

        private int _iright
      • _itop

        private int _itop
      • _ibottom

        private int _ibottom
      • scale

        private float scale
      • startX

        private int startX
      • startY

        private int startY
      • currentHorizAlign

        private int currentHorizAlign
      • currentVertAlign

        private int currentVertAlign
      • fontCtx

        private static final java.awt.font.FontRenderContext fontCtx
      • firstEffectivePaint

        private transient boolean firstEffectivePaint
    • Constructor Detail

      • WMFHeaderProperties

        public WMFHeaderProperties​(java.io.File wmffile)
                            throws java.io.IOException
        Creates a new WMFHeaderProperties, and sets the associated WMF File.
        Parameters:
        wmffile - the WMF Metafile
        Throws:
        java.io.IOException
      • WMFHeaderProperties

        public WMFHeaderProperties()
        Creates a new WMFHeaderProperties, with no associated file.
    • Method Detail

      • closeResource

        public void closeResource()
      • setFile

        public void setFile​(java.io.File wmffile)
                     throws java.io.IOException
        Creates the properties associated file.
        Throws:
        java.io.IOException
      • reset

        public void reset()
        Resets the internal storage and viewport coordinates.
        Specified by:
        reset in class AbstractWMFReader
      • getStream

        public java.io.DataInputStream getStream()
        Get the associated stream.
      • readRecords

        protected boolean readRecords​(java.io.DataInputStream is)
                               throws java.io.IOException
        Description copied from class: AbstractWMFReader
        Read this InputStream records. The aldus placeable header have already been read (see AbstractWMFReader.read(DataInputStream)). The behavior of this method is left to the subclass. Each Metafile record is composed of :
        • the size of the Record in int (32 bits)
        • the function ID for the Record on a short word (16 bits)
        • the function parameters, according to the WMF Metafile specification. the remaining size in short words (16 bits) for the parameters is equal to the total size for the record minus 3 short words (= 16 + 32 bits)

        Example :

        while (functionId > 0) {
                recSize = readInt( is );
                // Subtract size in 16-bit words of recSize and functionId;
                recSize -= 3;
                functionId = readShort( is );
                if ( functionId <= 0 )
                  break;
                switch ( functionId ) {
                  case WMFConstants.<a WMF function ID> {
                    do something when this function is encountered
                  }
                  break;
        
                  default:
                     for ( int j = 0; j < recSize; j++ )
                       readShort(is);
                  break;
         
        Specified by:
        readRecords in class AbstractWMFReader
        Throws:
        java.io.IOException
        See Also:
        WMFConstants
      • getWidthBoundsPixels

        public int getWidthBoundsPixels()
        Returns:
        the width of the Rectangle bounding the figures enclosed in the Metafile, in pixels
      • getHeightBoundsPixels

        public int getHeightBoundsPixels()
        Returns:
        the height of the Rectangle bounding the figures enclosed in the Metafile, in pixels.
      • getWidthBoundsUnits

        public int getWidthBoundsUnits()
        Returns:
        the width of the Rectangle bounding the figures enclosed in the Metafile, in Metafile Units.
      • getHeightBoundsUnits

        public int getHeightBoundsUnits()
        Returns:
        the height of the Rectangle bounding the figures enclosed in the Metafile in Metafile Units.
      • getXOffset

        public int getXOffset()
        Returns:
        the X offset of the Rectangle bounding the figures enclosed in the Metafile.
      • getYOffset

        public int getYOffset()
        Returns:
        the Y offset of the Rectangle bounding the figures enclosed in the Metafile.
      • resetBounds

        private void resetBounds()
      • resizeBounds

        private void resizeBounds​(int x,
                                  int y)
        resize Bounds for each primitive encountered. Only elements that are in the overall width and height of the Metafile are kept.
      • resizeImageBounds

        private void resizeImageBounds​(int x,
                                       int y)
        resize Bounds for each image primitive encountered. Only elements that are in the overall width and height of the Metafile are kept.
      • getColorFromObject

        private java.awt.Color getColorFromObject​(int brushObject)
        get the Color corresponding with the Object (pen or brush object).
      • paint

        private void paint​(int brushObject,
                           int penObject,
                           java.awt.Shape shape)
        Resize the bounds of the WMF image according with the bounds of the geometric Shape. There will be no resizing if one of the following properties is true :
        • the brush and the pen objects are < 0 (null objects)
        • the color of the geometric Shape is white, and no other Shapes has occured
      • paintWithPen

        private void paintWithPen​(int penObject,
                                  java.awt.Shape shape)
        Resize the bounds of the WMF image according with the bounds of the geometric Shape. There will be no resizing if one of the following properties is true :
        • the pen objects is < 0 (null object)
        • the color of the geometric Shape is white, and no other Shapes has occured
      • getVerticalAlignmentValue

        private float getVerticalAlignmentValue​(java.awt.font.TextLayout layout,
                                                int vertAlign)
        get the vertical Alignment value for the text.