diff options
author | scuri <scuri> | 2008-10-17 06:10:33 +0000 |
---|---|---|
committer | scuri <scuri> | 2008-10-17 06:10:33 +0000 |
commit | 7b52cc13af4e85f1ca2deb6b6c77de9c95ea0dcf (patch) | |
tree | d0857278bde2eff784227c57dcaf930346ceb7ac /test/cdtest/drivers.c |
First commit - moving from LuaForge to SourceForge
Diffstat (limited to 'test/cdtest/drivers.c')
-rw-r--r-- | test/cdtest/drivers.c | 457 |
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 +} |