aboutsummaryrefslogtreecommitdiff
path: root/generic/Text.c
diff options
context:
space:
mode:
Diffstat (limited to 'generic/Text.c')
-rw-r--r--generic/Text.c84
1 files changed, 27 insertions, 57 deletions
diff --git a/generic/Text.c b/generic/Text.c
index b544149..c3cf746 100644
--- a/generic/Text.c
+++ b/generic/Text.c
@@ -351,7 +351,7 @@ Configure(ZnItem item,
* to the old one.
*/
if ((item->connected_item == ZN_NO_ITEM) ||
- (item->connected_item->class->has_anchors &&
+ (ISSET(item->connected_item->class->flags, ZN_CLASS_HAS_ANCHORS) &&
(item->parent == item->connected_item->parent))) {
ZnITEM.UpdateItemDependency(item, old_connected);
}
@@ -376,7 +376,7 @@ Query(ZnItem item,
int argc __unused,
Tcl_Obj *CONST argv[])
{
- if (ZnQueryAttribute(item->wi, item, text_attrs, argv[0]) == TCL_ERROR) {
+ if (ZnQueryAttribute(item->wi->interp, item, text_attrs, argv[0]) == TCL_ERROR) {
return TCL_ERROR;
}
@@ -868,8 +868,8 @@ Draw(ZnItem item)
box[3].y = box[2].y;
ZnTransformPoints(transfo, box, box, 4);
for (i = 0; i < 4; i++) {
- xp[i].x = box[i].x;
- xp[i].y = box[i].y;
+ xp[i].x = (short) box[i].x;
+ xp[i].y = (short) box[i].y;
}
XFillPolygon(wi->dpy, wi->draw_buffer, wi->gc, xp, 4, Convex, CoordModeOrigin);
}
@@ -887,8 +887,8 @@ Draw(ZnItem item)
box[3].y = box[2].y;
ZnTransformPoints(transfo, box, box, 4);
for (i = 0; i < 4; i++) {
- xp[i].x = box[i].x;
- xp[i].y = box[i].y;
+ xp[i].x = (short) box[i].x;
+ xp[i].y = (short) box[i].y;
}
XFillPolygon(wi->dpy, wi->draw_buffer, wi->gc, xp, 4, Convex, CoordModeOrigin);
for (i = sel_first_line+1, lines_ptr = &lines[sel_first_line+1];
@@ -903,8 +903,8 @@ Draw(ZnItem item)
box[3].y = box[2].y;
ZnTransformPoints(transfo, box, box, 4);
for (i = 0; i < 4; i++) {
- xp[i].x = box[i].x;
- xp[i].y = box[i].y;
+ xp[i].x = (short) box[i].x;
+ xp[i].y = (short) box[i].y;
}
XFillPolygon(wi->dpy, wi->draw_buffer, wi->gc, xp, 4, Convex, CoordModeOrigin);
}
@@ -918,8 +918,8 @@ Draw(ZnItem item)
box[3].y = box[2].y;
ZnTransformPoints(transfo, box, box, 4);
for (i = 0; i < 4; i++) {
- xp[i].x = box[i].x;
- xp[i].y = box[i].y;
+ xp[i].x = (short) box[i].x;
+ xp[i].y = (short) box[i].y;
}
XFillPolygon(wi->dpy, wi->draw_buffer, wi->gc, xp, 4, Convex, CoordModeOrigin);
}
@@ -942,7 +942,7 @@ Draw(ZnItem item)
box[1].y = box[0].y + font_height - 1;
ZnTransformPoints(transfo, box, box, 2);
XDrawLine(wi->dpy, wi->draw_buffer, wi->gc,
- box[0].x, box[0].y, box[1].x, box[1].y);
+ (int) box[0].x, (int) box[0].y, (int) box[1].x, (int) box[1].y);
}
@@ -961,10 +961,10 @@ Draw(ZnItem item)
values.foreground = ZnGetGradientPixel(text->color, 0.0);
}
else {
- dest_im_width = (item->item_bounding_box.corner.x -
- item->item_bounding_box.orig.x);
- dest_im_height = (item->item_bounding_box.corner.y -
- item->item_bounding_box.orig.y);
+ dest_im_width = (unsigned int) (item->item_bounding_box.corner.x -
+ item->item_bounding_box.orig.x);
+ dest_im_height = (unsigned int) (item->item_bounding_box.corner.y -
+ item->item_bounding_box.orig.y);
drw = Tk_GetPixmap(wi->dpy, wi->draw_buffer,
MAX(dest_im_width, text->max_width),
@@ -1058,20 +1058,20 @@ Draw(ZnItem item)
ZnMapImage(src_im, dest_im, box);
- XPutImage(wi->dpy, drw, gc, dest_im,
- 0, 0, 0, 0, dest_im_width, dest_im_height);
+ TkPutImage(NULL, 0,wi->dpy, drw, gc, dest_im,
+ 0, 0, 0, 0, dest_im_width, dest_im_height);
values.foreground = ZnGetGradientPixel(text->color, 0.0);
values.stipple = drw;
- values.ts_x_origin = item->item_bounding_box.orig.x;
- values.ts_y_origin = item->item_bounding_box.orig.y;
+ values.ts_x_origin = (int) item->item_bounding_box.orig.x;
+ values.ts_y_origin = (int) item->item_bounding_box.orig.y;
values.fill_style = FillStippled;
XChangeGC(wi->dpy, wi->gc,
GCFillStyle|GCStipple|GCTileStipXOrigin|GCTileStipYOrigin|GCForeground,
&values);
XFillRectangle(wi->dpy, wi->draw_buffer, wi->gc,
- item->item_bounding_box.orig.x,
- item->item_bounding_box.orig.y,
+ (int) item->item_bounding_box.orig.x,
+ (int) item->item_bounding_box.orig.y,
dest_im_width, dest_im_height);
XFreeGC(wi->dpy, gc);
@@ -1108,9 +1108,6 @@ Render(ZnItem item)
int underline_thickness, underline_pos=0, overstrike_pos=0;
int sel_first_line=-1, sel_last_line=-1, cursor_line=-1;
int sel_start_offset=0, sel_stop_offset=0, cursor_offset=0;
-#ifndef PTK_800
- Tcl_Encoding enc;
-#endif
if (!text->text_info) {
return;
@@ -1121,9 +1118,6 @@ Render(ZnItem item)
return;
}
}
-#ifndef PTK_800
- enc = ZnTexFontEncoding(text->tfi);
-#endif
#ifdef GL_LIST
if (!item->gl_list) {
@@ -1160,7 +1154,8 @@ Render(ZnItem item)
if (transfo) {
m[0] = transfo->_[0][0]; m[1] = transfo->_[0][1];
m[4] = transfo->_[1][0]; m[5] = transfo->_[1][1];
- m[12] = transfo->_[2][0]; m[13] = transfo->_[2][1];
+ m[12] = ZnNearestInt(transfo->_[2][0]);
+ m[13] = ZnNearestInt(transfo->_[2][1]);
}
glLoadMatrixd(m);
glTranslated(origin.x, origin.y, 0.0);
@@ -1267,32 +1262,7 @@ Render(ZnItem item)
glEnable(GL_TEXTURE_2D);
}
-#ifndef PTK_800
- /*
- * Temporary ack to fix utf8 display.
- * the malloc should be done once for
- * each rendering of the item and not
- * for each line. The max line size should
- * be stored by CC.
- */
- {
- char *buf;
- int result, written;
-
- buf = ZnMalloc(lines_ptr->num_bytes+1);
- if ((result = Tcl_UtfToExternal(wi->interp, enc,
- lines_ptr->start, lines_ptr->num_bytes,
- TCL_ENCODING_START|TCL_ENCODING_END,
- NULL, buf, lines_ptr->num_bytes+1, NULL,
- &written, NULL)) != TCL_OK) {
- printf("Failed to convert the string: %d\n", result);
- }
- ZnRenderString(text->tfi, buf, written);
- ZnFree(buf);
- }
-#else
ZnRenderString(text->tfi, lines_ptr->start, lines_ptr->num_bytes);
-#endif
glPopMatrix();
glPushMatrix();
}
@@ -1557,7 +1527,7 @@ PointToChar(TextItem text,
break;
}
n = Tk_MeasureChars(text->font, ti->start, (int) ti->num_bytes,
- p.x + 2 - (int) ti->origin_x, TK_PARTIAL_OK,
+ (int) (p.x + 2 - ti->origin_x), TK_PARTIAL_OK,
&dummy);
#ifdef PTK_800
byte_index = (ti->start + n - 1) - text->text;
@@ -1998,11 +1968,11 @@ Selection(ZnItem item,
**********************************************************************************
*/
static ZnItemClassStruct TEXT_ITEM_CLASS = {
- sizeof(TextItemStruct),
- 0, /* num_parts */
- True, /* has_anchors */
"text",
+ sizeof(TextItemStruct),
text_attrs,
+ 0, /* num_parts */
+ ZN_CLASS_HAS_ANCHORS|ZN_CLASS_ONE_COORD, /* flags */
Tk_Offset(TextItemStruct, pos),
Init,
Clone,