logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

EMF::METAFILEDEVICECONTEXT - Graphics Device Context.

Author

       Generated automatically by Doxygen for libemf from the source code.

Version 1.0.9                                Thu Jun 6 2024 23:01:07               EMF::METAFILEDEVICECONTEXT(3)

Constructor & Destructor Documentation

EMF::METAFILEDEVICECONTEXT::METAFILEDEVICECONTEXT(FILE*fp_,constRECT*size,LPCWSTRdescription_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.

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

   virtualEMF::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.

       References deleteMetafile(), and records.

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.

Field Documentation

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

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

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

       Referenced by clearHandle(), and nextHandle().

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

       Referenced by appendHandle(), appendRecord(), mergePoint(), and nextHandle().

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

       Referenced by appendHandle(), appendRecord(), deleteMetafile(), and ~METAFILEDEVICECONTEXT().

Member Function Documentation

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

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

       References header, records, and EMF::METARECORD::size().

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

       Parametersrecord standard graphics record

       References header, records, and EMF::METARECORD::size().

   voidEMF::METAFILEDEVICECONTEXT::clearHandle(DWORDhandle)[inline]
       Clear the usage of this handle

       References EMF::OBJECT::handle, and handles.

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

       References records.

       Referenced by ~METAFILEDEVICECONTEXT().

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

       Implements EMF::OBJECT.

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

       References mergePoint().

       Referenced by mergePoint().

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

       References header, max_device_point, min_device_point, update_frame, viewport_ext, viewport_org,
       window_ext, and window_org.

   DWORDEMF::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 handles, header, and EMF::ENHMETAHEADER::size().

Name

       EMF::METAFILEDEVICECONTEXT - Graphics Device Context.

Synopsis

       #include <libemf.h>

       Inherits EMF::OBJECT.

   PublicMemberFunctionsMETAFILEDEVICECONTEXT (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)

   DataFields
       ::FILE * fpDATASTREAMdsENHMETAHEADER * 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

       Data Fields inherited from EMF::OBJECT
       HGDIOBJ handle

See Also