[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