📄 xwctext.c
字号:
/* * $XConsortium: XwcText.c,v 1.18 91/06/06 18:47:44 rws Exp $ *//* * Copyright 1990, 1991 by OMRON Corporation, NTT Software Corporation, * and Nippon Telegraph and Telephone Corporation * Copyright 1991 by the Massachusetts Institute of Technology * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that * the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the names of OMRON, NTT Software, NTT, and M.I.T. * not be used in advertising or publicity pertaining to distribution of the * software without specific, written prior permission. OMRON, NTT Software, * NTT, and M.I.T. make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. * * OMRON, NTT SOFTWARE, NTT, AND M.I.T. DISCLAIM ALL WARRANTIES WITH REGARD * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS, IN NO EVENT SHALL OMRON, NTT SOFTWARE, NTT, OR M.I.T. BE * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * * Authors: Li Yuhong OMRON Corporation * Tatsuya Kato NTT Software Corporation * */#include <stdio.h>#include <X11/Xlib.h>#include "Xi18nint.h"#include <X11/Xfuncs.h>#ifndef X_WCHARextern char *_XAllocScratch();int_Xsiwcstombs(dpy, lcd, text, text_len, nullterm, str) Display *dpy; XLCd lcd; wchar_t *text; int text_len; Bool nullterm; char **str;{ int wsize; int msize = text_len << 1; int n; char *buf; char *old_locale; if (!text_len) return 0; if (lcd) { old_locale = setlocale(LC_CTYPE, (char *)NULL); /* XXX assume stateless encodings */ setlocale(LC_CTYPE, lcd->core.name); } if (nullterm) { do { msize += text_len; buf = _XAllocScratch(dpy, msize);#ifdef macII /* AUX does not implement this yet, so how could we get any? */ n = 0;#else n = wcstombs(buf, text, msize);#endif } while (n == msize); *str = buf; } else { wsize = (text_len + 1) * sizeof(wchar_t); do { msize += text_len; buf = _XAllocScratch(dpy, wsize + msize); bcopy((char *)text, buf, wsize - sizeof(wchar_t)); ((wchar_t *)buf)[text_len] = 0;#ifdef macII /* AUX does not implement this yet, so how could we get any? */ n = 0;#else n = wcstombs(buf + wsize, (wchar_t *)buf, msize);#endif } while (n == msize); *str = buf + wsize; } if (lcd) setlocale(LC_CTYPE, old_locale); return n;} #endif /* X_WCHAR *//* * The bodies of function XwcDrawString and XwcDrawImageString are * almost same. */int_XsiwcDrawString(dpy, d, font_set, gc, x, y, text, text_len) register Display *dpy; Drawable d; XFontSet font_set; GC gc; int x, y; wchar_t *text; int text_len;{#ifdef X_WCHAR#define DecomposeGlyphCharset(xlocale,wcstr,wc_len,cs_str,cs_bytes,scanned,ctid) \ _XwcDecomposeGlyphCharset(xlocale, wcstr, wc_len, cs_str, cs_bytes, scanned, ctid)#define DrawString(dpy,d,g,x,y,str,len) \ XDrawString(dpy, d, g, x, y, str, len)#define DrawString16(dpy,d,g,x,y,str,len) \ XDrawString16(dpy, d, g, x, y, str, len)#include "TextBody.c"#undef DrawString#undef DrawString16 return 0;#else char *mbstr; int mb_len; mb_len = _Xsiwcstombs(dpy, font_set->core.lcd, text, text_len, False, &mbstr); return (*font_set->methods->mb_draw_string)(dpy, d, font_set, gc, x, y, mbstr, mb_len);#endif}void_XsiwcDrawImageString(dpy, d, font_set, gc, x, y, text, text_len) register Display *dpy; Drawable d; XFontSet font_set; GC gc; int x, y; wchar_t *text; int text_len;{#ifdef X_WCHAR#define DrawString(dpy,d,g,x,y,str,len) \ XDrawImageString(dpy, d, g, x, y, str, len)#define DrawString16(dpy,d,g,x,y,str,len) \ XDrawImageString16(dpy, d, g, x, y, str, len)#include "TextBody.c"#undef DecomposeGlyphCharset#undef DrawString#undef DrawString16#else char *mbstr; int mb_len; mb_len = _Xsiwcstombs(dpy, font_set->core.lcd, text, text_len, False, &mbstr); (*font_set->methods->mb_draw_image_string)(dpy, d, font_set, gc, x, y, mbstr, mb_len);#endif}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -