## org.apache.batik.transcoder.wmf.tosvg
Class AbstractWMFReader

    java.lang.Object
      org.apache.batik.transcoder.wmf.tosvg.AbstractWMFReader

Direct Known Subclasses:
  WMFHeaderProperties, WMFRecordStore

    public abstract class AbstractWMFReader

extends java.lang.Object

This class provides a general framework to read WMF Metafiles.

Field Summary
`protected int` `bottom`
`protected boolean` `bReading`
`protected int` `height`
`protected int` `inch`
`protected boolean` `isAldus`
`protected boolean` `isotropic`
`int` `lastObjectIdx`
`protected int` `left`
`static float` `MM_PER_PIXEL`
`protected int` `mtHeaderSize`
`protected int` `mtMaxRecord`
`protected int` `mtNoObjects`
`protected int` `mtNoParameters`
`protected int` `mtSize`
`protected int` `mtType`
`protected int` `mtVersion`
`protected int` `numObjects`
`protected java.util.List` `objectVector`
`static float` `PIXEL_PER_INCH`
`protected int` `right`
`protected float` `scaleX`
`protected float` `scaleXY`
`protected float` `scaleY`
`protected int` `top`
`protected int` `vpH`
`protected int` `vpW`
`protected int` `vpX`
`protected int` `vpY`
`protected int` `width`
`protected int` `windowHeight`
`protected int` `windowWidth`
`protected int` `xSign`
`protected int` `ySign`

Constructor Summary
`AbstractWMFReader()`
`AbstractWMFReader(int width, int height)`

Method Summary
`int` `addObject(int type, java.lang.Object obj)`
`int` `addObjectAt(int type, java.lang.Object obj, int idx)` Adds a GdiObject to the internal handle table.
`int` `getBottomUnits()` get the bottom units in the WMF Metafile.
`int` `getHeightPixels()` get the height of the WMF Metafile, in pixels.
`int` `getHeightUnits()` get the height units in the WMF Metafile.
`int` `getLeftUnits()` get the left units in the WMF Metafile.
`int` `getMetaFileUnitsPerInch()` get the number of Metafile units per inch in the WMF Metafile.
`int` `getNumObjects()` Returns the number of GdiObjects in the handle table
`GdiObject` `getObject(int idx)` Returns a GdiObject from the handle table
`float` `getPixelsPerUnit()` Return the number of pixels per unit.
`java.awt.geom.Rectangle2D` `getRectangleInch()` get the Rectangle defining the viewport of the WMF Metafile, in inchs.
`java.awt.geom.Rectangle2D` `getRectanglePixel()` get the Rectangle defining the viewport of the WMF Metafile, in pixels.
`java.awt.Rectangle` `getRectangleUnits()` get the Rectangle defining the viewport of the WMF Metafile, in Metafile units.
`int` `getRightUnits()` get the right units in the WMF Metafile.
`int` `getTopUnits()` get the top units in the WMF Metafile.
`float` `getUnitsToPixels()` get the factor to transform Metafile dimensions in pixels
`float` `getViewportHeightInch()` Returns the viewport height, in inches.
`float` `getViewportHeightUnits()` Returns the viewport height, in Metafile Units
`float` `getViewportWidthInch()` Returns the viewport width, in inches.
`float` `getViewportWidthUnits()` Returns the viewport width, in Metafile Units
`int` `getVpH()` Returns the viewport height, in pixels.
`float` `getVpHFactor()` get the factor to transform logical units height in pixels
`int` `getVpW()` Returns the viewport width, in pixels.
`float` `getVpWFactor()` get the factor to transform logical units width in pixels
`int` `getWidthPixels()` get the width of the WMF Metafile, in pixels.
`int` `getWidthUnits()` get the width units in the WMF Metafile.
`int` `getXSign()` Return the sign of X coordinates.
`int` `getYSign()` Return the sign of Y coordinates.
`boolean` `isReading()`

`void`

`read(java.io.DataInputStream is)`
Reads the WMF file from the specified Stream, read it and set the following properties: `mtType` : File type (0 : memory, 1 : disk) `mtHeaderSize` : Size of header in WORDS (always 9) `mtVersion` : Version of Microsoft Windows used `mtSize` : Total size of the metafile in WORDs `mtNoObjects` : Number of objects in the file `mtMaxRecord` : The size of largest record in WORDs `mtNoParameters` : Not Used (always 0) If the file contains an APM (aldus placeable header), this method read these additionnal properties : `left` : Left coordinate in metafile units `right` : Right coordinate in metafile units `top` : Top coordinate in metafile units `bottom` : Bottom coordinate in metafile units `inch` : Number of metafile units per inch

`protected int` `readInt(java.io.DataInputStream is)` Read the next int (4 bytes) value in the DataInputStream.
`protected abstract boolean` `readRecords(java.io.DataInputStream is)` Read this InputStream records.
`protected short` `readShort(java.io.DataInputStream is)` Read the next short (2 bytes) value in the DataInputStream.
`abstract void` `reset()` resets this WMFReader.
`protected void` `setReading(boolean state)`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### PIXEL_PER_INCH

    public static final float PIXEL_PER_INCH

### MM_PER_PIXEL

    public static final float MM_PER_PIXEL

### left

    protected int left

### right

    protected int right

### top

    protected int top

### bottom

    protected int bottom

### width

    protected int width

### height

    protected int height

### inch

    protected int inch

### scaleX

    protected float scaleX

### scaleY

    protected float scaleY

### scaleXY

    protected float scaleXY

### vpW

    protected int vpW

### vpH

    protected int vpH

### vpX

    protected int vpX

### vpY

    protected int vpY

### xSign

    protected int xSign

### ySign

    protected int ySign

### bReading

    protected volatile boolean bReading

### isAldus

    protected boolean isAldus

### isotropic

    protected boolean isotropic

### mtType

    protected int mtType

### mtHeaderSize

    protected int mtHeaderSize

### mtVersion

    protected int mtVersion

### mtSize

    protected int mtSize

### mtNoObjects

    protected int mtNoObjects

### mtMaxRecord

    protected int mtMaxRecord

### mtNoParameters

    protected int mtNoParameters

### windowWidth

    protected int windowWidth

### windowHeight

    protected int windowHeight

### numObjects

    protected int numObjects

### objectVector

    protected java.util.List objectVector

### lastObjectIdx

    public int lastObjectIdx

Constructor Detail

### AbstractWMFReader

    public AbstractWMFReader()

### AbstractWMFReader

    public AbstractWMFReader(int width,
                             int height)

Method Detail

### readShort

    protected short readShort(java.io.DataInputStream is)
                       throws java.io.IOException

  Read the next short (2 bytes) value in the DataInputStream.

  Throws:
    `java.io.IOException`

### readInt

    protected int readInt(java.io.DataInputStream is)
                   throws java.io.IOException

  Read the next int (4 bytes) value in the DataInputStream.

  Throws:
    `java.io.IOException`

### getViewportWidthUnits

    public float getViewportWidthUnits()

  Returns the viewport width, in Metafile Units

### getViewportHeightUnits

    public float getViewportHeightUnits()

  Returns the viewport height, in Metafile Units

### getViewportWidthInch

    public float getViewportWidthInch()

  Returns the viewport width, in inches.

### getViewportHeightInch

    public float getViewportHeightInch()

  Returns the viewport height, in inches.

### getPixelsPerUnit

    public float getPixelsPerUnit()

  Return the number of pixels per unit.

### getVpW

    public int getVpW()

  Returns the viewport width, in pixels.

### getVpH

    public int getVpH()

  Returns the viewport height, in pixels.

### getLeftUnits

    public int getLeftUnits()

  get the left units in the WMF Metafile. This value is given in the Aldus Placable Metafile.

### getRightUnits

    public int getRightUnits()

  get the right units in the WMF Metafile. This value is given in the Aldus Placable Header.

### getTopUnits

    public int getTopUnits()

  get the top units in the WMF Metafile. This value is given in the Aldus Placable Header.

### getWidthUnits

    public int getWidthUnits()

  get the width units in the WMF Metafile. This value is given in the Aldus Placable Header.

### getHeightUnits

    public int getHeightUnits()

  get the height units in the WMF Metafile. This value is given in the Aldus Placable Header.

### getBottomUnits

    public int getBottomUnits()

  get the bottom units in the WMF Metafile. This value is given in the Aldus Placable Header.

### getMetaFileUnitsPerInch

    public int getMetaFileUnitsPerInch()

  get the number of Metafile units per inch in the WMF Metafile. This value is given in the Aldus Placable Header.

### getRectangleUnits

    public java.awt.Rectangle getRectangleUnits()

  get the Rectangle defining the viewport of the WMF Metafile, in Metafile units. This viewport is defined in the Aldus Placable Header, by its left, top, bottom, right components.

  See Also:
    `getRightUnits()`, `getLeftUnits()`, `getTopUnits()`, `getBottomUnits()`

### getRectanglePixel

    public java.awt.geom.Rectangle2D getRectanglePixel()

  get the Rectangle defining the viewport of the WMF Metafile, in pixels.

### getRectangleInch

    public java.awt.geom.Rectangle2D getRectangleInch()

  get the Rectangle defining the viewport of the WMF Metafile, in inchs.

### getWidthPixels

    public int getWidthPixels()

  get the width of the WMF Metafile, in pixels.

### getUnitsToPixels

    public float getUnitsToPixels()

  get the factor to transform Metafile dimensions in pixels

### getVpWFactor

    public float getVpWFactor()

  get the factor to transform logical units width in pixels

### getVpHFactor

    public float getVpHFactor()

  get the factor to transform logical units height in pixels

### getHeightPixels

    public int getHeightPixels()

  get the height of the WMF Metafile, in pixels.

### getXSign

    public int getXSign()

  Return the sign of X coordinates. It is equal to 1 by default, but can be -1 if all X coordinates are inversed.

### getYSign

    public int getYSign()

  Return the sign of Y coordinates. It is equal to 1 by default, but can be -1 if all Y coordinates are inversed.

### setReading

    protected void setReading(boolean state)

### isReading

    public boolean isReading()

  Returns:
    true if the reader is currently reading an InputStream.

### reset

    public abstract void reset()

  resets this WMFReader.

### readRecords

    protected abstract boolean readRecords(java.io.DataInputStream is)
                                    throws java.io.IOException

  Read this InputStream records. The aldus placeable header have already been read (see `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;

  Throws:
    `java.io.IOException`
  See Also:
    `WMFConstants`

### read

    public void read(java.io.DataInputStream is)
              throws java.io.IOException

  Reads the WMF file from the specified Stream, read it and set the following properties:
  - `mtType` : File type (0 : memory, 1 : disk)
  - `mtHeaderSize` : Size of header in WORDS (always 9)
  - `mtVersion` : Version of Microsoft Windows used
  - `mtSize` : Total size of the metafile in WORDs
  - `mtNoObjects` : Number of objects in the file
  - `mtMaxRecord` : The size of largest record in WORDs
  - `mtNoParameters` : Not Used (always 0)
  If the file contains an APM (aldus placeable header), this method read these additionnal properties :
  - `left` : Left coordinate in metafile units
  - `right` : Right coordinate in metafile units
  - `top` : Top coordinate in metafile units
  - `bottom` : Bottom coordinate in metafile units
  - `inch` : Number of metafile units per inch

  Then it calls the `readRecords(DataInputStream)` abstract method, whose behavior is left to the subclass

  .

  Throws:
    `java.io.IOException`

### addObject

    public int addObject(int type,
                         java.lang.Object obj)

### addObjectAt

    public int addObjectAt(int type,
                           java.lang.Object obj,
                           int idx)

  Adds a GdiObject to the internal handle table. Wmf files specify the index as given in EMF records such as EMRCREATEPENINDIRECT whereas WMF files always use 0. This function should not normally be called by an application.

  Returns:
    the object index

### getObject

    public GdiObject getObject(int idx)

  Returns a GdiObject from the handle table

### getNumObjects

    public int getNumObjects()

  Returns the number of GdiObjects in the handle table

Copyright © 2008 Apache Software Foundation. All Rights Reserved.