EMF::METAFILEDEVICECONTEXT(3)

NAME
EMF::METAFILEDEVICECONTEXT - Graphics Device Context.

SYNOPSIS

#include <libemf.h>

Inherits EMF::OBJECT.

  Public Member Functions

METAFILEDEVICECONTEXT (FILE *fp_, const RECT *size, LPCWSTR description_w)
virtual ~METAFILEDEVICECONTEXT ()
OBJECTTYPE getType (void) const
DWORD nextHandle (void)
void clearHandle (DWORD handle)
void appendRecord (METARECORD *record)
void appendHandle (METARECORD *record)
void deleteMetafile (void)
void mergePoint (const LONG &x, const LONG &y)
void mergePoint (const POINT &p)

  Data Fields

::FILE * fp
DATASTREAM ds
ENHMETAHEADER * header
std::vector< EMF::METARECORD *> records
SIZEL resolution
The resolution in DPI of the reference DC.
SIZEL viewport_ext
The extent of the viewport.
POINT viewport_org
The origin of the viewport.
SIZEL window_ext
The extent of the window.
POINT window_org
The origin of the window.
bool update_frame
Update the frame automatically?
POINT min_device_point
The lft/top-most painted point in device units.
POINT max_device_point
The rgt/btm-most painted point in device units.
POINT point
The current point.
PEN * pen
The current pen.
BRUSH * brush
The current brush.
FONT * font
The current font.
PALETTE * palette
The current palette.
UINT text_alignment
The current text alignment.
COLORREF text_color
The current text foreground color.
COLORREF bk_color
The current background color.
INT bk_mode
The current background mode.
INT polyfill_mode
The current polygon fill mode.
INT map_mode
The current mapping mode.
FLOAT miter_limit
The current miter length limit.
std::vector< bool > handles
std::map< HGDIOBJ, HGDIOBJ > emf_handles

Detailed Description

Graphics Device Context.

Almost all GDI graphics calls require a device context (except those which create graphics objects such as pens and fonts). This is a specific context which renders to a metafile. There is a one-to-one correspondence between the device context and the metafile.

Constructor & Destructor Documentation

  EMF::METAFILEDEVICECONTEXT::METAFILEDEVICECONTEXT (FILE * fp_, const RECT * size, LPCWSTR description_w) [inline]
Most graphics programs seem to want to handle the opening and closing of files themselves, so this is an extension to the w32 interface.

Parameters:
    fp_ stdio pointer to an open file. May be null.
    size the rectangle describing the position and size of the metafile on the 'page'. May be null.
    description_w a UNICODE string describing the metafile. The format must be 'some text\0some more text\0\0'. May be null.

  virtual EMF::METAFILEDEVICECONTEXT::~METAFILEDEVICECONTEXT () [inline], [virtual]
Destructor frees all the graphics objects which may have been allocated. Now, it also frees any metarecords which it might hold, too.

Member Function Documentation

  void EMF::METAFILEDEVICECONTEXT::appendHandle (METARECORD * record) [inline]
Add this record to the metafile.

Parameters:
    record this record is an object so it increments the handle count as well.

References EMF::METARECORD::size().

Referenced by EMF::EMRCREATEPALETTE::execute().

  void EMF::METAFILEDEVICECONTEXT::appendRecord (METARECORD * record) [inline]
Add this record to the metafile.

Parameters:
    record standard graphics record

References EMF::METARECORD::size().

Referenced by EMF::EMRCREATEPALETTE::execute().

  void EMF::METAFILEDEVICECONTEXT::clearHandle (DWORD handle) [inline]
Clear the usage of this handle

Referenced by EMF::EMRCREATEPALETTE::execute().

  void EMF::METAFILEDEVICECONTEXT::deleteMetafile (void) [inline]
Delete all the records from the metafile. This would seem to include deleting the header record as well.

Referenced by EMF::EMRCREATEPALETTE::execute().

  OBJECTTYPE EMF::METAFILEDEVICECONTEXT::getType (void) const [inline], [virtual]
Return the type of this object (could probably do better with RTTI()).

Implements EMF::OBJECT.

  void EMF::METAFILEDEVICECONTEXT::mergePoint (const LONG & x, const LONG & y) [inline]
Somewhat superfluous, except checker doesn't understand the initialization of automatic structures in the declaration.

Referenced by EMF::EMRCREATEPALETTE::execute().

  void EMF::METAFILEDEVICECONTEXT::mergePoint (const POINT & p) [inline]
Take the given point and determine if it enlarges the 'painted' area of the device.

  DWORD EMF::METAFILEDEVICECONTEXT::nextHandle (void) [inline]
Scan the bit vector of used handles and return the index of the first free bit as this objects metafile handle.

References EMF::ENHMETAHEADER::size().

Referenced by EMF::EMRCREATEPALETTE::execute().

Field Documentation

  DATASTREAM EMF::METAFILEDEVICECONTEXT::ds
All i/o to the metafile is wrapped by this class so that byte swapping on big-endian machines is transparent.

Referenced by EMF::EMRCREATEPALETTE::execute().

  std::map< HGDIOBJ, HGDIOBJ > EMF::METAFILEDEVICECONTEXT::emf_handles
This map holds the current mapping between EMF handles and global object handles as a metafile is played back (with PlayEnhMetaFile).

Referenced by EMF::EMRSELECTOBJECT::execute(), EMF::EMRDELETEOBJECT::execute(), EMF::EMRCREATEPEN::execute(), EMF::EMREXTCREATEPEN::execute(), EMF::EMRCREATEBRUSHINDIRECT::execute(), EMF::EMREXTCREATEFONTINDIRECTW::execute(), and EMF::EMRCREATEPALETTE::execute().

  ::FILE* EMF::METAFILEDEVICECONTEXT::fp
If it is a file-based metafile, then this pointer is not null.

Referenced by EMF::EMRCREATEPALETTE::execute().

  std::vector< bool > EMF::METAFILEDEVICECONTEXT::handles
For compatibility, it appears that metafile handles are reused as objects are deleted. Attempt to emulate that behavior with a bit vector of used metafile handles.

  ENHMETAHEADER* EMF::METAFILEDEVICECONTEXT::header
Serves double duty as the physical device description.

Referenced by EMF::EMRCREATEPALETTE::execute().

  std::vector< EMF::METARECORD* > EMF::METAFILEDEVICECONTEXT::records
All of the metafile records are stored in memory.

Referenced by EMF::EMRCREATEPALETTE::execute().

Author

Generated automatically by Doxygen for libemf from the source code.