[teklib-general] changeset in /hg/teklib/current: drawfan added
Franciska Schulze
fschulze at neoscientists.org
Mon Nov 26 16:26:59 CET 2007
changeset 7c5ce8a35e27 in /hg/teklib/current
details: http://teklib.org:8001/hg/teklib/current?cmd=changeset;node=7c5ce8a35e27
description:
drawfan added
diffs (179 lines):
diff -r dbdec3ac7285 -r 7c5ce8a35e27 src/display_x11/display_x11_api.c
--- a/src/display_x11/display_x11_api.c Sun Nov 11 17:49:49 2007 +0100
+++ b/src/display_x11/display_x11_api.c Mon Nov 12 20:17:14 2007 +0100
@@ -427,6 +427,45 @@ LOCAL void
LOCAL void
x11_drawfan(TMOD_X11 *mod, struct TVRequest *req)
{
+ TINT i;
+ XPoint tri[3];
+ VISUAL *v = req->tvr_Op.Fan.Instance;
+ TINT *array = req->tvr_Op.Fan.Array;
+ TINT num = req->tvr_Op.Fan.Num;
+ TTAGITEM *tags = req->tvr_Op.Fan.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[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);
+ }
}
/*****************************************************************************/
diff -r dbdec3ac7285 -r 7c5ce8a35e27 src/visual/tests/fonts.c
--- a/src/visual/tests/fonts.c Sun Nov 11 17:49:49 2007 +0100
+++ b/src/visual/tests/fonts.c Mon Nov 12 20:17:14 2007 +0100
@@ -120,7 +120,7 @@ TVOID fonttest(TAPTR v, TVPEN *pentab)
{
TTAGITEM stags[2];
- TVPEN penarray[4];
+ TVPEN penarray[6];
TINT a1[6] = {
0, 300,
300, 0,
@@ -134,10 +134,21 @@ TVOID fonttest(TAPTR v, TVPEN *pentab)
300, 400,
};
+ TINT fan[12] = {
+ 340, 230,
+ 240, 130,
+ 440, 130,
+ 440, 330,
+ 240, 330,
+ 240, 130,
+ };
+
penarray[0] = pentab[0];
penarray[1] = pentab[0];
penarray[2] = pentab[0];
penarray[3] = pentab[3];
+ penarray[4] = pentab[0];
+ penarray[5] = pentab[3];
stags[0].tti_Tag = TVisual_PenArray;
stags[0].tti_Value = (TTAG) &penarray;
@@ -145,6 +156,8 @@ TVOID fonttest(TAPTR v, TVPEN *pentab)
TVisualDrawStrip(v, a1, 3, stags);
TVisualDrawStrip(v, a2, 4, stags);
+
+ TVisualDrawFan(v, fan, 6, stags);
}
TVisualText(v, 10, 10+fh, buf, TStrLen(buf), pentab[0], TVPEN_UNDEFINED);
diff -r dbdec3ac7285 -r 7c5ce8a35e27 src/visual/visual_api.c
--- a/src/visual/visual_api.c Sun Nov 11 17:49:49 2007 +0100
+++ b/src/visual/visual_api.c Mon Nov 12 20:17:14 2007 +0100
@@ -494,6 +494,19 @@ EXPORT void vis_drawstrip(TMOD_VIS *inst
/*****************************************************************************/
+EXPORT void vis_drawfan(TMOD_VIS *inst, TINT *array, TINT num, TTAGITEM *tags)
+{
+ struct TVRequest *req = visi_getreq(inst, TVCMD_DRAWFAN,
+ inst->vis_Display, TNULL);
+ req->tvr_Op.Fan.Instance = inst->vis_Visual;
+ req->tvr_Op.Fan.Array = array;
+ req->tvr_Op.Fan.Num = num;
+ req->tvr_Op.Fan.Tags = tags;
+ 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 dbdec3ac7285 -r 7c5ce8a35e27 src/visual/visual_mod.c
--- a/src/visual/visual_mod.c Sun Nov 11 17:49:49 2007 +0100
+++ b/src/visual/visual_mod.c Mon Nov 12 20:17:14 2007 +0100
@@ -52,7 +52,7 @@ vis_vectors[VISUAL_NUMVECTORS] =
(TMFPTR) vis_drawrgb,
(TMFPTR) vis_drawtags,
(TMFPTR) vis_scroll,
- //(TMFPTR) vis_drawfan,
+ (TMFPTR) vis_drawfan,
//(TMFPTR) vis_drawarc,
};
diff -r dbdec3ac7285 -r 7c5ce8a35e27 src/visual/visual_mod.h
--- a/src/visual/visual_mod.h Sun Nov 11 17:49:49 2007 +0100
+++ b/src/visual/visual_mod.h Mon Nov 12 20:17:14 2007 +0100
@@ -22,7 +22,7 @@
#define VISUAL_VERSION 2
#define VISUAL_REVISION 0
-#define VISUAL_NUMVECTORS 37
+#define VISUAL_NUMVECTORS 35
#ifndef LOCAL
#define LOCAL
@@ -129,6 +129,6 @@ EXPORT void vis_scroll(TMOD_VIS *mod, TI
EXPORT void vis_scroll(TMOD_VIS *mod, TINT x, TINT y, TINT w, TINT h,
TINT dx, TINT dy);
EXPORT void vis_drawtags(TMOD_VIS *mod, TTAGITEM *tags);
-//EXPORT void vis_drawfan(TMOD_VIS *mod, TINT16 *array, TINT num, TVPEN pen);
+EXPORT void vis_drawfan(TMOD_VIS *mod, TINT *array, TINT num, TTAGITEM *tags);
#endif
diff -r dbdec3ac7285 -r 7c5ce8a35e27 tek/ansicall/visual.h
--- a/tek/ansicall/visual.h Sun Nov 11 17:49:49 2007 +0100
+++ b/tek/ansicall/visual.h Mon Nov 12 20:17:14 2007 +0100
@@ -86,4 +86,7 @@
#define TVisualScroll(visual,x,y,w,h,dx,dy) \
(*(((TMODCALL void(**)(TAPTR,TINT,TINT,TINT,TINT,TINT,TINT))(visual))[-34]))(visual,x,y,w,h,dx,dy)
+#define TVisualDrawFan(visual,array,num,tags) \
+ (*(((TMODCALL void(**)(TAPTR,TINT *,TINT,TTAGITEM *))(visual))[-35]))(visual,array,num,tags)
+
#endif /* _TEK_ANSICALL_VISUAL_H */
diff -r dbdec3ac7285 -r 7c5ce8a35e27 tek/idf/visual.idf
--- a/tek/idf/visual.idf Sun Nov 11 17:49:49 2007 +0100
+++ b/tek/idf/visual.idf Mon Nov 12 20:17:14 2007 +0100
@@ -46,5 +46,6 @@ void DrawRGB(TINT x, TINT y, TUINT *buf,
void DrawRGB(TINT x, TINT y, TUINT *buf, TINT w, TINT h, TINT totw)
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)
.end
diff -r dbdec3ac7285 -r 7c5ce8a35e27 tek/mod/visual.h
--- a/tek/mod/visual.h Sun Nov 11 17:49:49 2007 +0100
+++ b/tek/mod/visual.h Mon Nov 12 20:17:14 2007 +0100
@@ -104,6 +104,7 @@ struct TVRequest
TVPEN FgPen, BgPen; } Text;
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;
} tvr_Op;
};
More information about the teklib-general
mailing list