aboutsummaryrefslogtreecommitdiff
path: root/generic/Draw.c
diff options
context:
space:
mode:
authorlecoanet2004-04-30 14:26:18 +0000
committerlecoanet2004-04-30 14:26:18 +0000
commit6f8fd90f691aaf8d393b23cf58325ab6e5baf7a9 (patch)
tree0a9c2c01125ef0f5dcc24223c1d84b711005fc83 /generic/Draw.c
parent8d4c7764e7929d87fa5311c1ef651f0dd2780d33 (diff)
downloadtkzinc-6f8fd90f691aaf8d393b23cf58325ab6e5baf7a9.zip
tkzinc-6f8fd90f691aaf8d393b23cf58325ab6e5baf7a9.tar.gz
tkzinc-6f8fd90f691aaf8d393b23cf58325ab6e5baf7a9.tar.bz2
tkzinc-6f8fd90f691aaf8d393b23cf58325ab6e5baf7a9.tar.xz
Added some casts for a smooth compile on Windows.
Adaptations to make use of the new global variables. ZnRenderFancyString function suppressed. Rewritten ZnRenderString and ZnRenderGlyph.
Diffstat (limited to 'generic/Draw.c')
-rw-r--r--generic/Draw.c163
1 files changed, 38 insertions, 125 deletions
diff --git a/generic/Draw.c b/generic/Draw.c
index c727e6a..d7d1283 100644
--- a/generic/Draw.c
+++ b/generic/Draw.c
@@ -326,8 +326,8 @@ ZnDrawLineShape(ZnWInfo *wi,
values.cap_style = CapRound;
XChangeGC(wi->dpy, wi->gc,
GCFillStyle|GCLineWidth|GCJoinStyle|GCCapStyle|GCForeground, &values);
- ZnListAssertSize(wi->work_xpts, num_p);
- xpoints = (XPoint *) ZnListArray(wi->work_xpts);
+ ZnListAssertSize(ZnWorkXPoints, num_p);
+ xpoints = (XPoint *) ZnListArray(ZnWorkXPoints);
for (i = 0; i < num_p; i++) {
xpoints[i].x = (short) p[i].x;
xpoints[i].y = (short) p[i].y;
@@ -535,7 +535,7 @@ ZnDrawRectangleRelief(ZnWInfo *wi,
new_line_width = line_width/2.0;
offset = (unsigned) (line_width - new_line_width);
ZnDrawRectangleRelief(wi,
- (unsigned) ((relief==ZN_RELIEF_GROOVE)?ZN_RELIEF_SUNKEN:ZN_RELIEF_RAISED),
+ (ZnReliefStyle) ((relief==ZN_RELIEF_GROOVE)?ZN_RELIEF_SUNKEN:ZN_RELIEF_RAISED),
gradient, bbox, new_line_width);
internal_bbox = *bbox;
internal_bbox.x += offset;
@@ -543,7 +543,7 @@ ZnDrawRectangleRelief(ZnWInfo *wi,
internal_bbox.width -= offset*2;
internal_bbox.height -= offset*2;
ZnDrawRectangleRelief(wi,
- (unsigned) ((relief==ZN_RELIEF_GROOVE)?ZN_RELIEF_RAISED:ZN_RELIEF_SUNKEN),
+ (ZnReliefStyle) ((relief==ZN_RELIEF_GROOVE)?ZN_RELIEF_RAISED:ZN_RELIEF_SUNKEN),
gradient, &internal_bbox, new_line_width);
return;
}
@@ -1479,8 +1479,8 @@ ComputeAxialGradient(ZnWInfo *wi,
c = shape->contours;
ZnResetBBox(&bbox);
for (i = 0; i < shape->num_contours; i++, c++) {
- ZnListAssertSize(wi->work_pts, c->num_points);
- points = ZnListArray(wi->work_pts);
+ ZnListAssertSize(ZnWorkPoints, c->num_points);
+ points = ZnListArray(ZnWorkPoints);
ZnTransformPoints(transfo1, c->points, points, c->num_points);
ZnAddPointsToBBox(&bbox, points, c->num_points);
}
@@ -1783,8 +1783,8 @@ ZnRenderGradient(ZnWInfo *wi,
XColor *color2;
genarc = ZnGetCirclePoints(3, ZN_CIRCLE_FINE, 0.0, 2*M_PI, &num_p, NULL);
- ZnListAssertSize(wi->work_pts, num_p);
- tarc = ZnListArray(wi->work_pts);
+ ZnListAssertSize(ZnWorkPoints, num_p);
+ tarc = ZnListArray(ZnWorkPoints);
ZnTransformPoints((ZnTransfo *) quad, genarc, tarc, num_p);
p.x = p.y = 0;
ZnTransformPoint((ZnTransfo *) quad, &p, &focalp);
@@ -1902,8 +1902,8 @@ ZnRenderGradient(ZnWInfo *wi,
XColor col;
genarc = ZnGetCirclePoints(3, ZN_CIRCLE_FINEST, 0.0, 2*M_PI, &num_p, NULL);
- ZnListAssertSize(wi->work_pts, num_p);
- tarc = ZnListArray(wi->work_pts);
+ ZnListAssertSize(ZnWorkPoints, num_p);
+ tarc = ZnListArray(ZnWorkPoints);
ZnTransformPoints((ZnTransfo *) quad, genarc, tarc, num_p);
p.x = p.y = 0;
ZnTransformPoint((ZnTransfo *) quad, &p, &focalp);
@@ -1966,144 +1966,57 @@ ZnRenderHollowDot(ZnWInfo *wi,
#ifdef GL
-/* Copyright (c) Mark J. Kilgard, 1997. */
-
-/* This program is freely distributable without licensing fees and is
- provided without guarantee or warrantee expressed or implied. This
- program is -not- in the public domain. */
-
void
ZnRenderGlyph(ZnTexFontInfo *tfi,
int c)
{
ZnTexGVI *tgvi;
- tgvi = ZnTexFontGVI(tfi, c);
+ tgvi = ZnTexFontGVI(tfi, c);
+ /*printf("%c --> x0,y0: %d %d, tx0,ty0: %g %g, x1,y1: %d %d, tx1,ty1: %g %g, advance: %g\n",
+ c, tgvi->v0x, tgvi->v0y, tgvi->t0x, tgvi->t0y,
+ tgvi->v1x, tgvi->v1y, tgvi->t1x, tgvi->t1y,
+ tgvi->advance);*/
glBegin(GL_QUADS);
- glTexCoord2fv(tgvi->t0);
- glVertex2sv(tgvi->v0);
- glTexCoord2fv(tgvi->t1);
- glVertex2sv(tgvi->v1);
- glTexCoord2fv(tgvi->t2);
- glVertex2sv(tgvi->v2);
- glTexCoord2fv(tgvi->t3);
- glVertex2sv(tgvi->v3);
+ glTexCoord2f(tgvi->t0x, tgvi->t0y); glVertex2s(tgvi->v0x, tgvi->v0y);
+ glTexCoord2f(tgvi->t0x, tgvi->t1y); glVertex2s(tgvi->v0x, tgvi->v1y);
+ glTexCoord2f(tgvi->t1x, tgvi->t1y); glVertex2s(tgvi->v1x, tgvi->v1y);
+ glTexCoord2f(tgvi->t1x, tgvi->t0y); glVertex2s(tgvi->v1x, tgvi->v0y);
glEnd();
glTranslatef(tgvi->advance, 0.0, 0.0);
}
+#ifdef PTK_800
void
ZnRenderString(ZnTexFontInfo *tfi,
unsigned char *string,
unsigned int len)
{
- unsigned int i;
-
- for (i = 0; i < len; i++) {
- ZnRenderGlyph(tfi, string[i]);
+ while (len) {
+ ZnRenderGlyph(tfi, *string);
+ string++;
+ len--;
}
}
-
-enum {
- MONO, TOP_BOTTOM, LEFT_RIGHT, FOUR
-};
-
+#else
void
-ZnRenderFancyString(ZnTexFontInfo *tfi,
- unsigned char *string,
- unsigned int len)
+ZnRenderString(ZnTexFontInfo *tfi,
+ unsigned char *string,
+ unsigned int len)
{
- ZnTexGVI *tgvi;
- GLubyte c[4][3];
- int mode = MONO;
- unsigned int i;
+ unsigned int clen;
+ Tcl_UniChar c;
- for (i = 0; i < len; i++) {
- if (string[i] == 27) {
- switch (string[i + 1]) {
- case 'M':
- mode = MONO;
- glColor3ubv((GLubyte *) & string[i + 2]);
- i += 4;
- break;
- case 'T':
- mode = TOP_BOTTOM;
- memcpy(c, &string[i + 2], 6);
- i += 7;
- break;
- case 'L':
- mode = LEFT_RIGHT;
- memcpy(c, &string[i + 2], 6);
- i += 7;
- break;
- case 'F':
- mode = FOUR;
- memcpy(c, &string[i + 2], 12);
- i += 13;
- break;
- }
- } else {
- switch (mode) {
- case MONO:
- ZnRenderGlyph(tfi, string[i]);
- break;
- case TOP_BOTTOM:
- tgvi = ZnTexFontGVI(tfi, string[i]);
- glBegin(GL_QUADS);
- glColor3ubv(c[0]);
- glTexCoord2fv(tgvi->t0);
- glVertex2sv(tgvi->v0);
- glTexCoord2fv(tgvi->t1);
- glVertex2sv(tgvi->v1);
- glColor3ubv(c[1]);
- glTexCoord2fv(tgvi->t2);
- glVertex2sv(tgvi->v2);
- glTexCoord2fv(tgvi->t3);
- glVertex2sv(tgvi->v3);
- glEnd();
- glTranslatef(tgvi->advance, 0.0, 0.0);
- break;
- case LEFT_RIGHT:
- tgvi = ZnTexFontGVI(tfi, string[i]);
- glBegin(GL_QUADS);
- glColor3ubv(c[0]);
- glTexCoord2fv(tgvi->t0);
- glVertex2sv(tgvi->v0);
- glColor3ubv(c[1]);
- glTexCoord2fv(tgvi->t1);
- glVertex2sv(tgvi->v1);
- glColor3ubv(c[1]);
- glTexCoord2fv(tgvi->t2);
- glVertex2sv(tgvi->v2);
- glColor3ubv(c[0]);
- glTexCoord2fv(tgvi->t3);
- glVertex2sv(tgvi->v3);
- glEnd();
- glTranslatef(tgvi->advance, 0.0, 0.0);
- break;
- case FOUR:
- tgvi = ZnTexFontGVI(tfi, string[i]);
- glBegin(GL_QUADS);
- glColor3ubv(c[0]);
- glTexCoord2fv(tgvi->t0);
- glVertex2sv(tgvi->v0);
- glColor3ubv(c[1]);
- glTexCoord2fv(tgvi->t1);
- glVertex2sv(tgvi->v1);
- glColor3ubv(c[2]);
- glTexCoord2fv(tgvi->t2);
- glVertex2sv(tgvi->v2);
- glColor3ubv(c[3]);
- glTexCoord2fv(tgvi->t3);
- glVertex2sv(tgvi->v3);
- glEnd();
- glTranslatef(tgvi->advance, 0.0, 0.0);
- break;
- }
- }
+ while (len) {
+ clen = Tcl_UtfToUniChar(string, &c);
+
+ ZnRenderGlyph(tfi, c);
+
+ string += clen;
+ len -= clen;
}
}
-
+#endif
#endif
/*