EMF::METARECORD(3)

πŸ“¦
version 1.0.13 Β· 5 versions
, in debian trixie, ubuntu questing

🌸 NAME 🌸

okay so bestie, meet EMF::METARECORD β€” the base class of all metafile records. that's the whole name section, she's the mother of the entire family and we stan πŸ‘‘


✨ SYNOPSIS ✨

first things first, you gotta pull her in:

#include <libemf.h>

πŸ‘‘ Inherited by πŸ‘‘

this is the whole squad that inherits from her, no cap, every single one:

  • EMF::EMRARC
  • EMF::EMRARCTO
  • EMF::EMRBEGINPATH
  • EMF::EMRCLOSEFIGURE
  • EMF::EMRCREATEBRUSHINDIRECT
  • EMF::EMRCREATEPALETTE
  • EMF::EMRCREATEPEN
  • EMF::EMRDELETEOBJECT
  • EMF::EMRELLIPSE
  • EMF::EMRENDPATH
  • EMF::EMREOF
  • EMF::EMREXTCREATEFONTINDIRECTW
  • EMF::EMREXTCREATEPEN
  • EMF::EMREXTTEXTOUTA
  • EMF::EMREXTTEXTOUTW
  • EMF::EMRFILLPATH
  • EMF::EMRLINETO
  • EMF::EMRMODIFYWORLDTRANSFORM
  • EMF::EMRMOVETOEX
  • EMF::EMRPOLYBEZIER
  • EMF::EMRPOLYBEZIER16
  • EMF::EMRPOLYBEZIERTO
  • EMF::EMRPOLYBEZIERTO16
  • EMF::EMRPOLYGON
  • EMF::EMRPOLYGON16
  • EMF::EMRPOLYLINE
  • EMF::EMRPOLYLINE16
  • EMF::EMRPOLYLINETO
  • EMF::EMRPOLYLINETO16
  • EMF::EMRPOLYPOLYGON
  • EMF::EMRPOLYPOLYGON16
  • EMF::EMRRECTANGLE
  • EMF::EMRRESTOREDC
  • EMF::EMRSAVEDC
  • EMF::EMRSCALEVIEWPORTEXTEX
  • EMF::EMRSCALEWINDOWEXTEX
  • EMF::EMRSELECTOBJECT
  • EMF::EMRSETBKCOLOR
  • EMF::EMRSETBKMODE
  • EMF::EMRSETMAPMODE
  • EMF::EMRSETMETARGN
  • EMF::EMRSETMITERLIMIT
  • EMF::EMRSETPIXELV
  • EMF::EMRSETPOLYFILLMODE
  • EMF::EMRSETTEXTALIGN
  • EMF::EMRSETTEXTCOLOR
  • EMF::EMRSETVIEWPORTEXTEX
  • EMF::EMRSETVIEWPORTORGEX
  • EMF::EMRSETWINDOWEXTEX
  • EMF::EMRSETWINDOWORGEX
  • EMF::EMRSETWORLDTRANSFORM
  • EMF::EMRSTROKEANDFILLPATH
  • EMF::EMRSTROKEPATH
  • EMF::ENHMETAHEADER

🫢 Public Member Functions 🫢

these are her public-facing slay moves:

virtual void execute (METAFILEDEVICECONTEXT *source, HDC dc) const =0
virtual bool serialize (DATASTREAM ds)=0
virtual int size (void) const =0
virtual ~METARECORD ()

🌈 Detailed Description 🌈

EMF::METARECORD is the base class of all metafile records. like, all of them. every single one is giving daughter-of-METARECORD energy.

okay so picture this: a metafile is just a sequence of graphics records that get 'executed' in order. literally one after another, in order, no skipping. and this class? she's the common base that lets each different record chill together in one common list πŸ₯°. she also specifies an interface so every record can write itself out to a file. iconic behaviour, honestly.


πŸ’… Constructor & Destructor Documentation πŸ’…

πŸŽ€ virtual EMF::METARECORD::~METARECORD () [inline], [virtual] πŸŽ€

the virtual destructor is there so that records which allocated extra memory can release it when they get deleted 🫢. simple records? they just use the default destructor defined right here. no drama, no cleanup needed, lowkey perfect.


πŸ”₯ Member Function Documentation πŸ”₯

⭐ virtual void EMF::METARECORD::execute (METAFILEDEVICECONTEXT * source, HDC dc) const [pure virtual] ⭐

