iup-stack/cd/test/cdtest/cdtest.h

417 lines
9.9 KiB
C
Raw Normal View History

2023-02-20 16:44:45 +00:00
/*=========================================================================*/
/* 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