source: project/release/5/ezxdisp/trunk/ezxdisp.h @ 38155

Last change on this file since 38155 was 38155, checked in by Ivan Raikov, 4 months ago

C5 port of ezxdisp

File size: 4.4 KB
Line 
1/*
2 * ezxdisp.h
3 * This file is part of the ezxdisp library.
4 */
5
6#ifndef _EZXDISP_H_
7#define _EZXDISP_H_
8
9#ifdef WIN32
10#define main ezx_main
11#endif
12
13#define EZX_NLAYER 8
14
15#define EZX_BUTTON_LEFT      1
16#define EZX_BUTTON_MIDDLE    2
17#define EZX_BUTTON_RIGHT     3
18#define EZX_BUTTON_WHEELUP   4
19#define EZX_BUTTON_WHEELDOWN 5
20
21#define EZX_KEY_HOME  0xff50
22#define EZX_KEY_LEFT  0xff51
23#define EZX_KEY_UP    0xff52
24#define EZX_KEY_RIGHT 0xff53
25#define EZX_KEY_DOWN  0xff54
26
27#define EZX_SHIFT_MASK   (1<<0)
28#define EZX_CONTROL_MASK (1<<1)
29#define EZX_BUTTON_LMASK (1<<2)
30#define EZX_BUTTON_MMASK (1<<3)
31#define EZX_BUTTON_RMASK (1<<4)
32
33typedef struct ezx_s ezx_t;
34
35typedef struct {
36  double r, g, b;
37} ezx_color_t;
38
39typedef struct {
40  int x, y;
41} ezx_point2d_t;
42
43typedef struct {
44  double x, y, z;
45} ezx_point3d_t;
46
47typedef union {
48  enum ezx_event_type {
49    EZX_BUTTON_PRESS,
50    EZX_BUTTON_RELEASE,
51    EZX_KEY_PRESS,
52    EZX_KEY_RELEASE,
53    EZX_MOTION_NOTIFY,
54    EZX_CLOSE
55  } type;
56 
57  struct ezx_button_event {
58    enum ezx_event_type type; /* EZX_BUTTON_PRESS or EZX_BUTTON_RELEASE */
59    unsigned int b;           /* The mouse button code */
60    int x, y;                 /* The x-y coordinates of the mouse pointer */
61    unsigned int state;       /* The key or button mask */
62  } button;
63 
64  struct ezx_key_event {
65    enum ezx_event_type type; /* EZX_KEY_PRESS or EZX_KEY_RELEASE */
66    unsigned int k;           /* The key code */
67    int x, y;                 /* The x-y coordinates of the mouse pointer */
68    unsigned int state;       /* The key or button mask */
69  } key;
70 
71  struct ezx_motion_event {
72    enum ezx_event_type type; /* EZX_MOTION_NOTIFY */
73    int x, y;                 /* The x-y coordinates of the mouse pointer */
74    unsigned int state;       /* The key or button mask */
75  } motion;
76} ezx_event_t;
77
78extern const ezx_color_t ezx_black, ezx_white;
79extern const ezx_color_t ezx_grey25, ezx_grey50, ezx_grey75;
80extern const ezx_color_t ezx_blue, ezx_red, ezx_green, ezx_yellow;
81extern const ezx_color_t ezx_purple, ezx_pink, ezx_cyan, ezx_brown, ezx_orange;
82
83ezx_t *ezx_init(int size_x, int size_y, char *window_name);
84void   ezx_quit(ezx_t *e);
85void   ezx_redraw(ezx_t *e);
86void   ezx_resize(ezx_t *e, int size_x, int size_y);
87void   ezx_wipe(ezx_t *e);
88void   ezx_wipe_layer(ezx_t *e, int lay);
89void   ezx_select_layer(ezx_t *e, int lay);
90void   ezx_set_background(ezx_t *e, const ezx_color_t *col);
91void   ezx_window_name(ezx_t *e, char *window_name);
92int    ezx_isclosed(ezx_t *e);
93int    ezx_sensebutton(ezx_t *e, int *x, int *y);
94int    ezx_pushbutton(ezx_t *e, int *x, int *y);
95void   ezx_next_event(ezx_t *ezx, ezx_event_t *event);
96
97// 2D graphics
98void ezx_point_2d(ezx_t *e, int x, int y, const ezx_color_t *col);
99void ezx_line_2d(ezx_t *e, int x0, int y0, int x1, int y1,
100                 const ezx_color_t *col, int width);
101void ezx_lines_2d(ezx_t *e, int *points, int npoints,
102                  const ezx_color_t *col, int width);
103void ezx_poly_2d(ezx_t *e,int *points, int npoints,
104                 const ezx_color_t *col);
105void ezx_str_2d(ezx_t *e, int x, int y, char *str, const ezx_color_t *col);
106void ezx_rect_2d(ezx_t *e, int x0, int y0, int x1, int y1,
107                 const ezx_color_t *col, int width);
108void ezx_fillrect_2d(ezx_t *e, int x0, int y0, int x1, int y1,
109                     const ezx_color_t *col);
110void ezx_circle_2d(ezx_t *e, int x, int y, int r, const ezx_color_t *col,
111                   int width);
112void ezx_fillcircle_2d(ezx_t *e, int x, int y, int r, const ezx_color_t *col);
113void ezx_arc_2d(ezx_t *e, int x, int y, int w, int h, double angle1,
114                double angle2, const ezx_color_t *col, int width);
115void ezx_fillarc_2d(ezx_t *e, int x, int y, int w, int h, double angle1,
116                    double angle2, const ezx_color_t *col);
117
118// 3D graphics
119void ezx_c3d_to_2d(ezx_t *e, double sx, double sy, double sz, double *dx,
120                   double *dy);
121void ezx_line_3d(ezx_t *e, double x0, double y0, double z0, double x1,
122                 double y1, double z1, const ezx_color_t *col, int width);
123void ezx_set_light_3d(ezx_t *e, double ex, double ey, double ez);
124void ezx_set_view_3d(ezx_t *e, double ex, double ey, double ez, double vx,
125                     double vy, double vz, double m);
126void ezx_str_3d(ezx_t *e, double x0, double y0, double z0, char *str,
127                const ezx_color_t *col);
128void ezx_poly_3d(ezx_t *e, double *points, double hx, double hy,
129                 double hz, int npoints, const ezx_color_t *col);
130void ezx_circle_3d(ezx_t *e, double x0, double y0, double z0, double r,
131                   const ezx_color_t *col);
132
133#endif
Note: See TracBrowser for help on using the repository browser.