EMF  1.0
Public Member Functions | Public Attributes | List of all members
EMF::METAFILEDEVICECONTEXT Class Reference

Graphics Device Context. More...

#include <libemf.h>

Inheritance diagram for EMF::METAFILEDEVICECONTEXT:
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)
 
- Public Member Functions inherited from EMF::OBJECT
virtual ~OBJECT ()
 OBJECTs have a virtual destructor.
 
 OBJECT (void)
 

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.
 
FLOAT miter_limit
 The current miter length limit.
 
std::vector< bool > handles
 
std::map< HGDIOBJ, HGDIOBJ > emf_handles
 
- Public Attributes inherited from EMF::OBJECT
HGDIOBJ handle
 

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.
sizethe rectangle describing the position and size of the metafile on the "page". May be null.
description_wa UNICODE string describing the metafile. The format must be "some text\0some more text\0\0". May be null.
virtual EMF::METAFILEDEVICECONTEXT::~METAFILEDEVICECONTEXT ( )
inlinevirtual

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
recordthis 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
recordstandard 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
inlinevirtual

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.

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.

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: