Commit 98d2cf8b authored by Cedric Roux's avatar Cedric Roux

add X functions to plot points

parent 062f7fad
...@@ -286,3 +286,31 @@ void x_draw(x_connection *_c, x_window *_w) ...@@ -286,3 +286,31 @@ void x_draw(x_connection *_c, x_window *_w)
printf("x_draw XCopyArea w h %d %d display %p window %d pixmap %d\n", w->width, w->height, c->d, (int)w->w, (int)w->p); printf("x_draw XCopyArea w h %d %d display %p window %d pixmap %d\n", w->width, w->height, c->d, (int)w->w, (int)w->p);
XCopyArea(c->d, w->p, w->w, c->colors[1], 0, 0, w->width, w->height, 0, 0); XCopyArea(c->d, w->p, w->w, c->colors[1], 0, 0, w->width, w->height, 0, 0);
} }
/* those two special functions are to plot many points
* first call x_add_point many times then x_plot_points once
*/
void x_add_point(x_connection *_c, int x, int y)
{
struct x_connection *c = _c;
if (c->pts_size == c->pts_maxsize) {
c->pts_maxsize += 65536;
c->pts = realloc(c->pts, c->pts_maxsize * sizeof(XPoint));
if (c->pts == NULL) OOM;
}
c->pts[c->pts_size].x = x;
c->pts[c->pts_size].y = y;
c->pts_size++;
}
void x_plot_points(x_connection *_c, x_window *_w, int color)
{
struct x_connection *c = _c;
fprintf(stderr, "x_plot_points %d points\n", c->pts_size);
struct x_window *w = _w;
XDrawPoints(c->d, w->p, c->colors[color], c->pts, c->pts_size,
CoordModeOrigin);
c->pts_size = 0;
}
...@@ -41,6 +41,12 @@ void x_fill_rectangle(x_connection *c, x_window *w, int color, ...@@ -41,6 +41,12 @@ void x_fill_rectangle(x_connection *c, x_window *w, int color,
void x_draw_string(x_connection *_c, x_window *_w, int color, void x_draw_string(x_connection *_c, x_window *_w, int color,
int x, int y, const char *t); int x, int y, const char *t);
/* specials functions to plot many points
* you call several times x_add_point() then x_plot_points()
*/
void x_add_point(x_connection *c, int x, int y);
void x_plot_points(x_connection *c, x_window *w, int color);
/* this function copies the pixmap to the window */ /* this function copies the pixmap to the window */
void x_draw(x_connection *c, x_window *w); void x_draw(x_connection *c, x_window *w);
......
...@@ -7,6 +7,9 @@ struct x_connection { ...@@ -7,6 +7,9 @@ struct x_connection {
Display *d; Display *d;
GC *colors; GC *colors;
int ncolors; int ncolors;
XPoint *pts;
int pts_size;
int pts_maxsize;
}; };
struct x_window { struct x_window {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment