---
name: "EMF_METARECORD"
section: "3"
platform: "linux"
package: "libemf-doc"
version: "1.0.13-8"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/EMF_METARECORD"
---

# EMF\_METARECORD(3)

The base class of all metafile records.

## NAME

EMF::METARECORD - The base class of all metafile records.

## SYNOPSIS

`#include <libemf.h>`

Inherited by **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**, and **EMF::ENHMETAHEADER**.

### Public Member Functions

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

The base class of all metafile records.

A metafile consists off a sequence of graphics records 'executed' in order. This is a common base class that allows each, different, record to be stored in a common list. An interface is specified for each record to write itself to a file.

## Constructor & Destructor Documentation

### virtual EMF::METARECORD::~METARECORD ()` [inline]`, ` [virtual]`

The virtual destructor allows records which allocated additional memory to release it when they are deleted. Simple records just use the default destructor defined here.

## Member Function Documentation

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

Execute the graphics command in the given context. Used by PlayEnhMetaFile to 'copy' one metafile into another.

**Parameters**

*source* the device context from which this record is taken. \
 *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. This is virtual since some records are of arbitrary length and need to write additional information after their EMR structure.

**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]`

The header record of a metafile records the total size of the metafile in bytes, so as each record is added to the list, it updates the total size.

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.
