/*=========================================================================*/ /* CDTEST.H - 05/12/95. */ /*=========================================================================*/ #ifndef CDTEST_H #define CDTEST_H /*- Constantes: -----------------------------------------------------------*/ #define MAXPOINTS 300 /*- Macros: ---------------------------------------------------------------*/ #define isdigit(_) (((_)>='0') && ((_)<='9')) #define ignore(_) (void)(_) /*-------------------------------------------------------------------------*/ /* Tipos enumerados. */ /*-------------------------------------------------------------------------*/ typedef enum { LINE, RECT, BOX, ARC, SECTOR, CHORD, PIXEL, MARK, TEXT, POLY, CLIP, IMAGE, RGB, META } tPrim; enum { BACKGROUND, FOREGROUND }; enum { NO_BUFFER, IMAGE_BUFFER, IMAGERGB_BUFFER }; typedef enum { NEWPOINT, MOVE, CLOSE, CENTER, REPAINT } tRubber; #if ((!defined(FALSE))&&(!defined(TRUE))) typedef enum { FALSE, TRUE } tBoolean; #else #define tBoolean int #endif /*-------------------------------------------------------------------------*/ /* Definicao das estruturas de dados usadas. */ /*-------------------------------------------------------------------------*/ typedef struct { int x, y; } tPoint; typedef struct { cdContext* ctx; char *filename; } tMeta; typedef struct { int x1; int y1; int x2; int y2; int write_mode; int line_style; int line_width; int line_cap; int line_join; int interior_style; int back_opacity; int hatch; long foreground; long background; } tLB; /* cdLine ou cdBox ou cdRect */ typedef struct { int xc; int yc; int w; int h; double angle1; double angle2; int write_mode; int line_style; int line_width; int line_cap; int line_join; int interior_style; int back_opacity; int hatch; long foreground; long background; } tAS; /* cdArc e cdSector e Chord */ typedef struct { int x; int y; int write_mode; long foreground; } tPixel; /* cdPixel */ typedef struct { int x; int y; int write_mode; int mark_type; int mark_size; long foreground; } tMark; /* cdMark */ typedef struct { int x; int y; char *s; int write_mode; int font_size; int font_style; int font_typeface; int back_opacity; double text_orientation; int text_alignment; long foreground; long background; } tText; /* cdText */ typedef struct { int poly_mode; int write_mode; int line_style; int line_width; int line_cap; int line_join; int fill_mode; int back_opacity; int interior_style; int hatch; long foreground; long background; int num_points; tPoint *points; } tPoly; /* cdBegin, cdVertex e cdEnd */ typedef struct tnode { tPrim type; union { tLB lineboxpar; tAS arcsectorpar; tPoly polypar; tPixel pixelpar; tMark markpar; tText textpar; tMeta metapar; } par; struct tnode *next; } tList; /*-------------------------------------------------------------------------*/ /* Contexto do CD Test. */ /*-------------------------------------------------------------------------*/ typedef struct { cdCanvas *iup_canvas; /* canvas do iup */ int w, h; /* largura e altura do canvas */ double res; int bpp; cdCanvas *wd_canvas; /* canvas IUP p/ WD */ int wd_dialog; /* se o dialogo do canvas WD estah na tela */ cdCanvas *pic_canvas; /* canvas IUP p/ Picture */ cdCanvas *picture; /* Picture */ int pic_dialog; /* se o dialogo do canvas Picture estah na tela */ cdCanvas *buffer_canvas; /* canvas para double-buffering */ int buffering; Ihandle *dlg_cur_prim; /* handle do dialogo de primitiva ativo */ Ihandle *bt_cur_prim; /* handle do botao da primitiva corente */ tPrim cur_prim; /* primitiva corrente */ tBoolean following; /* flag de rubber-band */ int dlg_x; int dlg_y; int visible; int write_mode; /* atributos do CD */ int line_cap; int line_join; int line_style; int line_width; int fill_mode; int font_typeface; int font_style; int font_size; int text_alignment; double text_orientation; int back_opacity; int mark_type; int poly_mode; long foreground; long background; int interior_style; int hatch; unsigned char stipple[100];/* sample stipple */ long pattern[100]; /* sample pattern */ int dashes[4]; /* sample dash */ int clip_xmin; int clip_xmax; int clip_ymin; int clip_ymax; int clip_mode; unsigned char *red; /* imagem RGB */ unsigned char *green; unsigned char *blue; int rgb_w, rgb_h; /* largura e altura da imagem RGB */ cdImage *test_image; /* imagem off-screen para testes */ int num_points; /* numero de pontos no poligono corrente */ tPoint points[MAXPOINTS]; /* armazanamento temporario do poligono */ char status_line[256]; /* linha de status */ char title[80]; /* barra de titulo do programa */ int x, y; /* posiccao do mouse no canvas */ char mouse_pos[40]; /* posiccao do mouse em uma string */ int sim; /* flag para simulacao */ int stretch_play; tList *head; /* lista de primitivas */ } tCTC; /* CD Test Context */ extern tCTC ctgc; /* parametros geometricos das primitivas */ typedef struct { int x1, x2, y1, y2; } tLinePos; typedef struct { int xmin, xmax, ymin, ymax; int x, y; } tBoxPos; typedef struct { int x, y; } tPixelPos; typedef struct { int x, y; int size; } tMarkPos; typedef struct { int xc, yc; int w, h; double angle1, angle2; } tArcPos; /*-------------------------------------------------------------------------*/ /* Funccoes do modulo CDTEST.C. */ /*-------------------------------------------------------------------------*/ int fEditUndo(void); int fEditClear(void); int fRepaint(void); int fFileExit(void); int fOK(void); int fOpenLines(void); int fClosedLines(void); int fPolyBezier(void); int fFill(void); int fSolid(void); int fHatch(void); int fStipple(void); int fPattern(void); int fPolyClip(void); int fClipPoly(void); int fWDCanvas(void); int fCloseWD(void); int fWDRepaint(void); int fPICCanvas(void); int fClosePIC(void); int fPICRepaint(void); int fOpacity(Ihandle *, char *, int, int); int fMarkType(Ihandle *, char *, int, int); int fNoBuffering(Ihandle *, int); int fImageBuffer(Ihandle *, int); int fRGBBuffer(Ihandle *, int); int fWriteMode(Ihandle *, char *, int, int); int fLineStyle(Ihandle *, char *, int, int); int fLineCap(Ihandle *, char *, int, int); int fLineJoin(Ihandle *, char *, int, int); int fFillMode(Ihandle *, char *, int, int); int fFontStyle(Ihandle *, char *, int, int); int fFontTypeFace(Ihandle *, char *, int, int); int fTextAlignment(Ihandle *, char *, int, int); int fHatchStyle(Ihandle *, char *, int, int); int fColor(Ihandle *); int fClip(Ihandle *); int fClipArea(void); int fClipOff(void); int fImage(Ihandle *); int fImagePut(void); int fImageGet(void); int fImageRGB(Ihandle *); int fImageRGBPut(void); int fImageRGBGet(void); int fLine(Ihandle *); int fRect(Ihandle *); int fBox(Ihandle *); int fArc(Ihandle *); int fSector(Ihandle *); int fChord(Ihandle *); int fPixel(Ihandle *); int fMark(Ihandle *); int fText(Ihandle *); int fPoly(Ihandle *); int fShowDialog(void); int fStretchPlay(Ihandle*, int); int fSimulate(Ihandle *, int); int fOptionsHide(void); int fOptions(void); int fAttributes(void); int fAttributesHide(void); int fMsgHide(void); int fInteger(Ihandle *, int); int fReal(Ihandle *, int); int fDraw(void); int fHelpAbout(void); int fCloseAbout(void); int fMotionCB(Ihandle *, int, int, char *); int fButtonCB(Ihandle *, int, int, int, int, char *); int fResizeCB(Ihandle *, int, int); int fGetFocusCB(Ihandle *); void set_status(void); void mouse_pos(int, int); void putlist(cdCanvas *target); void draw(void); /*-------------------------------------------------------------------------*/ /* Funccoes do modulo RUBBER.C. */ /*-------------------------------------------------------------------------*/ void follow(int, int); void line(tRubber, int, int); void box(tRubber, int, int); void arc(tRubber, int, int); void polygon(tRubber, int, int); /*-------------------------------------------------------------------------*/ /* Funccoes do modulo LIST.C. */ /*-------------------------------------------------------------------------*/ int newpolypoint(int, int); int newline(int, int, int, int); int newrect(int, int, int, int); int newbox(int, int, int, int); int newarc(int, int, int, int, double, double); int newsector(int, int, int, int, double, double); int newchord(int, int, int, int, double, double); int newpixel(int, int); int newmark(int, int, int); int newtext(int, int, char *); int newmetafile(char *, cdContext* ctx); int newpoly(void); void dellist(void); void dellast(void); /*-------------------------------------------------------------------------*/ /* Funccoes do modulo DRIVERS.C. */ /*-------------------------------------------------------------------------*/ void DriversInit(void); /*-------------------------------------------------------------------------*/ /* Funccoes do modulo COLORBAR.C. */ /*-------------------------------------------------------------------------*/ int ColorBarInit(Ihandle *parent, Ihandle *canvas, long *foreground, long *background); void ColorBarClose(void); #endif