[teklib-general] changeset in /hg/teklib/current: added x11_drawstrip, x11_drawar...
Franciska Schulze
fschulze at neoscientists.org
Mon Nov 26 16:26:31 CET 2007
changeset c9390d6c4d47 in /hg/teklib/current
details: http://teklib.org:8001/hg/teklib/current?cmd=changeset;node=c9390d6c4d47
description:
added x11_drawstrip, x11_drawarc, x11_drawfan
diffs (113 lines):
diff -r b428dce5fbc3 -r c9390d6c4d47 src/display_x11/display_x11_api.c
--- a/src/display_x11/display_x11_api.c Tue Oct 16 14:31:51 2007 +0200
+++ b/src/display_x11/display_x11_api.c Sun Nov 11 17:47:45 2007 +0100
@@ -372,6 +372,68 @@ x11_plot(TMOD_X11 *mod, struct TVRequest
TUINT y0 = req->tvr_Op.Plot.Rect[1];
setfgpen(mod, v, req->tvr_Op.Plot.Pen);
XDrawPoint(mod->x11_Display, v->window, v->gc, x0, y0);
+}
+
+/*****************************************************************************/
+
+LOCAL void
+x11_drawstrip(TMOD_X11 *mod, struct TVRequest *req)
+{
+ TINT i;
+ XPoint tri[3];
+ VISUAL *v = req->tvr_Op.Strip.Instance;
+ TINT *array = req->tvr_Op.Strip.Array;
+ TINT num = req->tvr_Op.Strip.Num;
+ TTAGITEM *tags = req->tvr_Op.Strip.Tags;
+ TVPEN pen = (TVPEN) TGetTag(tags, TVisual_Pen, TVPEN_UNDEFINED);
+ TVPEN *penarray = (TVPEN *) TGetTag(tags, TVisual_PenArray, TNULL);
+
+ if (num < 3) return;
+
+ if (penarray)
+ setfgpen(mod, v, penarray[2]);
+ else
+ setfgpen(mod, v, pen);
+
+ tri[0].x = (TINT16) array[0];
+ tri[0].y = (TINT16) array[1];
+ tri[1].x = (TINT16) array[2];
+ tri[1].y = (TINT16) array[3];
+ tri[2].x = (TINT16) array[4];
+ tri[2].y = (TINT16) array[5];
+
+ XFillPolygon(mod->x11_Display, v->window, v->gc, tri, 3,
+ Nonconvex, CoordModeOrigin);
+
+ for (i = 3; i < num; i++)
+ {
+ tri[0].x = tri[1].x;
+ tri[0].y = tri[1].y;
+ tri[1].x = tri[2].x;
+ tri[1].y = tri[2].y;
+ tri[2].x = (TINT16)array[i*2];
+ tri[2].y = (TINT16)array[i*2+1];
+
+ if (penarray)
+ setfgpen(mod, v, penarray[i]);
+
+ XFillPolygon(mod->x11_Display, v->window, v->gc, tri, 3,
+ Nonconvex, CoordModeOrigin);
+ }
+}
+
+/*****************************************************************************/
+
+LOCAL void
+x11_drawfan(TMOD_X11 *mod, struct TVRequest *req)
+{
+}
+
+/*****************************************************************************/
+
+LOCAL void
+x11_drawarc(TMOD_X11 *mod, struct TVRequest *req)
+{
}
/*****************************************************************************/
diff -r b428dce5fbc3 -r c9390d6c4d47 src/display_x11/display_x11_inst.c
--- a/src/display_x11/display_x11_inst.c Tue Oct 16 14:31:51 2007 +0200
+++ b/src/display_x11/display_x11_inst.c Sun Nov 11 17:47:45 2007 +0100
@@ -358,8 +358,17 @@ x11_docmd(TMOD_X11 *inst, struct TVReque
case TVCMD_TEXT:
x11_drawtext(inst, req);
break;
+ case TVCMD_DRAWSTRIP:
+ x11_drawstrip(inst, req);
+ break;
case TVCMD_DRAWTAGS:
x11_drawtags(inst, req);
+ break;
+ case TVCMD_DRAWFAN:
+ x11_drawfan(inst, req);
+ break;
+ case TVCMD_DRAWARC:
+ x11_drawarc(inst, req);
break;
default:
TDBPRINTF(TDB_ERROR,("Unknown command code: %d\n",
diff -r b428dce5fbc3 -r c9390d6c4d47 src/display_x11/display_x11_mod.h
--- a/src/display_x11/display_x11_mod.h Tue Oct 16 14:31:51 2007 +0200
+++ b/src/display_x11/display_x11_mod.h Sun Nov 11 17:47:45 2007 +0100
@@ -188,6 +188,7 @@ LOCAL void x11_rect(TMOD_X11 *mod, struc
LOCAL void x11_rect(TMOD_X11 *mod, struct TVRequest *req);
LOCAL void x11_line(TMOD_X11 *mod, struct TVRequest *req);
LOCAL void x11_plot(TMOD_X11 *mod, struct TVRequest *req);
+LOCAL void x11_drawstrip(TMOD_X11 *mod, struct TVRequest *req);
LOCAL void x11_clear(TMOD_X11 *mod, struct TVRequest *req);
LOCAL void x11_getattrs(TMOD_X11 *mod, struct TVRequest *req);
LOCAL void x11_setattrs(TMOD_X11 *mod, struct TVRequest *req);
@@ -202,6 +203,8 @@ LOCAL void x11_getnextfont(TMOD_X11 *mod
LOCAL void x11_getnextfont(TMOD_X11 *mod, struct TVRequest *req);
LOCAL void x11_drawtags(TMOD_X11 *mod, struct TVRequest *req);
+LOCAL void x11_drawfan(TMOD_X11 *mod, struct TVRequest *req);
+LOCAL void x11_drawarc(TMOD_X11 *mod, struct TVRequest *req);
LOCAL void x11_wake(TMOD_X11 *inst);
More information about the teklib-general
mailing list