DaVinci 4 für Linux, MacOS X und Solaris erlaubt Ihnen das Zeichnen in eine Bitmap und die Verarbeitung von Windows MetaFiles (.wmf) mit einem API ähnlich dem Windows GDI. Enhances MetaFiles werden dagegen nicht unterstützt.
Um die GDI-Funktionen zu benutzen, muss Ihre Anwendung zunächst die Datei windows.h includieren:
#include <windows.h>
#include <davinci.h>
#include <leonardo.h>
Anschließend stehen Ihnen einige Funktionen mit einer Schnittstelle ähnlich dem Windows GDI zur Verfügung, mit denen Sie Zeichnungen und Windows MetaFiles auf dieselbe Weise erstellen können, mit denen dies auch unter Windows erreicht werden kann.
Beispiel: Erzeugen und Speichern einer WMF-Datei
#include <windows.h>
#include <davinci.h>
#include <leonardo.h>
int main(int argc, char **argv)
{
HDC hdc = CreateMetaFile(NULL);
SetMapMode(hdc, MM_ANISTORIP);
SetWindowExtEx(hdc, 100, 100);
Rectangle(hdc, 10, 10, 90, 90);
TextOut(hdc, 40,40,"Hello Linux", -1);
DAVPARAMS par;
char szFileName[512];
memset(&par, 0, sizeof(par));
par.dwStructSize = sizeof(par);
par.hMetaFile = CloseMetaFile(hdc);
par.MetaResolution.bbox.right = 100;
par.MetaResolution.bbox.bottom = 100;
par.MetaResolution.inch = 96;
par.lpszFileName = szFileName;
strcpy(szFileName, "beispiel.wmf");
ipExportInd(&par);
}
Sie können auch mit CreateCompatibleDC(NULL) einen Memory-DC anlegen, eine HBITMAP selektieren und zeichnen usw.
Damit die libdavinci4.so keine problematischen Funktionsnamen wie "Rectangle" oder "Ellipse" exportiert, werden in der Datei davgdi.h die konventionellen Funktionsnamen durch Funktionsnamen mit dem Präfix "ip" ersetzt. Aus Rectangle wird daher ipRectangle. Falls diese Deklarationen sich als stördend erweisen sollten, können Sie sie mit #undef aufheben und stattdessen den wirklichen Funktionsnamen aufrufen:
#include <windows.h>
#include <davinci.h>
#undef Rectangle
...
ipRectangle(hdc, 1, 2, 3, 4);
→ Schriftarten unter Linux, MacOS X und Solaris