Provided by: libemf-doc_1.0.9+git.10.3231442-1_all bug

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.