aboutsummaryrefslogtreecommitdiff
path: root/generic/Image.c
diff options
context:
space:
mode:
authorlecoanet2004-02-13 13:41:07 +0000
committerlecoanet2004-02-13 13:41:07 +0000
commit81984ff8d6b54b07cf1653b70780b664c528708d (patch)
treeaf4fa9a05e655d7e838e945b64fe79fc94f72e1d /generic/Image.c
parentc9dbc80c2f41e9b56b446fd51576d8b9ebab5c80 (diff)
downloadtkzinc-81984ff8d6b54b07cf1653b70780b664c528708d.zip
tkzinc-81984ff8d6b54b07cf1653b70780b664c528708d.tar.gz
tkzinc-81984ff8d6b54b07cf1653b70780b664c528708d.tar.bz2
tkzinc-81984ff8d6b54b07cf1653b70780b664c528708d.tar.xz
Protected UTF8 patch for correct compilation under Perl/Tk 800
Diffstat (limited to 'generic/Image.c')
-rw-r--r--generic/Image.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/generic/Image.c b/generic/Image.c
index 1796089..ff5174f 100644
--- a/generic/Image.c
+++ b/generic/Image.c
@@ -1193,10 +1193,16 @@ placeGlyph(FontInfoPtr font,
}
}
+#ifdef PTK
+FontInfoPtr
+SuckGlyphsFromServer(ZnWInfo *wi,
+ Tk_Font font)
+#else
FontInfoPtr
SuckGlyphsFromServer(ZnWInfo *wi,
Tk_Font font,
Tcl_Encoding enc)
+#endif
{
Pixmap offscreen = 0;
XImage *image = NULL;
@@ -1238,9 +1244,11 @@ SuckGlyphsFromServer(ZnWInfo *wi,
width = 0;
for (i = 0; i < myfontinfo->num_glyphs; i++) {
*str_from = i + myfontinfo->min_char;
+#ifndef PTK
Tcl_ExternalToUtf(wi->interp, enc, str_from, 1,
TCL_ENCODING_START|TCL_ENCODING_END,
NULL, str_utf, 8, NULL, &written, NULL);
+#endif
Tk_MeasureChars(font, str_utf, 1, 0, TK_AT_LEAST_ONE, &length);
width = MAX(width, length);
}
@@ -1277,9 +1285,11 @@ SuckGlyphsFromServer(ZnWInfo *wi,
numToGrab = 0;
for (i = 0; i < myfontinfo->num_glyphs; i++) {
*str_from = i + myfontinfo->min_char;
+#ifndef PTK
Tcl_ExternalToUtf(wi->interp, enc, str_from, 1,
TCL_ENCODING_START|TCL_ENCODING_END,
NULL, str_utf, 8, NULL, &written, NULL);
+#endif
Tk_MeasureChars(font, str_utf, written, 0, TK_AT_LEAST_ONE, &charWidth);
myfontinfo->glyph[i].width = charWidth;
@@ -1463,7 +1473,11 @@ ZnGetTexFont(ZnWInfo *wi,
/*printf("Chargement de la texture pour la fonte %s\n",
ZnNameOfTexFont(tfi));*/
+#ifdef PTK
+ fontinfo = SuckGlyphsFromServer(wi, txf->tkfont);
+#else
fontinfo = SuckGlyphsFromServer(wi, txf->tkfont, txf->enc);
+#endif
if (fontinfo == NULL) {
goto error;
}
@@ -1687,7 +1701,9 @@ ZnGetTexFont(ZnWInfo *wi,
ZnFree(txf->teximage);
txf->teximage = NULL;
}
+#ifndef PTK
Tcl_FreeEncoding(txf->enc);
+#endif
Tk_FreeFont(txf->tkfont);
ZnFree(txf);
ZnWarning("Cannot load font texture for font ");
@@ -1851,7 +1867,9 @@ ZnFreeTexFont(ZnTexFontInfo tfi)
ZnFree(txf->tgvi);
ZnFree(txf->lut);
ZnFree(txf->teximage);
+#ifndef PTK
Tcl_FreeEncoding(txf->enc);
+#endif
Tcl_DeleteHashEntry(txf->hash);
ZnFree(txf);
}
@@ -1887,11 +1905,13 @@ ZnCharInTexFont(ZnTexFontInfo tfi,
*
**********************************************************************************
*/
+#ifndef PTK
Tcl_Encoding
ZnTexFontEncoding(ZnTexFontInfo tfi)
{
return ((TexFontInfo *) tfi)->txf->enc;
}
+#endif
/*
**********************************************************************************