runs the graphics command inside the given context. this is the one PlayEnhMetaFile uses to 'copy' one metafile into another. she's literally the copy-paste queen πŸ‘‘

Parameters

  • source β€” the device context that this record is taken from.
  • dc β€” the destination context.

Implemented in

EMF::ENHMETAHEADER, EMF::EMREOF, EMF::EMRSETVIEWPORTORGEX,
EMF::EMRSETWINDOWORGEX, EMF::EMRSETVIEWPORTEXTEX, EMF::EMRSCALEVIEWPORTEXTEX,
EMF::EMRSETWINDOWEXTEX, EMF::EMRSCALEWINDOWEXTEX,
EMF::EMRMODIFYWORLDTRANSFORM, EMF::EMRSETWORLDTRANSFORM, EMF::EMRSETTEXTALIGN,
EMF::EMRSETTEXTCOLOR, EMF::EMRSETBKCOLOR, EMF::EMRSETBKMODE,
EMF::EMRSETPOLYFILLMODE, EMF::EMRSETMAPMODE, EMF::EMRSELECTOBJECT,
EMF::EMRDELETEOBJECT, EMF::EMRMOVETOEX, EMF::EMRLINETO, EMF::EMRARC,
EMF::EMRARCTO, EMF::EMRRECTANGLE, EMF::EMRELLIPSE, EMF::EMRPOLYLINE,
EMF::EMRPOLYLINE16, EMF::EMRPOLYGON, EMF::EMRPOLYGON16, EMF::EMRPOLYPOLYGON,
EMF::EMRPOLYPOLYGON16, EMF::EMRPOLYBEZIER, EMF::EMRPOLYBEZIER16,
EMF::EMRPOLYBEZIERTO, EMF::EMRPOLYBEZIERTO16, EMF::EMRPOLYLINETO,
EMF::EMRPOLYLINETO16, EMF::EMREXTTEXTOUTA, EMF::EMREXTTEXTOUTW,
EMF::EMRSETPIXELV, EMF::EMRCREATEPEN, EMF::EMREXTCREATEPEN,
EMF::EMRCREATEBRUSHINDIRECT, EMF::EMREXTCREATEFONTINDIRECTW,
EMF::EMRCREATEPALETTE, EMF::EMRFILLPATH, EMF::EMRSTROKEPATH,
EMF::EMRSTROKEANDFILLPATH, EMF::EMRBEGINPATH, EMF::EMRENDPATH,
EMF::EMRCLOSEFIGURE, EMF::EMRSAVEDC, EMF::EMRRESTOREDC, EMF::EMRSETMETARGN,
and EMF::EMRSETMITERLIMIT.

πŸ¦‹ virtual bool EMF::METARECORD::serialize (DATASTREAM ds) [pure virtual] πŸ¦‹

write yourself to the given file, bestie. it's virtual because some records are of arbitrary length and need to write extra information after their EMR structure. so like, they're not all one-size-fits-all, and that's fine πŸ’–

Parameters

  • ds β€” the datastream to write oneself to.

Implemented in

EMF::ENHMETAHEADER, EMF::EMREOF, EMF::EMRSETVIEWPORTORGEX,
EMF::EMRSETWINDOWORGEX, EMF::EMRSETVIEWPORTEXTEX, EMF::EMRSCALEVIEWPORTEXTEX,
EMF::EMRSETWINDOWEXTEX, EMF::EMRSCALEWINDOWEXTEX,
EMF::EMRMODIFYWORLDTRANSFORM, EMF::EMRSETWORLDTRANSFORM, EMF::EMRSETTEXTALIGN,
EMF::EMRSETTEXTCOLOR, EMF::EMRSETBKCOLOR, EMF::EMRSETBKMODE,
EMF::EMRSETPOLYFILLMODE, EMF::EMRSETMAPMODE, EMF::EMRSELECTOBJECT,
EMF::EMRDELETEOBJECT, EMF::EMRMOVETOEX, EMF::EMRLINETO, EMF::EMRARC,
EMF::EMRARCTO, EMF::EMRRECTANGLE, EMF::EMRELLIPSE, EMF::EMRPOLYLINE,
EMF::EMRPOLYLINE16, EMF::EMRPOLYGON, EMF::EMRPOLYGON16, EMF::EMRPOLYPOLYGON,
EMF::EMRPOLYPOLYGON16, EMF::EMRPOLYBEZIER, EMF::EMRPOLYBEZIER16,
EMF::EMRPOLYBEZIERTO, EMF::EMRPOLYBEZIERTO16, EMF::EMRPOLYLINETO,
EMF::EMRPOLYLINETO16, EMF::EMREXTTEXTOUTA, EMF::EMREXTTEXTOUTW,
EMF::EMRSETPIXELV, EMF::EMRCREATEPEN, EMF::EMREXTCREATEPEN,
EMF::EMRCREATEBRUSHINDIRECT, EMF::EMREXTCREATEFONTINDIRECTW,
EMF::EMRCREATEPALETTE, EMF::EMRFILLPATH, EMF::EMRSTROKEPATH,
EMF::EMRSTROKEANDFILLPATH, EMF::EMRBEGINPATH, EMF::EMRENDPATH,
EMF::EMRCLOSEFIGURE, EMF::EMRSAVEDC, EMF::EMRRESTOREDC, EMF::EMRSETMETARGN,
and EMF::EMRSETMITERLIMIT.

