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

java.lang.Object
  extended by org.apache.batik.transcoder.wmf.tosvg.AbstractWMFReader
Direct Known Subclasses:
WMFHeaderProperties, WMFRecordStore

public abstract class AbstractWMFReader
extends 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  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, Object obj)
           
 int addObjectAt(int type, 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.
 Rectangle2D getRectangleInch()
          get the Rectangle defining the viewport of the WMF Metafile, in inchs.
 Rectangle2D getRectanglePixel()
          get the Rectangle defining the viewport of the WMF Metafile, in pixels.
 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(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(DataInputStream is)
          Read the next int (4 bytes) value in the DataInputStream.
protected abstract  boolean readRecords(DataInputStream is)
          Read this InputStream records.
protected  short readShort(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 List objectVector

lastObjectIdx

public int lastObjectIdx
Constructor Detail

AbstractWMFReader

public AbstractWMFReader()

AbstractWMFReader

public AbstractWMFReader(int width,
                         int height)
Method Detail

readShort

protected short readShort(DataInputStream is)
                   throws IOException
Read the next short (2 bytes) value in the DataInputStream.

Throws:
IOException

readInt

protected int readInt(DataInputStream is)
               throws IOException
Read the next int (4 bytes) value in the DataInputStream.

Throws:
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 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 Rectangle2D getRectanglePixel()
get the Rectangle defining the viewport of the WMF Metafile, in pixels.


getRectangleInch

public 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(DataInputStream is)
                                throws 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 :

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:
IOException
See Also:
WMFConstants

read

public void read(DataInputStream is)
          throws IOException
Reads the WMF file from the specified Stream, read it and set the following properties: If the file contains an APM (aldus placeable header), this method read these additionnal properties :

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

.

Throws:
IOException

addObject

public int addObject(int type,
                     Object obj)

addObjectAt

public int addObjectAt(int type,
                       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.