blob: 1d28716dd6da5988d67f5e6916d64dd0980cbfa2 [file] [log] [blame]
#define SCREEN 0
#define POSTSCRIPT 1
enum color_types
{ WHITE, BLACK, DARKGREY, LIGHTGREY, BLUE, GREEN, YELLOW,
CYAN, RED, DARKGREEN, MAGENTA, BISQUE, LIGHTBLUE, THISTLE, PLUM, KHAKI,
CORAL, TURQUOISE, MEDIUMPURPLE, DARKSLATEBLUE, DARKKHAKI, NUM_COLOR
};
enum line_types
{ SOLID, DASHED };
#define MAXPTS 100 /* Maximum number of points drawable by fillpoly */
typedef struct
{
float x;
float y;
}
t_point; /* Used in calls to fillpoly */
/* Routine for X Windows Input. act_on_button responds to buttons *
* being pressed in the graphics area. drawscreen is the user's *
* routine that can redraw all the graphics. */
void event_loop(void (*act_on_button) (float x,
float y),
void (*drawscreen) (void));
void init_graphics(char *window_name); /* Initializes X display */
void close_graphics(void); /* Closes X display */
/* Changes message in text area. */
void update_message(char *msg);
/* Normal users shouldn't have to use draw_message. Should only be *
* useful if using non-interactive graphics and you want to redraw *
* yourself because of an expose. */
void draw_message(void);
/* Sets world coordinates */
void init_world(float xl,
float yt,
float xr,
float yb);
void flushinput(void); /* Empties event queue */
/* Following routines draw to SCREEN if disp_type = SCREEN *
* and to a PostScript file if disp_type = POSTSCRIPT */
void setcolor(int cindex); /* Use a constant from clist */
int getcolor();
void setlinestyle(int linestyle);
void setlinewidth(int linewidth);
void setfontsize(int pointsize);
void drawline(float x1,
float y1,
float x2,
float y2);
void drawrect(float x1,
float y1,
float x2,
float y2);
void fillrect(float x1,
float y1,
float x2,
float y2);
void fillpoly(t_point * points,
int npoints);
/* Draw or fill a circular arc, respectively. Angles in degrees. startang *
* measured from positive x-axis of Window. Positive angextent means *
* counterclockwise arc. */
void drawarc(float xcen,
float ycen,
float rad,
float startang,
float angextent);
void fillarc(float xcen,
float ycen,
float rad,
float startang,
float angextent);
/* boundx specifies horizontal bounding box. If text won't fit in *
* the space specified by boundx (world coordinates) text isn't drawn */
void drawtext(float xc,
float yc,
const char *text,
float boundx);
void clearscreen(void); /* Erases the screen */
/* Functions for creating and destroying extra menu buttons. */
void create_button(char *prev_button_text,
char *button_text,
void (*button_func) (void (*drawscreen) (void)));
void destroy_button(char *button_text);
/* Opens file for postscript commands and initializes it. All subsequent *
* drawing commands go to this file until close_postscript is called. */
int init_postscript(char *fname); /* Returns 1 if successful */
/* Closes file and directs output to screen again. */
void close_postscript(void);