Main Page   Class Hierarchy   Compound List   File List   Compound Members  

EMF::METAFILEDEVICECONTEXT Class Reference

Graphics Device Context. More...

#include <libemf.h>

Inheritance diagram for EMF::METAFILEDEVICECONTEXT::

EMF::OBJECT List of all members.

Public Methods

 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)

Public Attributes

::FILE* fp
DATASTREAM ds
ENHMETAHEADERheader
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.

PENpen
 The current pen.

BRUSHbrush
 The current brush.

FONTfont
 The current font.

PALETTEpalette
 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.

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.

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.

void EMF::METAFILEDEVICECONTEXT::appendRecord ( METARECORD * record ) [inline]
 

Add this record to the metafile.

Parameters:
record   standard graphics record

void EMF::METAFILEDEVICECONTEXT::clearHandle ( DWORD handle ) [inline]
 

Clear the usage of this handle

void EMF::METAFILEDEVICECONTEXT::deleteMetafile ( void ) [inline]
 

Delete all the records from the metafile. This would seem to include deleting the header record as well.

OBJECTTYPE EMF::METAFILEDEVICECONTEXT::getType ( void ) const [inline, virtual]
 

Return the type of this object (could probably do better with RTTI()).

Reimplemented from EMF::OBJECT.

void EMF::METAFILEDEVICECONTEXT::mergePoint ( const POINT & p ) [inline]
 

Take the given point and determine if it enlarges the "painted" area of the device.

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.

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.


Member Data 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.

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).

FILE * EMF::METAFILEDEVICECONTEXT::fp
 

If it is a file-based metafile, then this pointer is not null.

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.

std::vector< EMF::METARECORD * > EMF::METAFILEDEVICECONTEXT::records
 

All of the metafile records are stored in memory.


The documentation for this class was generated from the following file:
Generated at Mon Jan 13 21:34:19 2003 for EMF by doxygen1.2.8.1 written by Dimitri van Heesch, © 1997-2001