417 lines
9.9 KiB
C
417 lines
9.9 KiB
C
|
/*=========================================================================*/
|
||
|
/* 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_type_face;
|
||
|
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_type_face;
|
||
|
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 fCustom(Ihandle* self);
|
||
|
|
||
|
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
|