All Manuals > CAPI Reference Manual > 1 CAPI Reference Entries




Creates a metafile on disk using Graphics Ports operations.




with-external-metafile ( var &key pane bounds format pathname drawing-mode ) &body body => nil



A variable.


A graphics port, or nil .


A list of four integers. Can also be nil on Microsoft Windows.


One of the keywords :enhanced , :enhanced-plus , :enhanced-gdi and :windows .


A pathname or string.


One of the keywords :compatible and :quality .


Code containing Graphic Ports operations that draw to var .


The macro with-external-metafile creates a metafile at the location given by pathname containing records corresponding to the Graphics Ports operations in body that draw to var .

On Microsoft Windows the metafile is a device-independent format for storing pictures. For more information about metafiles, see the Microsoft documentation.

On Cocoa and GTK+ the metafile format is PDF.

If pane is nil , the macro binds var to a graphics port object representing the metafile. If pane is non-nil then it must be an instance of output-pane or a subclass. In this case var is bound to pane , and pane is modified within the dynamic extent of with-external-metafile so all drawing operations draw to the metafile instead of pane . This can be useful when reusing existing redisplay code that is written expecting an output-pane. The default value of pane is nil .

If bounds is nil the metafile size will be computed from the drawing done within the body. This value is not allowed on Cocoa.

If bounds is non-nil (required on Cocoa), it should be a list of integers specifying the coordinate rectangle ( x y width height ) that the metafile contains.

format is used only on Microsoft Windows. It can be one of:


Generate an Enhanced-metafile file containing "dual drawing" both in GDI+ and GDI.


Generate an Enhanced-metafile file containing drawing only in GDI+.


Generate an Enhanced-metafile file containing drawing only in GDI.


Generate a Windows-metafile.

The default value of format is :enhanced .

When drawing-mode is :compatible (rather than the default value :quality ) :enhanced and :enhanced-plus behave like :enhanced-gdi .

Note: GDI+ gives the best quality, so normally that is what you would want. However some programs may be able to display only GDI (and not GDI+), which is why the default is dual drawing. This however generates a larger file and is presumably slightly slower, so if you are sure that the file will be used only by programs that can draw GDI+ emf files (sometimes called EMF+), you can use format :enhanced-plus .

On Cocoa the metafile format is always PDF as a single page, and the format argument is ignored.

pathname specifies the filename of the metafile. If its pathname-type is nil , then the file extension "EMF" is used for an Enhanced-metafile, or "WMF" for a Windows-metafile.

drawing-mode should be either :compatible which causes drawing to be the same as in LispWorks 6.0, or :quality which causes all the drawing to be transformed properly, and allows control over anti-aliasing on Microsoft Windows and GTK+. The default value of drawing-mode is :quality .

For more information about drawing-mode , see "Drawing mode and anti-aliasing" in the CAPI User Guide .


with-external-metafile is not implemented on X11/Motif.

See also


CAPI Reference Manual - 15 Dec 2011