⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xwctext.c

📁 早期freebsd实现
💻 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 + -