[teklib-general] changeset in /hg/teklib/current: added drawarc

Franciska Schulze fschulze at neoscientists.org
Mon Nov 26 16:27:01 CET 2007


changeset 237f7ceb9a80 in /hg/teklib/current
details: http://teklib.org:8001/hg/teklib/current?cmd=changeset;node=237f7ceb9a80
description:
	added drawarc

diffs (135 lines):

diff -r 7c5ce8a35e27 -r 237f7ceb9a80 src/display_x11/display_x11_api.c
--- a/src/display_x11/display_x11_api.c	Mon Nov 12 20:17:14 2007 +0100
+++ b/src/display_x11/display_x11_api.c	Mon Nov 19 18:31:27 2007 +0100
@@ -411,8 +411,8 @@ x11_drawstrip(TMOD_X11 *mod, struct TVRe
 		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];
+		tri[2].x = (TINT16) array[i*2];
+		tri[2].y = (TINT16) array[i*2+1];
 
 		if (penarray)
 			setfgpen(mod, v, penarray[i]);
@@ -457,8 +457,8 @@ x11_drawfan(TMOD_X11 *mod, struct TVRequ
 	{
 		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];
+		tri[2].x = (TINT16) array[i*2];
+		tri[2].y = (TINT16) array[i*2+1];
 
 		if (penarray)
 			setfgpen(mod, v, penarray[i]);
@@ -473,6 +473,16 @@ LOCAL void
 LOCAL void
 x11_drawarc(TMOD_X11 *mod, struct TVRequest *req)
 {
+	VISUAL *v = req->tvr_Op.Arc.Instance;
+	TINT x = req->tvr_Op.Arc.Rect[0];
+	TINT y = req->tvr_Op.Arc.Rect[1];
+	TINT w = req->tvr_Op.Arc.Rect[2];
+	TINT h = req->tvr_Op.Arc.Rect[3];
+	TINT a1 = req->tvr_Op.Arc.Angle1*64;
+	TINT a2 = req->tvr_Op.Arc.Angle2*64;
+
+	setfgpen(mod, v, req->tvr_Op.Arc.Pen);
+	XDrawArc(mod->x11_Display, v->window, v->gc, x, y, w, h, a1, a2);
 }
 
 /*****************************************************************************/
diff -r 7c5ce8a35e27 -r 237f7ceb9a80 src/visual/visual_api.c
--- a/src/visual/visual_api.c	Mon Nov 12 20:17:14 2007 +0100
+++ b/src/visual/visual_api.c	Mon Nov 19 18:31:27 2007 +0100
@@ -507,6 +507,24 @@ EXPORT void vis_drawfan(TMOD_VIS *inst, 
 
 /*****************************************************************************/
 
+EXPORT void vis_drawarc(TMOD_VIS *inst, TINT x, TINT y, TINT w, TINT h,
+	TINT angle1, TINT angle2, TVPEN pen)
+{
+	struct TVRequest *req = visi_getreq(inst, TVCMD_DRAWARC,
+		inst->vis_Display, TNULL);
+	req->tvr_Op.Arc.Instance = inst->vis_Visual;
+	req->tvr_Op.Arc.Rect[0] = x;
+	req->tvr_Op.Arc.Rect[1] = y;
+	req->tvr_Op.Arc.Rect[2] = w;
+	req->tvr_Op.Arc.Rect[3] = h;
+	req->tvr_Op.Arc.Angle1 = angle1;
+	req->tvr_Op.Arc.Angle2 = angle2;
+	req->tvr_Op.Arc.Pen = pen;
+	visi_dosync(inst, req);
+}
+
+/*****************************************************************************/
+
 EXPORT void vis_drawrgb(TMOD_VIS *inst, TINT x, TINT y, TUINT *buf,
 	TINT w, TINT h, TINT totw)
 {
diff -r 7c5ce8a35e27 -r 237f7ceb9a80 src/visual/visual_mod.c
--- a/src/visual/visual_mod.c	Mon Nov 12 20:17:14 2007 +0100
+++ b/src/visual/visual_mod.c	Mon Nov 19 18:31:27 2007 +0100
@@ -53,7 +53,7 @@ vis_vectors[VISUAL_NUMVECTORS] =
 	(TMFPTR) vis_drawtags,
 	(TMFPTR) vis_scroll,
 	(TMFPTR) vis_drawfan,
-	//(TMFPTR) vis_drawarc,
+	(TMFPTR) vis_drawarc,
 };
 
 static void
diff -r 7c5ce8a35e27 -r 237f7ceb9a80 src/visual/visual_mod.h
--- a/src/visual/visual_mod.h	Mon Nov 12 20:17:14 2007 +0100
+++ b/src/visual/visual_mod.h	Mon Nov 19 18:31:27 2007 +0100
@@ -22,7 +22,7 @@
 
 #define VISUAL_VERSION		2
 #define VISUAL_REVISION		0
-#define VISUAL_NUMVECTORS	35
+#define VISUAL_NUMVECTORS	36
 
 #ifndef LOCAL
 #define LOCAL
@@ -130,5 +130,7 @@ EXPORT void vis_scroll(TMOD_VIS *mod, TI
 	TINT dx, TINT dy);
 EXPORT void vis_drawtags(TMOD_VIS *mod, TTAGITEM *tags);
 EXPORT void vis_drawfan(TMOD_VIS *mod, TINT *array, TINT num, TTAGITEM *tags);
+EXPORT void vis_drawarc(TMOD_VIS *mod, TINT x, TINT y, TINT w, TINT h,
+	TINT angle1, TINT angle2, TVPEN pen);
 
 #endif
diff -r 7c5ce8a35e27 -r 237f7ceb9a80 tek/ansicall/visual.h
--- a/tek/ansicall/visual.h	Mon Nov 12 20:17:14 2007 +0100
+++ b/tek/ansicall/visual.h	Mon Nov 19 18:31:27 2007 +0100
@@ -89,4 +89,7 @@
 #define TVisualDrawFan(visual,array,num,tags) \
 	(*(((TMODCALL void(**)(TAPTR,TINT *,TINT,TTAGITEM *))(visual))[-35]))(visual,array,num,tags)
 
+#define TVisualDrawArc(visual,x,y,w,h,angle1,angle2,pen) \
+	(*(((TMODCALL void(**)(TAPTR,TINT,TINT,TINT,TINT,TINT,TINT,TVPEN))(visual))[-36]))(visual,x,y,w,h,angle1,angle2,pen)
+
 #endif /* _TEK_ANSICALL_VISUAL_H */
diff -r 7c5ce8a35e27 -r 237f7ceb9a80 tek/idf/visual.idf
--- a/tek/idf/visual.idf	Mon Nov 12 20:17:14 2007 +0100
+++ b/tek/idf/visual.idf	Mon Nov 19 18:31:27 2007 +0100
@@ -47,5 +47,6 @@ void DrawTags(TTAGITEM *tags)
 void DrawTags(TTAGITEM *tags)
 void Scroll(TINT x, TINT y, TINT w, TINT h, TINT dx, TINT dy)
 void DrawFan(TINT *array, TINT num, TTAGITEM *tags)
+void DrawArc(TINT x, TINT y, TINT w, TINT h, TINT angle1, TINT angle2, TVPEN pen)
 
 .end
diff -r 7c5ce8a35e27 -r 237f7ceb9a80 tek/mod/visual.h
--- a/tek/mod/visual.h	Mon Nov 12 20:17:14 2007 +0100
+++ b/tek/mod/visual.h	Mon Nov 19 18:31:27 2007 +0100
@@ -105,6 +105,8 @@ struct TVRequest
 		struct { TAPTR Instance; TINT *Array; TINT Num; TTAGITEM *Tags; } Strip;
 		struct { TAPTR Instance; TTAGITEM *Tags; } DrawTags;
 		struct { TAPTR Instance; TINT *Array; TINT Num; TTAGITEM *Tags; } Fan;
+		struct { TAPTR Instance; TINT Rect[4]; TINT Angle1; TINT Angle2;
+			TVPEN Pen;} Arc;
 
 	} tvr_Op;
 };


More information about the teklib-general mailing list