🌟 virtual int EMF::METARECORD::size (void) const [pure virtual] 🌟

okay so the header record of a metafile keeps track of the total size of the metafile in bytes, which means every time a record gets added to the list, it updates that total size. she's keeping the receipts, literally 🧾✨

Implemented in

EMF::ENHMETAHEADER, EMF::EMREOF, EMF::EMRSETVIEWPORTORGEX,
EMF::EMRSETWINDOWORGEX, EMF::EMRSETVIEWPORTEXTEX, EMF::EMRSCALEVIEWPORTEXTEX,
EMF::EMRSETWINDOWEXTEX, EMF::EMRSCALEWINDOWEXTEX,
EMF::EMRMODIFYWORLDTRANSFORM, EMF::EMRSETWORLDTRANSFORM, EMF::EMRSETTEXTALIGN,
EMF::EMRSETTEXTCOLOR, EMF::EMRSETBKCOLOR, EMF::EMRSETBKMODE,
EMF::EMRSETPOLYFILLMODE, EMF::EMRSETMAPMODE, EMF::EMRSELECTOBJECT,
EMF::EMRDELETEOBJECT, EMF::EMRMOVETOEX, EMF::EMRLINETO, EMF::EMRARC,
EMF::EMRARCTO, EMF::EMRRECTANGLE, EMF::EMRELLIPSE, EMF::EMRPOLYLINE,
EMF::EMRPOLYLINE16, EMF::EMRPOLYGON, EMF::EMRPOLYGON16, EMF::EMRPOLYPOLYGON,
EMF::EMRPOLYPOLYGON16, EMF::EMRPOLYBEZIER, EMF::EMRPOLYBEZIER16,
EMF::EMRPOLYBEZIERTO, EMF::EMRPOLYBEZIERTO16, EMF::EMRPOLYLINETO,
EMF::EMRPOLYLINETO16, EMF::EMREXTTEXTOUTA, EMF::EMREXTTEXTOUTW,
EMF::EMRSETPIXELV, EMF::EMRCREATEPEN, EMF::EMREXTCREATEPEN,
EMF::EMRCREATEBRUSHINDIRECT, EMF::EMREXTCREATEFONTINDIRECTW,
EMF::EMRCREATEPALETTE, EMF::EMRFILLPATH, EMF::EMRSTROKEPATH,
EMF::EMRSTROKEANDFILLPATH, EMF::EMRBEGINPATH, EMF::EMRENDPATH,
EMF::EMRCLOSEFIGURE, EMF::EMRSAVEDC, EMF::EMRRESTOREDC, EMF::EMRSETMETARGN,
and EMF::EMRSETMITERLIMIT.

Referenced by EMF::METAFILEDEVICECONTEXT::appendHandle(), and EMF::METAFILEDEVICECONTEXT::appendRecord().


πŸ’œ Author πŸ’œ

generated automatically by Doxygen for libemf from the source code. she didn't write herself, bestie, the machines did it πŸ™ˆ


and that's the whole page!! this was Version 1.0.9, dated Thu Jun 6 2024 23:01:07 β€” go forth and inherit responsibly, mwah πŸ’‹πŸ¦‹πŸŽ€
πŸ“¦ where this page comes from