summaryrefslogtreecommitdiff
path: root/test/cdtest/drivers.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/cdtest/drivers.c')
-rw-r--r--test/cdtest/drivers.c457
1 files changed, 457 insertions, 0 deletions
diff --git a/test/cdtest/drivers.c b/test/cdtest/drivers.c
new file mode 100644
index 0000000..93918d5
--- /dev/null
+++ b/test/cdtest/drivers.c
@@ -0,0 +1,457 @@
+/*=========================================================================*/
+/* DRIVERS.C - 10/02/95 */
+/* Suporte para os drivers do CD. */
+/*=========================================================================*/
+
+/*- Bibliotecas padrao usadas: --------------------------------------------*/
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+/*- Inclusao das bibliotecas IUP e CD: ------------------------------------*/
+#include <iup.h>
+#include <cd.h>
+#include <cdiup.h>
+
+/*- Prototypes e declaracoes do CDTest: -----------------------------------*/
+#include "cdtest.h"
+
+/*- Contexto do CDTest (declarado em CDTEST.C): ---------------------------*/
+extern tCTC ctgc;
+
+#ifdef CDTEST_WIN32
+#define CLIPBOARD_WIN32
+#define WMF
+#define PRINTER
+#endif
+
+#define CLIPBOARD
+#define CGM
+#define MF
+#define PS
+#define DXF
+#define DGN
+#define PDF
+
+static int LoadCanvas(char* ctx_name, cdContext* ctx, char *filename)
+{
+ if (IupGetFile(filename) == 0)
+ {
+ newmetafile(filename, ctx);
+ cdActivate(ctgc.iup_canvas);
+ cdWriteMode(CD_REPLACE);
+ cdLineStyle(CD_CONTINUOUS);
+ cdLineWidth(1);
+ cdBackground(CD_WHITE);
+ cdBackOpacity(CD_TRANSPARENT);
+ cdForeground(CD_BLACK);
+ cdInteriorStyle(CD_SOLID);
+ if (ctgc.stretch_play)
+ {
+ cdPlay(ctx, 0, ctgc.w-1, 0, ctgc.h-1, filename);
+ sprintf(ctgc.status_line, "cdPlay(%s, 0, %d, 0, %d, %s)", ctx_name, ctgc.w-1, ctgc.h-1, filename);
+ }
+ else
+ {
+ cdPlay(ctx, 0, 0, 0, 0, filename);
+ sprintf(ctgc.status_line, "cdPlay(%s, 0, 0, 0, 0, %s)", ctx_name, filename);
+ }
+ set_status();
+ }
+
+ return IUP_DEFAULT;
+}
+
+static int SaveCanvas(char* ctx_name, cdContext* ctx, char *data)
+{
+ cdCanvas *canvas;
+
+ canvas = cdCreateCanvas(ctx, data);
+ if (!canvas)
+ {
+ IupMessage("Error!", "Can not create canvas.");
+ return IUP_DEFAULT;
+ }
+
+ cdActivate(canvas);
+
+ cdPattern(10, 10, ctgc.pattern);
+ cdStipple(10, 10, ctgc.stipple);
+ cdInteriorStyle(CD_SOLID);
+
+ if (ctgc.sim == 1)
+ cdSimulate(CD_SIM_ALL);
+ else
+ cdSimulate(CD_SIM_NONE);
+
+ putlist(canvas);
+
+ cdKillCanvas(canvas);
+
+ return IUP_DEFAULT;
+}
+
+
+/*-------------------------------------------------------------------------*/
+/* Copia o conteudo do canvas para o clipboard do Windows, vetorial. */
+/*-------------------------------------------------------------------------*/
+#ifdef CLIPBOARD
+#include <cdclipbd.h>
+
+static int fClipBoard(void)
+{
+ char data[1000];
+ sprintf(data, "%dx%d %g", ctgc.w, ctgc.h, ctgc.res);
+ return SaveCanvas("CD_CLIPBOARD", CD_CLIPBOARD, data);
+}
+
+/*-------------------------------------------------------------------------*/
+/* Copia o conteudo do canvas para o clipboard do Windows, BitMap. */
+/*-------------------------------------------------------------------------*/
+static int fClipBoardBitmap(void)
+{
+ char data[1000];
+ sprintf(data, "%dx%d %g -b", ctgc.w, ctgc.h, ctgc.res);
+ return SaveCanvas("CD_CLIPBOARD", CD_CLIPBOARD, data);
+}
+
+static int fClipBoardMetafile(void)
+{
+ char data[1000];
+#ifdef WIN32
+ sprintf(data, "%gx%g %g -m", ((double)ctgc.w)/ctgc.res, ((double)ctgc.h)/ctgc.res, ctgc.res);
+#else
+ sprintf(data, "%p %gx%g %g", IupGetAttribute(IupGetHandle("cnvMain"), "XDISPLAY"), ((double)ctgc.w)/ctgc.res, ((double)ctgc.h)/ctgc.res, ctgc.res);
+#endif
+ return SaveCanvas("CD_CLIPBOARD", CD_CLIPBOARD, data);
+}
+
+static int fClipBoardPaste(void)
+{
+ char* data;
+ newmetafile("", CD_CLIPBOARD);
+ cdActivate(ctgc.iup_canvas);
+ cdWriteMode(CD_REPLACE);
+ cdLineStyle(CD_CONTINUOUS);
+ cdLineWidth(1);
+ cdBackground(CD_WHITE);
+ cdBackOpacity(CD_TRANSPARENT);
+ cdForeground(CD_BLACK);
+ cdInteriorStyle(CD_SOLID);
+
+#ifdef WIN32
+ data = "";
+#else
+ data = IupGetAttribute(IupGetHandle("cnvMain"), "XDISPLAY");
+#endif
+
+ if (ctgc.stretch_play)
+ {
+ cdPlay(CD_CLIPBOARD, 0, ctgc.w-1, 0, ctgc.h-1, data);
+ sprintf(ctgc.status_line, "cdPlay(CD_CLIPBOARD, 0, %d, 0, %d, \"\")", ctgc.w-1, ctgc.h-1);
+ }
+ else
+ {
+ cdPlay(CD_CLIPBOARD, 0, 0, 0, 0, data);
+ sprintf(ctgc.status_line, "cdPlay(CD_CLIPBOARD, 0, 0, 0, 0, \"\")");
+ }
+ set_status();
+ return IUP_DEFAULT;
+}
+
+#endif
+
+/*-------------------------------------------------------------------------*/
+/* Copia o conteudo do canvas para um arquivo PostScript. */
+/*-------------------------------------------------------------------------*/
+#ifdef PS
+#include <cdps.h>
+
+static int fPS(void)
+{
+ char filename[1024]="*.ps";
+ char data[1024];
+
+ if (IupGetFile(filename)>=0)
+ {
+ sprintf(data, "%s -s%d", filename, (int)(ctgc.res * 25.4));
+ return SaveCanvas("CD_PS", CD_PS, data);
+ }
+
+ return IUP_DEFAULT;
+}
+
+static int fEPS(void)
+{
+ char filename[1024]="*.eps";
+ char data[1024];
+
+ if (IupGetFile(filename)>=0)
+ {
+ sprintf(data, "%s -s%d -e -l0 -r0 -t0 -b0", filename, (int)(ctgc.res * 25.4));
+ return SaveCanvas("CD_PS", CD_PS, data);
+ }
+
+ return IUP_DEFAULT;
+}
+#endif
+
+#ifdef PDF
+#include <cdpdf.h>
+
+static int fPDF(void)
+{
+ char filename[1024]="*.pdf";
+ char data[1024];
+
+ if (IupGetFile(filename)>=0)
+ {
+ sprintf(data, "%s -s%d", filename, (int)(ctgc.res * 25.4));
+ return SaveCanvas("CD_PDF", CD_PDF, data);
+ }
+
+ return IUP_DEFAULT;
+}
+#endif
+
+/*-------------------------------------------------------------------------*/
+/* Copia o conteudo do canvas para um arquivo CGM. */
+/*-------------------------------------------------------------------------*/
+#ifdef CGM
+#include <cdcgm.h>
+
+static int fCGMb(void)
+{
+ char filename[1024]="*.cgm";
+ char data[1000];
+
+ if (IupGetFile(filename)>=0)
+ {
+ sprintf(data, "%s %gx%g %g", filename, ((double)ctgc.w)/ctgc.res, ((double)ctgc.h)/ctgc.res, ctgc.res);
+ return SaveCanvas("CD_CGM", CD_CGM, data);
+ }
+
+ return IUP_DEFAULT;
+}
+
+static int fCGMt(void)
+{
+ char filename[1024]="*.cgm";
+ char data[1000];
+
+ if (IupGetFile(filename)>=0)
+ {
+ sprintf(data, "%s %gx%g %g -t", filename, ((double)ctgc.w)/ctgc.res, ((double)ctgc.h)/ctgc.res, ctgc.res);
+ return SaveCanvas("CD_CGM", CD_CGM, data);
+ }
+
+ return IUP_DEFAULT;
+}
+
+static int fPlayCGM(void)
+{
+ char filename[1024]="*.cgm";
+ return LoadCanvas("CD_CGM", CD_CGM, filename);
+}
+
+#endif
+
+/*-------------------------------------------------------------------------*/
+/* Copia o conteudo do canvas para um arquivo DXF. */
+/*-------------------------------------------------------------------------*/
+#ifdef DXF
+#include <cddxf.h>
+
+static int fDXF(void)
+{
+ char filename[1024]="*.dxf";
+ char data[1000];
+
+ if (IupGetFile(filename)>=0)
+ {
+ sprintf(data, "%s %gx%g %g", filename, ((double)ctgc.w)/ctgc.res, ((double)ctgc.h)/ctgc.res, ctgc.res);
+ return SaveCanvas("CD_DXF", CD_DXF, data);
+ }
+
+ return IUP_DEFAULT;
+}
+#endif
+
+/*-------------------------------------------------------------------------*/
+/* Copia o conteudo do canvas para um arquivo DGN. */
+/*-------------------------------------------------------------------------*/
+#ifdef DGN
+#include <cddgn.h>
+
+static int fDGN(void)
+{
+ char filename[1024]="*.dgn";
+ char data[1000];
+
+ if (IupGetFile(filename)>=0)
+ {
+ sprintf(data, "%s %gx%g %g -sseed2d.dgn", filename, ((double)ctgc.w)/ctgc.res, ((double)ctgc.h)/ctgc.res, ctgc.res);
+ return SaveCanvas("CD_DGN", CD_DGN, data);
+ }
+
+ return IUP_DEFAULT;
+}
+#endif
+
+#ifdef MF
+#include <cdmf.h>
+/*-------------------------------------------------------------------------*/
+/* Copia o conteudo do canvas para um arquivo metafile do CD. */
+/*-------------------------------------------------------------------------*/
+static int fMF(void)
+{
+ char filename[1024]="*.mf";
+ char data[1000];
+
+ if (IupGetFile(filename)>=0)
+ {
+ sprintf(data, "%s %gx%g %g", filename, ((double)ctgc.w)/ctgc.res, ((double)ctgc.h)/ctgc.res, ctgc.res);
+ return SaveCanvas("CD_METAFILE", CD_METAFILE, data);
+ }
+
+ return IUP_DEFAULT;
+}
+
+/*-------------------------------------------------------------------------*/
+/* Copia o conteudo do canvas para um arquivo metafile do CD. */
+/*-------------------------------------------------------------------------*/
+static int fPlayMF(void)
+{
+ char filename[1024]="*.mf";
+ return LoadCanvas("CD_METAFILE", CD_METAFILE, filename);
+}
+#endif
+
+/*-------------------------------------------------------------------------*/
+/* Copia o conteudo do canvas para um arquivo WMF. */
+/*-------------------------------------------------------------------------*/
+#ifdef WMF
+#include <cdwmf.h>
+
+static int fWMF(void)
+{
+ char filename[1024]="*.wmf";
+ char data[1000];
+
+ if (IupGetFile(filename)>=0)
+ {
+ sprintf(data, "%s %dx%d %g", filename, ctgc.w, ctgc.h, ctgc.res);
+ return SaveCanvas("CD_WMF", CD_WMF, data);
+ }
+
+ return IUP_DEFAULT;
+}
+
+static int fPlayWMF(void)
+{
+ char filename[1024]="*.wmf";
+ return LoadCanvas("CD_WMF", CD_WMF, filename);
+}
+
+/*-------------------------------------------------------------------------*/
+/* Copia o conteudo do canvas para um arquivo EMF. */
+/*-------------------------------------------------------------------------*/
+#include <cdemf.h>
+
+static int fEMF(void)
+{
+ char filename[1024]="*.emf";
+ char data[1000];
+
+ if (IupGetFile(filename)>=0)
+ {
+ sprintf(data, "%s %dx%d %g", filename, ctgc.w, ctgc.h, ctgc.res);
+ return SaveCanvas("CD_EMF", CD_EMF, data);
+ }
+
+ return IUP_DEFAULT;
+}
+
+static int fPlayEMF(void)
+{
+ char filename[1024]="*.emf";
+ return LoadCanvas("CD_EMF", CD_EMF, filename);
+}
+#endif
+
+/*-------------------------------------------------------------------------*/
+/* Copia o conteudo do canvas para a impressora. */
+/*-------------------------------------------------------------------------*/
+#ifdef PRINTER
+#include <cdprint.h>
+
+static int fPrint(void)
+{
+ char *data = "CDTEST.PRN -d";
+ return SaveCanvas("CD_PRINTER", CD_PRINTER, data);
+ return IUP_DEFAULT;
+}
+#endif
+
+/*-------------------------------------------------------------------------*/
+/* Inicializa os menus de Save e Open. */
+/*-------------------------------------------------------------------------*/
+void DriversInit(void)
+{
+#ifdef MF
+ IupSetFunction("cmdMF", (Icallback) fMF);
+ IupSetFunction("cmdPlayMF", (Icallback) fPlayMF);
+#endif
+#ifdef PS
+ IupSetAttribute(IupGetHandle("itPS"), IUP_ACTIVE, IUP_YES);
+ IupSetAttribute(IupGetHandle("itEPS"), IUP_ACTIVE, IUP_YES);
+ IupSetFunction("cmdPS", (Icallback) fPS);
+ IupSetFunction("cmdEPS", (Icallback) fEPS);
+#endif
+#ifdef PDF
+ IupSetAttribute(IupGetHandle("itPDF"), IUP_ACTIVE, IUP_YES);
+ IupSetFunction("cmdPDF", (Icallback) fPDF);
+#endif
+#ifdef CLIPBOARD
+ IupSetAttribute(IupGetHandle("itClipBoardMetafile"), IUP_ACTIVE, IUP_YES);
+ IupSetAttribute(IupGetHandle("itClipBoardPaste"), IUP_ACTIVE, IUP_YES);
+ IupSetFunction("cmdClipBoardMetafile", (Icallback)fClipBoardMetafile);
+ IupSetFunction("cmdClipBoardPaste", (Icallback)fClipBoardPaste);
+#endif
+#ifdef CLIPBOARD_WIN32
+ IupSetAttribute(IupGetHandle("itClipBoardBitmap"), IUP_ACTIVE, IUP_YES);
+ IupSetAttribute(IupGetHandle("itClipBoard"), IUP_ACTIVE, IUP_YES);
+ IupSetFunction("cmdClipBoardBitmap", (Icallback)fClipBoardBitmap);
+ IupSetFunction("cmdClipBoard", (Icallback)fClipBoard);
+#endif
+#ifdef DXF
+ IupSetAttribute(IupGetHandle("itDXF"), IUP_ACTIVE, IUP_YES);
+ IupSetFunction("cmdDXF", (Icallback) fDXF);
+#endif
+#ifdef DGN
+ IupSetAttribute(IupGetHandle("itDGN"), IUP_ACTIVE, IUP_YES);
+ IupSetFunction("cmdDGN", (Icallback) fDGN);
+#endif
+#ifdef CGM
+ IupSetAttribute(IupGetHandle("itCGMb"), IUP_ACTIVE, IUP_YES);
+ IupSetFunction("cmdCGMb", (Icallback) fCGMb);
+ IupSetAttribute(IupGetHandle("itCGMt"), IUP_ACTIVE, IUP_YES);
+ IupSetFunction("cmdCGMt", (Icallback) fCGMt);
+ IupSetAttribute(IupGetHandle("itPlayCGM"), IUP_ACTIVE, IUP_YES);
+ IupSetFunction("cmdPlayCGM", (Icallback) fPlayCGM);
+#endif
+#ifdef WMF
+ IupSetAttribute(IupGetHandle("itEMF"), IUP_ACTIVE, IUP_YES);
+ IupSetAttribute(IupGetHandle("itWMF"), IUP_ACTIVE, IUP_YES);
+ IupSetFunction("cmdEMF", (Icallback) fEMF);
+ IupSetFunction("cmdWMF", (Icallback) fWMF);
+ IupSetAttribute(IupGetHandle("itPlayEMF"), IUP_ACTIVE, IUP_YES);
+ IupSetAttribute(IupGetHandle("itPlayWMF"), IUP_ACTIVE, IUP_YES);
+ IupSetFunction("cmdPlayEMF", (Icallback) fPlayEMF);
+ IupSetFunction("cmdPlayWMF", (Icallback) fPlayWMF);
+#endif
+#ifdef PRINTER
+ IupSetAttribute(IupGetHandle("itPrint"), IUP_ACTIVE, IUP_YES);
+ IupSetFunction("cmdPrint", (Icallback) fPrint);
+#endif
+}