|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Motif
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Copyright (c) 1987-2012, The Open Group. All rights reserved.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* These libraries and programs are free software; you can
|
|
Packit |
b099d7 |
* redistribute them and/or modify them under the terms of the GNU
|
|
Packit |
b099d7 |
* Lesser General Public License as published by the Free Software
|
|
Packit |
b099d7 |
* Foundation; either version 2 of the License, or (at your option)
|
|
Packit |
b099d7 |
* any later version.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* These libraries and programs are distributed in the hope that
|
|
Packit |
b099d7 |
* they will be useful, but WITHOUT ANY WARRANTY; without even the
|
|
Packit |
b099d7 |
* implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
Packit |
b099d7 |
* PURPOSE. See the GNU Lesser General Public License for more
|
|
Packit |
b099d7 |
* details.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* You should have received a copy of the GNU Lesser General Public
|
|
Packit |
b099d7 |
* License along with these librararies and programs; if not, write
|
|
Packit |
b099d7 |
* to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
|
|
Packit |
b099d7 |
* Floor, Boston, MA 02110-1301 USA
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* HISTORY
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
/* $TOG: XmStringI.h /main/7 1999/09/01 17:15:15 mgreess $ */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#ifndef _XmStringI_h
|
|
Packit |
b099d7 |
#define _XmStringI_h
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#include <Xm/XmP.h>
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#ifdef __cplusplus
|
|
Packit |
b099d7 |
extern "C" {
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* These are the fontlist structures
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
typedef struct _XmFontListContextRec
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
Boolean error; /* something bad */
|
|
Packit |
b099d7 |
unsigned short index; /* next rendition */
|
|
Packit |
b099d7 |
XmRenderTable table; /* associated table */
|
|
Packit |
b099d7 |
} XmFontListContextRec;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* useful macros */
|
|
Packit |
b099d7 |
#define two_byte_font(f) (( (f)->min_byte1 != 0 || (f)->max_byte1 != 0))
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define FontListType(r) ((_XmRendition)(*(r)))->fontType
|
|
Packit |
b099d7 |
#define FontListFont(r) ((_XmRendition)(*(r)))->font
|
|
Packit |
b099d7 |
#define FontListTag(r) ((_XmRendition)(*(r)))->tag
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Convenience macros */
|
|
Packit |
b099d7 |
#define _XmStringCvtNonOpt(str) (_XmStrOptimized(str) ? \
|
|
Packit |
b099d7 |
_XmStringOptToNonOpt(str) : (str))
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Macros for string internal context block data structure access
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define _XmStrContString(cont) \
|
|
Packit |
b099d7 |
((_XmStringContextRec *)(cont))->string
|
|
Packit |
b099d7 |
#define _XmStrContCurrLine(cont) \
|
|
Packit |
b099d7 |
((_XmStringContextRec *)(cont))->current_line
|
|
Packit |
b099d7 |
#define _XmStrContCurrSeg(cont) \
|
|
Packit |
b099d7 |
((_XmStringContextRec *)(cont))->current_seg
|
|
Packit |
b099d7 |
#define _XmStrContOpt(cont) \
|
|
Packit |
b099d7 |
((_XmStringContextRec *)(cont))->optimized
|
|
Packit |
b099d7 |
#define _XmStrContError(cont) ((_XmStringContextRec *)(cont))->error
|
|
Packit |
b099d7 |
#define _XmStrContTabCount(cont) ((_XmStringContextRec *)(cont))->tab_count
|
|
Packit |
b099d7 |
#define _XmStrContDir(cont) ((_XmStringContextRec *)(cont))->dir
|
|
Packit |
b099d7 |
#define _XmStrContTag(cont) ((_XmStringContextRec *)(cont))->tag
|
|
Packit |
b099d7 |
#define _XmStrContTagType(cont) ((_XmStringContextRec *)(cont))->tag_type
|
|
Packit |
b099d7 |
#define _XmStrContState(cont) ((_XmStringContextRec *)(cont))->state
|
|
Packit |
b099d7 |
#define _XmStrContRendTags(cont) ((_XmStringContextRec *)(cont))->rend_tags
|
|
Packit |
b099d7 |
#define _XmStrContRendCount(cont) ((_XmStringContextRec *)(cont))->rend_count
|
|
Packit |
b099d7 |
#define _XmStrContRendIndex(cont) ((_XmStringContextRec *)(cont))->rend_index
|
|
Packit |
b099d7 |
#define _XmStrContTmpStrDir(cont) ((_XmStringContextRec *)(cont))->tmp_str_dir
|
|
Packit |
b099d7 |
#define _XmStrContTmpDir(cont) ((_XmStringContextRec *)(cont))->tmp_dir
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* internal context data block, for read-out
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
enum
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
PUSH_STATE, BEGIN_REND_STATE, TAG_STATE, TAB_STATE, DIR_STATE,
|
|
Packit |
b099d7 |
TEXT_STATE, END_REND_STATE, POP_STATE, SEP_STATE
|
|
Packit |
b099d7 |
};
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
typedef struct __XmStringContextRec
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
_XmString string; /* pointer to internal string */
|
|
Packit |
b099d7 |
short current_line; /* index of current line */
|
|
Packit |
b099d7 |
unsigned short current_seg; /* index of current segment */
|
|
Packit |
b099d7 |
Boolean optimized; /* is string optimized */
|
|
Packit |
b099d7 |
Boolean error; /* something wrong */
|
|
Packit |
b099d7 |
short tab_count; /* tabs processed */
|
|
Packit |
b099d7 |
XmStringDirection dir; /* last direction */
|
|
Packit |
b099d7 |
XmStringTag tag; /* last tag seen */
|
|
Packit |
b099d7 |
XmTextType tag_type; /* type of last tag seen */
|
|
Packit |
b099d7 |
char state; /* current state of output */
|
|
Packit |
b099d7 |
XmStringTag *rend_tags; /* active renditions. */
|
|
Packit |
b099d7 |
short rend_count; /* number of rend_tags. */
|
|
Packit |
b099d7 |
short rend_index; /* renditions processed */
|
|
Packit |
b099d7 |
XmDirection tmp_dir; /* temporary storage */
|
|
Packit |
b099d7 |
XmStringDirection tmp_str_dir; /* temporary storage */
|
|
Packit |
b099d7 |
} _XmStringContextRec;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Internal representation of an XmParseMapping.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
typedef struct __XmParseMappingRec {
|
|
Packit |
b099d7 |
XtPointer pattern;
|
|
Packit |
b099d7 |
XmTextType pattern_type;
|
|
Packit |
b099d7 |
XmString substitute;
|
|
Packit |
b099d7 |
XmParseProc parse_proc;
|
|
Packit |
b099d7 |
XtPointer client_data;
|
|
Packit |
b099d7 |
XmIncludeStatus include_status;
|
|
Packit |
b099d7 |
unsigned char internal_flags; /* reserved for unparse data */
|
|
Packit |
b099d7 |
} _XmParseMappingRec, *_XmParseMapping;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/****************************************************************
|
|
Packit |
b099d7 |
* Symbolic values
|
|
Packit |
b099d7 |
****************************************************************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define XmSTRING_OPTIMIZED 0x0
|
|
Packit |
b099d7 |
#define XmSTRING_OTHER 0x1
|
|
Packit |
b099d7 |
#define XmSTRING_MULTIPLE_ENTRY 0x2
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define TAG_INDEX_BITS 3
|
|
Packit |
b099d7 |
#define REND_INDEX_BITS 4
|
|
Packit |
b099d7 |
#define BYTE_COUNT_BITS 8
|
|
Packit |
b099d7 |
#define TEXT_BYTES_IN_STRUCT 1
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define TAG_INDEX_UNSET ((1 << TAG_INDEX_BITS) - 1)
|
|
Packit |
b099d7 |
#define TAG_INDEX_MAX TAG_INDEX_UNSET
|
|
Packit |
b099d7 |
#define REND_INDEX_UNSET ((1 << REND_INDEX_BITS) - 1)
|
|
Packit |
b099d7 |
#define REND_INDEX_MAX REND_INDEX_UNSET
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/****************************************************************
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XmStringOpt is an optimized string containing text of less than
|
|
Packit |
b099d7 |
256 bytes with an associated string direction and up to three
|
|
Packit |
b099d7 |
implicit tabs.
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
The text is stored immediately after the header within the string.
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
****************************************************************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
typedef struct __XmStringOptHeader {
|
|
Packit |
b099d7 |
unsigned int type : 2; /* XmSTRING_OPTIMIZED */
|
|
Packit |
b099d7 |
unsigned int text_type : 2; /* MB, WC, locale or charset text.*/
|
|
Packit |
b099d7 |
unsigned int tag_index : TAG_INDEX_BITS; /* index into charset cache */
|
|
Packit |
b099d7 |
unsigned int rend_begin : 1; /* flag for RENDITION_BEGIN */
|
|
Packit |
b099d7 |
unsigned char byte_count; /* size of text in this seg.*/
|
|
Packit |
b099d7 |
unsigned int rend_end : 1; /* flag for RENDITION_END */
|
|
Packit |
b099d7 |
unsigned int rend_index : REND_INDEX_BITS; /* index in tag cache */
|
|
Packit |
b099d7 |
unsigned int str_dir : 2; /* string direction set by app */
|
|
Packit |
b099d7 |
unsigned int flipped : 1; /* whether the text has been flipped */
|
|
Packit |
b099d7 |
unsigned int tabs : 2; /* number of tabs preceding the text */
|
|
Packit |
b099d7 |
unsigned int refcount : 6; /* reference count */
|
|
Packit |
b099d7 |
} _XmStringOptHeader;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
typedef struct __XmStringOpt {
|
|
Packit |
b099d7 |
_XmStringOptHeader header;
|
|
Packit |
b099d7 |
char text[TEXT_BYTES_IN_STRUCT];
|
|
Packit |
b099d7 |
} _XmStringOptRec, *_XmStringOpt;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/****************************************************************
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XmStringMulti specifies a string consisting of multiple entries.
|
|
Packit |
b099d7 |
Each entry is a segment, either an optimized single segment, an
|
|
Packit |
b099d7 |
unoptimized segment, or an array of segments.
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
If implicit_line is 1, each entry is treated as a single line for
|
|
Packit |
b099d7 |
display and other purposes.
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
If implicit_line is 0, the string is a sequence of entries, treated as
|
|
Packit |
b099d7 |
being on one line.
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
****************************************************************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Forward definitions */
|
|
Packit |
b099d7 |
typedef union __XmStringEntryRec *_XmStringEntry;
|
|
Packit |
b099d7 |
typedef union __XmStringNREntryRec *_XmStringNREntry;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
typedef struct __XmStringMultiHeader {
|
|
Packit |
b099d7 |
unsigned int type : 2; /* XmSTRING_MULTIPLE_ENTRY */
|
|
Packit |
b099d7 |
unsigned int implicit_line : 1; /* 1 => linefeed at end */
|
|
Packit |
b099d7 |
unsigned int entry_count : 21;
|
|
Packit |
b099d7 |
unsigned char refcount;
|
|
Packit |
b099d7 |
} _XmStringMultiHeader;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
typedef struct __XmStringMulti{
|
|
Packit |
b099d7 |
_XmStringMultiHeader header;
|
|
Packit |
b099d7 |
_XmStringEntry * entry; /* pointer to array of pointers to entries */
|
|
Packit |
b099d7 |
} _XmStringMultiRec, *_XmStringMulti;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
typedef struct __XmStringEmptyHeader {
|
|
Packit |
b099d7 |
unsigned int type : 2;
|
|
Packit |
b099d7 |
} _XmStringEmptyHeader;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
typedef union __XmStringRec {
|
|
Packit |
b099d7 |
_XmStringEmptyHeader empty;
|
|
Packit |
b099d7 |
_XmStringOptHeader opt_str; /* XmSTRING_OPTIMIZED */
|
|
Packit |
b099d7 |
XtPointer component; /* unused */
|
|
Packit |
b099d7 |
_XmStringMultiHeader multi_str; /* XmSTRING_MULTIPLE_ENTRY */
|
|
Packit |
b099d7 |
} _XmStringRec;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/****************************************************************
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
Cache data structures
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
****************************************************************/
|
|
Packit |
b099d7 |
#define _XmSCANNING_CACHE 0
|
|
Packit |
b099d7 |
#define _XmRENDERING_CACHE 1
|
|
Packit |
b099d7 |
/* #define _XmHIGHLIGHT_CACHE 2 */
|
|
Packit |
b099d7 |
/* #define _XmCSTEXT_CACHE 3 */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Header
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
typedef struct __XmStringCacheRec {
|
|
Packit |
b099d7 |
struct __XmStringCacheRec * next;
|
|
Packit |
b099d7 |
unsigned char cache_type;/* only 255 cache types supported */
|
|
Packit |
b099d7 |
Boolean dirty; /* 1 => recompute this cache */
|
|
Packit |
b099d7 |
} _XmStringCacheHeader, *_XmStringCache;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Scanning cache
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
typedef struct __XmStringScanning {
|
|
Packit |
b099d7 |
_XmStringCacheHeader header; /* cache_type == _XmSCANNING_CACHE */
|
|
Packit |
b099d7 |
/* Matching fields */
|
|
Packit |
b099d7 |
XmDirection prim_dir; /* primary layout direction */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Cached data */
|
|
Packit |
b099d7 |
_XmStringEntry left; /* leftward segment in string */
|
|
Packit |
b099d7 |
_XmStringEntry right; /* rightward segment in string */
|
|
Packit |
b099d7 |
XmDirection layout_direction; /* current segment layout direction */
|
|
Packit |
b099d7 |
unsigned short depth; /* depth of layout push */
|
|
Packit |
b099d7 |
} _XmStringScanningRec, *_XmStringScanningCache;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Rendering cache
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
typedef struct __XmStringRendering {
|
|
Packit |
b099d7 |
_XmStringCacheHeader header; /* cache_type == _XmRENDERING_CACHE */
|
|
Packit |
b099d7 |
/* Matching fields */
|
|
Packit |
b099d7 |
XmRenderTable rt;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Cached data */
|
|
Packit |
b099d7 |
int x; /* x pos of segment */
|
|
Packit |
b099d7 |
int y; /* y pos of segment */
|
|
Packit |
b099d7 |
int width; /* width of segment */
|
|
Packit |
b099d7 |
int height; /* height of segment */
|
|
Packit |
b099d7 |
int ascent; /* ascent of segment */
|
|
Packit |
b099d7 |
int descent; /* descent of segment */
|
|
Packit |
b099d7 |
int baseline; /* baseline of segment */
|
|
Packit |
b099d7 |
XmRendition rendition; /* Rendition used for this segment */
|
|
Packit |
b099d7 |
char prev_tabs; /* accumulates tabs on line */
|
|
Packit |
b099d7 |
} _XmStringRenderingRec, *_XmStringRenderingCache;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/****************************************************************
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
Optimized segment definition.
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
****************************************************************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
typedef struct __XmStringOptSegHdrRec {
|
|
Packit |
b099d7 |
unsigned int type : 2; /* XmSTRING_ENTRY_OPTIMIZED */
|
|
Packit |
b099d7 |
unsigned int text_type : 2; /* MB, WC, locale or charset */
|
|
Packit |
b099d7 |
unsigned int tag_index : TAG_INDEX_BITS; /* index into charset cache */
|
|
Packit |
b099d7 |
unsigned int rend_begin : 1; /* flag for RENDITION_BEGIN */
|
|
Packit |
b099d7 |
unsigned char byte_count;
|
|
Packit |
b099d7 |
unsigned int rend_end : 1; /* flag for RENDITION_END */
|
|
Packit |
b099d7 |
unsigned int rend_index : REND_INDEX_BITS; /* index in rendition tag cache */
|
|
Packit |
b099d7 |
unsigned int str_dir : 2; /* Direction of text in segment */
|
|
Packit |
b099d7 |
unsigned int flipped : 1; /* 1 => data is character-flipped */
|
|
Packit |
b099d7 |
unsigned int tabs_before : 3; /* number of preceding tabs */
|
|
Packit |
b099d7 |
unsigned int permanent : 1; /* 0 => Pointer data can be freed */
|
|
Packit |
b099d7 |
unsigned int soft_line_break : 1; /* linebreak before is soft */
|
|
Packit |
b099d7 |
unsigned int immediate : 1; /* 0 => data is immediate */
|
|
Packit |
b099d7 |
unsigned int pad : 2;
|
|
Packit |
b099d7 |
} _XmStringOptSegHdrRec;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
typedef struct __XmStringOptSegRec {
|
|
Packit |
b099d7 |
_XmStringOptSegHdrRec header;
|
|
Packit |
b099d7 |
union {
|
|
Packit |
b099d7 |
wchar_t wchars[1];
|
|
Packit |
b099d7 |
unsigned char chars[1];
|
|
Packit |
b099d7 |
XtPointer text;
|
|
Packit |
b099d7 |
} data;
|
|
Packit |
b099d7 |
} _XmStringOptSegRec, *_XmStringOptSeg;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/****************************************************************
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
Array 'segment' definition.
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
****************************************************************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
typedef struct __XmStringArraySegHdrRec {
|
|
Packit |
b099d7 |
unsigned int type : 2; /* XmSTRING_ENTRY_ARRAY */
|
|
Packit |
b099d7 |
unsigned int soft_line_break : 1; /* linebreak before is soft */
|
|
Packit |
b099d7 |
unsigned int pad : 5;
|
|
Packit |
b099d7 |
unsigned int segment_count : 8; /* 256 segments per line */
|
|
Packit |
b099d7 |
unsigned char pad2byte[2];
|
|
Packit |
b099d7 |
} _XmStringArraySegHdrRec;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
typedef struct __XmStringArraySegRec {
|
|
Packit |
b099d7 |
_XmStringArraySegHdrRec header;
|
|
Packit |
b099d7 |
_XmStringNREntry * seg; /* array of pointers to segments */
|
|
Packit |
b099d7 |
} _XmStringArraySegRec, *_XmStringArraySeg;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/****************************************************************
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
Unoptimized segment definition.
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
****************************************************************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
typedef struct __XmStringUnoptSegHdrRec {
|
|
Packit |
b099d7 |
unsigned int type : 2; /* XmSTRING_ENTRY_UNOPTIMIZED */
|
|
Packit |
b099d7 |
unsigned int soft_line_break : 1; /* linebreak before is soft */
|
|
Packit |
b099d7 |
unsigned int permanent : 1; /* 0 => Pointer data can be freed */
|
|
Packit |
b099d7 |
unsigned int pop_after : 1; /* whether a pop follows the text */
|
|
Packit |
b099d7 |
unsigned int str_dir : 2; /* Direction of text in segment */
|
|
Packit |
b099d7 |
unsigned int flipped : 1; /* 1 => data is character-flipped */
|
|
Packit |
b099d7 |
XmDirection push_before; /* if NULL => no push */
|
|
Packit |
b099d7 |
unsigned char tabs_before; /* Number of tabs preceding segment */
|
|
Packit |
b099d7 |
XmTextType text_type; /* determines type of text and tag */
|
|
Packit |
b099d7 |
} _XmStringUnoptSegHdrRec;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
typedef struct __XmStringUnoptSegRec {
|
|
Packit |
b099d7 |
_XmStringUnoptSegHdrRec header;
|
|
Packit |
b099d7 |
union {
|
|
Packit |
b099d7 |
wchar_t * wchars;
|
|
Packit |
b099d7 |
unsigned char * chars;
|
|
Packit |
b099d7 |
XtPointer text; /* pointer to text. */
|
|
Packit |
b099d7 |
} data; /* To conform to opt. segment */
|
|
Packit |
b099d7 |
unsigned char begin_count; /* count of rendition tag begins */
|
|
Packit |
b099d7 |
unsigned char end_count; /* count of rendition tag ends */
|
|
Packit |
b099d7 |
XmStringTag * rend_begin_tags; /* list of rendition tag begins */
|
|
Packit |
b099d7 |
XmStringTag * rend_end_tags; /* list of rendition tag ends */
|
|
Packit |
b099d7 |
XmStringTag tag; /* locale or charset tag */
|
|
Packit |
b099d7 |
unsigned int byte_count; /* byte count for this segment */
|
|
Packit |
b099d7 |
unsigned int char_count; /* character count */
|
|
Packit |
b099d7 |
_XmStringCache cache;
|
|
Packit |
b099d7 |
} _XmStringUnoptSegRec, *_XmStringUnoptSeg;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/****************************************************************
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XmStringEntry specifies the different 'segments' that can be part
|
|
Packit |
b099d7 |
of a multiple-entry XmString.
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
These entries can be an optimized segment, an segment with cache,
|
|
Packit |
b099d7 |
also optimized, an unoptimized segment or an array of segments.
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
The array entry type can contain any of the three other entry types,
|
|
Packit |
b099d7 |
but not an array entry. This is because we do not want to handle
|
|
Packit |
b099d7 |
recursive XmStrings.
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
****************************************************************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define XmSTRING_ENTRY_OPTIMIZED 0x0
|
|
Packit |
b099d7 |
#define XmSTRING_ENTRY_UNOPTIMIZED 0x1
|
|
Packit |
b099d7 |
/* #define XmSTRING_ENTRY_OPTIMIZED_CACHE 0x2 */
|
|
Packit |
b099d7 |
#define XmSTRING_ENTRY_ARRAY 0x3
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
typedef union __XmStringEntryRec {
|
|
Packit |
b099d7 |
_XmStringEmptyHeader empty;
|
|
Packit |
b099d7 |
_XmStringOptSegHdrRec single; /* XmSTRING_ENTRY_OPTIMIZED */
|
|
Packit |
b099d7 |
_XmStringUnoptSegHdrRec unopt_single; /* XmSTRING_ENTRY_UNOPTIMIZED */
|
|
Packit |
b099d7 |
_XmStringArraySegHdrRec multiple; /* XmSTRING_ENTRY_ARRAY */
|
|
Packit |
b099d7 |
} _XmStringEntryRec;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/***************************************************************
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
_XmStringNREntry:
|
|
Packit |
b099d7 |
Used in the XmStringArraySeg, to prevent recursive
|
|
Packit |
b099d7 |
definitions of XmStrings.
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
****************************************************************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
typedef union __XmStringNREntryRec {
|
|
Packit |
b099d7 |
_XmStringEmptyHeader empty;
|
|
Packit |
b099d7 |
_XmStringOptSegHdrRec single; /* XmSTRING_ENTRY_OPTIMIZED */
|
|
Packit |
b099d7 |
_XmStringUnoptSegHdrRec unopt_single; /* XmSTRING_ENTRY_UNOPTIMIZED */
|
|
Packit |
b099d7 |
} _XmStringNREntryRec;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/****************************************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Typedefs for old structures
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
****************************************************************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
typedef struct __XmStringUnoptSegRec _XmStringSegmentRec;
|
|
Packit |
b099d7 |
typedef struct __XmStringUnoptSegRec *_XmStringSegment;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
typedef struct __XmStringArraySegRec _XmStringLineRec;
|
|
Packit |
b099d7 |
typedef struct __XmStringArraySegRec *_XmStringLine;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/****************************************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Macros
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
****************************************************************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* General */
|
|
Packit |
b099d7 |
#define _XmStrType(str) ((str)->empty.type)
|
|
Packit |
b099d7 |
#define _XmStrOptimized(str) ((str)->empty.type == XmSTRING_OPTIMIZED)
|
|
Packit |
b099d7 |
#define _XmStrMultiple(str) ((str)->empty.type == XmSTRING_MULTIPLE_ENTRY)
|
|
Packit |
b099d7 |
#define _XmStrRefCountGet(str) (_XmStrMultiple(str) ? \
|
|
Packit |
b099d7 |
(str)->multi_str.refcount : \
|
|
Packit |
b099d7 |
(_XmStrOptimized(str) ? \
|
|
Packit |
b099d7 |
(str)->opt_str.refcount : \
|
|
Packit |
b099d7 |
1))
|
|
Packit |
b099d7 |
#define _XmStrRefCountSet(str, val) \
|
|
Packit |
b099d7 |
(_XmStrMultiple(str) ? \
|
|
Packit |
b099d7 |
((str)->multi_str.refcount = (val)) : \
|
|
Packit |
b099d7 |
(_XmStrOptimized(str) ? \
|
|
Packit |
b099d7 |
((str)->opt_str.refcount = (val)) : 0))
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define _XmStrRefCountInc(str) \
|
|
Packit |
b099d7 |
(_XmStrMultiple(str) ? \
|
|
Packit |
b099d7 |
++((str)->multi_str.refcount) : \
|
|
Packit |
b099d7 |
(_XmStrOptimized(str) ? \
|
|
Packit |
b099d7 |
++((str)->opt_str.refcount) : 0))
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define _XmStrRefCountDec(str) \
|
|
Packit |
b099d7 |
(_XmStrMultiple(str) ? \
|
|
Packit |
b099d7 |
--((str)->multi_str.refcount) : \
|
|
Packit |
b099d7 |
(_XmStrOptimized(str) ? \
|
|
Packit |
b099d7 |
--((str)->opt_str.refcount) : 0))
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Optimized, one-segment XmStrings */
|
|
Packit |
b099d7 |
#define _XmStrTextType(str) ((str)->opt_str.text_type)
|
|
Packit |
b099d7 |
#define _XmStrTagIndex(str) ((str)->opt_str.tag_index)
|
|
Packit |
b099d7 |
#define _XmStrTagGet(str) (_XmStrTagIndex(str) == TAG_INDEX_UNSET ? \
|
|
Packit |
b099d7 |
NULL : \
|
|
Packit |
b099d7 |
_XmStringIndexGetTag(_XmStrTagIndex(str)))
|
|
Packit |
b099d7 |
#define _XmStrByteCount(str) ((str)->opt_str.byte_count)
|
|
Packit |
b099d7 |
#define _XmStrCharCount(str) _XmStringCharacterCount((str)->opt_str.text, \
|
|
Packit |
b099d7 |
_XmStrTextType(str), \
|
|
Packit |
b099d7 |
_XmStrByteCount(str),\
|
|
Packit |
b099d7 |
NULL)
|
|
Packit |
b099d7 |
#define _XmStrRendBegin(str) ((str)->opt_str.rend_begin)
|
|
Packit |
b099d7 |
#define _XmStrRendIndex(str) ((str)->opt_str.rend_index)
|
|
Packit |
b099d7 |
#define _XmStrRendTagGet(str) (_XmStrRendIndex(str) == REND_INDEX_UNSET ? \
|
|
Packit |
b099d7 |
NULL : \
|
|
Packit |
b099d7 |
_XmStringIndexGetTag(_XmStrRendIndex(str)))
|
|
Packit |
b099d7 |
#define _XmStrRendEnd(str) ((str)->opt_str.rend_end)
|
|
Packit |
b099d7 |
#define _XmStrDirection(str) ((str)->opt_str.str_dir)
|
|
Packit |
b099d7 |
#define _XmStrFlipped(str) ((str)->opt_str.flipped)
|
|
Packit |
b099d7 |
#define _XmStrTabs(str) ((str)->opt_str.tabs)
|
|
Packit |
b099d7 |
#define _XmStrText(str) (((_XmStringOpt)(str))->text)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Multi-segment XmStrings */
|
|
Packit |
b099d7 |
#define _XmStrImplicitLine(str) (str)->multi_str.implicit_line
|
|
Packit |
b099d7 |
#define _XmStrAddNewline(str) (_XmStrMultiple(str) ? \
|
|
Packit |
b099d7 |
_XmStrImplicitLine(str) : False)
|
|
Packit |
b099d7 |
#define _XmStrEntryCount(str) (str)->multi_str.entry_count
|
|
Packit |
b099d7 |
#define _XmStrEntryCountGet(str) (_XmStrMultiple(str) ? \
|
|
Packit |
b099d7 |
_XmStrEntryCount(str) : 1)
|
|
Packit |
b099d7 |
#define _XmStrLineCountGet(str) (_XmStrMultiple(str)&&_XmStrAddNewline(str) ? \
|
|
Packit |
b099d7 |
_XmStrEntryCount(str) : \
|
|
Packit |
b099d7 |
1)
|
|
Packit |
b099d7 |
#define _XmStrEntry(str) ((_XmStringMulti)(str))->entry
|
|
Packit |
b099d7 |
#define _XmStrEntryGet(str) (_XmStrMultiple(str) ? \
|
|
Packit |
b099d7 |
_XmStrEntry(str) : \
|
|
Packit |
b099d7 |
(_XmStringEntry*)NULL)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define _XmStrInit(str, type) \
|
|
Packit |
b099d7 |
{ \
|
|
Packit |
b099d7 |
switch (type) { \
|
|
Packit |
b099d7 |
case XmSTRING_OPTIMIZED : \
|
|
Packit |
b099d7 |
bzero((char*)str, sizeof(_XmStringOptRec)); \
|
|
Packit |
b099d7 |
_XmStrType(str) = type; \
|
|
Packit |
b099d7 |
_XmStrTextType(str) = XmNO_TEXT; \
|
|
Packit |
b099d7 |
_XmStrDirection(str) = XmSTRING_DIRECTION_UNSET; \
|
|
Packit |
b099d7 |
_XmStrTagIndex(str) = TAG_INDEX_UNSET; \
|
|
Packit |
b099d7 |
_XmStrRendIndex(str) = REND_INDEX_UNSET; \
|
|
Packit |
b099d7 |
_XmStrRefCountSet(str, 1); \
|
|
Packit |
b099d7 |
break; \
|
|
Packit |
b099d7 |
case XmSTRING_MULTIPLE_ENTRY : \
|
|
Packit |
b099d7 |
bzero((char*)str, sizeof(_XmStringMultiRec)); \
|
|
Packit |
b099d7 |
_XmStrType(str) = type; \
|
|
Packit |
b099d7 |
_XmStrRefCountSet(str, 1); \
|
|
Packit |
b099d7 |
break; \
|
|
Packit |
b099d7 |
} \
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#ifdef _XmDEBUG_XMSTRING_MEM
|
|
Packit |
b099d7 |
#define STR_OFFSET sizeof(double)
|
|
Packit |
b099d7 |
#define _XmStrMalloc(size) (XtMalloc((size) + STR_OFFSET) + STR_OFFSET)
|
|
Packit |
b099d7 |
#define _XmStrFree(ptr) (XtFree(((char*)(ptr)) - STR_OFFSET))
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
#define _XmStrMalloc(size) (XtMalloc(size))
|
|
Packit |
b099d7 |
#define _XmStrFree(ptr) (XtFree((char*)(ptr)))
|
|
Packit |
b099d7 |
#endif /* _XmDEBUG_XMSTRING_MEM */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define _XmStrCreate(str, type, text_len) \
|
|
Packit |
b099d7 |
{ \
|
|
Packit |
b099d7 |
switch (type) { \
|
|
Packit |
b099d7 |
case XmSTRING_OPTIMIZED : \
|
|
Packit |
b099d7 |
(str) = (_XmString) \
|
|
Packit |
b099d7 |
_XmStrMalloc(sizeof(_XmStringOptRec) + \
|
|
Packit |
b099d7 |
(text_len ? (text_len - TEXT_BYTES_IN_STRUCT) : 0)); \
|
|
Packit |
b099d7 |
bzero((char*)str, sizeof(_XmStringOptRec)); \
|
|
Packit |
b099d7 |
_XmStrType(str) = type; \
|
|
Packit |
b099d7 |
_XmStrTextType(str) = XmNO_TEXT; \
|
|
Packit |
b099d7 |
_XmStrDirection(str) = XmSTRING_DIRECTION_UNSET; \
|
|
Packit |
b099d7 |
_XmStrTagIndex(str) = TAG_INDEX_UNSET; \
|
|
Packit |
b099d7 |
_XmStrRendIndex(str) = REND_INDEX_UNSET; \
|
|
Packit |
b099d7 |
_XmStrRefCountSet(str, 1); \
|
|
Packit |
b099d7 |
_XmStrByteCount(str) = text_len; \
|
|
Packit |
b099d7 |
break; \
|
|
Packit |
b099d7 |
case XmSTRING_MULTIPLE_ENTRY : \
|
|
Packit |
b099d7 |
(str) = (_XmString)_XmStrMalloc(sizeof(_XmStringMultiRec)); \
|
|
Packit |
b099d7 |
bzero((char*)str, sizeof(_XmStringMultiRec)); \
|
|
Packit |
b099d7 |
_XmStrType(str) = type; \
|
|
Packit |
b099d7 |
_XmStrRefCountSet(str, 1); \
|
|
Packit |
b099d7 |
break; \
|
|
Packit |
b099d7 |
} \
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* General XmString Entry macros */
|
|
Packit |
b099d7 |
#define _XmEntryType(entry) (((_XmStringEntry)(entry))->empty.type)
|
|
Packit |
b099d7 |
#define _XmEntryOptimized(entry) \
|
|
Packit |
b099d7 |
(_XmEntryType(entry) == XmSTRING_ENTRY_OPTIMIZED)
|
|
Packit |
b099d7 |
#define _XmEntryMultiple(entry) \
|
|
Packit |
b099d7 |
(_XmEntryType(entry) == XmSTRING_ENTRY_ARRAY)
|
|
Packit |
b099d7 |
#define _XmEntryUnoptimized(entry) \
|
|
Packit |
b099d7 |
(_XmEntryType(entry) == XmSTRING_ENTRY_UNOPTIMIZED)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Non-array entry macros */
|
|
Packit |
b099d7 |
#define _XmEntryTextTypeSet(entry, val) \
|
|
Packit |
b099d7 |
(_XmEntryOptimized(entry) ? \
|
|
Packit |
b099d7 |
(((_XmStringEntry)(entry))->single.text_type = (val)) : \
|
|
Packit |
b099d7 |
(((_XmStringEntry)(entry))->unopt_single.text_type = (val)))
|
|
Packit |
b099d7 |
#define _XmEntryTagIndex(entry) \
|
|
Packit |
b099d7 |
(((_XmStringEntry)(entry))->single.tag_index)
|
|
Packit |
b099d7 |
#define _XmUnoptSegTag(entry) \
|
|
Packit |
b099d7 |
((_XmStringUnoptSeg)(entry))->tag
|
|
Packit |
b099d7 |
#define _XmUnoptSegByteCount(entry) \
|
|
Packit |
b099d7 |
((_XmStringUnoptSeg)(entry))->byte_count
|
|
Packit |
b099d7 |
#define _XmEntryByteCountSet(entry, val) \
|
|
Packit |
b099d7 |
(_XmEntryOptimized(entry) ? \
|
|
Packit |
b099d7 |
(((_XmStringEntry)(entry))->single.byte_count = (val)) : \
|
|
Packit |
b099d7 |
(_XmUnoptSegByteCount(entry) = (val)))
|
|
Packit |
b099d7 |
#define _XmEntryCharCountSet(entry, val) \
|
|
Packit |
b099d7 |
(_XmEntryUnoptimized(entry) ? \
|
|
Packit |
b099d7 |
(((_XmStringUnoptSeg)(entry))->char_count = (val)) : \
|
|
Packit |
b099d7 |
0)
|
|
Packit |
b099d7 |
#define _XmEntryRendIndex(entry) \
|
|
Packit |
b099d7 |
(((_XmStringEntry)(entry))->single.rend_index)
|
|
Packit |
b099d7 |
#define _XmUnoptSegRendBeginCount(entry) \
|
|
Packit |
b099d7 |
((_XmStringUnoptSeg)(entry))->begin_count
|
|
Packit |
b099d7 |
#define _XmEntryRendBeginCountSet(entry, val) \
|
|
Packit |
b099d7 |
(_XmEntryOptimized(entry) ? \
|
|
Packit |
b099d7 |
(((_XmStringEntry)(entry))->single.rend_begin = (val)) : \
|
|
Packit |
b099d7 |
(_XmUnoptSegRendBeginCount(entry) = (val)))
|
|
Packit |
b099d7 |
#define _XmUnoptSegRendBegins(entry) \
|
|
Packit |
b099d7 |
((_XmStringUnoptSeg)(entry))->rend_begin_tags
|
|
Packit |
b099d7 |
#define _XmUnoptSegRendEndCount(entry) \
|
|
Packit |
b099d7 |
((_XmStringUnoptSeg)(entry))->end_count
|
|
Packit |
b099d7 |
#define _XmEntryRendEndCountSet(entry, val) \
|
|
Packit |
b099d7 |
(_XmEntryOptimized(entry) ? \
|
|
Packit |
b099d7 |
(((_XmStringEntry)(entry))->single.rend_end = (val)) : \
|
|
Packit |
b099d7 |
(_XmUnoptSegRendEndCount(entry) = (val)))
|
|
Packit |
b099d7 |
#define _XmUnoptSegRendEnds(entry) \
|
|
Packit |
b099d7 |
((_XmStringUnoptSeg)(entry))->rend_end_tags
|
|
Packit |
b099d7 |
#define _XmEntryTabsSet(entry, val) \
|
|
Packit |
b099d7 |
(_XmEntryOptimized(entry) ? \
|
|
Packit |
b099d7 |
(((_XmStringEntry)(entry))->single.tabs_before = (val)) : \
|
|
Packit |
b099d7 |
(((_XmStringEntry)(entry))->unopt_single.tabs_before = (val)))
|
|
Packit |
b099d7 |
#define _XmEntryFlippedGet(entry) \
|
|
Packit |
b099d7 |
(_XmEntryOptimized(entry) ? \
|
|
Packit |
b099d7 |
((_XmStringEntry)(entry))->single.flipped : \
|
|
Packit |
b099d7 |
((_XmStringEntry)(entry))->unopt_single.flipped)
|
|
Packit |
b099d7 |
#define _XmEntryFlippedSet(entry, val) \
|
|
Packit |
b099d7 |
(_XmEntryOptimized(entry) ? \
|
|
Packit |
b099d7 |
(((_XmStringEntry)(entry))->single.flipped = (val)) : \
|
|
Packit |
b099d7 |
(((_XmStringEntry)(entry))->unopt_single.flipped = (val)))
|
|
Packit |
b099d7 |
#define _XmEntryPermGet(entry) \
|
|
Packit |
b099d7 |
(_XmEntryOptimized(entry) ? \
|
|
Packit |
b099d7 |
((_XmStringEntry)(entry))->single.permanent : \
|
|
Packit |
b099d7 |
((_XmStringEntry)(entry))->unopt_single.permanent)
|
|
Packit |
b099d7 |
#define _XmEntryPermSet(entry, val) \
|
|
Packit |
b099d7 |
(_XmEntryOptimized(entry) ? \
|
|
Packit |
b099d7 |
(((_XmStringEntry)(entry))->single.permanent = (val)) : \
|
|
Packit |
b099d7 |
(((_XmStringEntry)(entry))->unopt_single.permanent = (val)))
|
|
Packit |
b099d7 |
#define _XmEntrySoftNewlineGet(entry) \
|
|
Packit |
b099d7 |
(_XmEntryOptimized(entry) ? \
|
|
Packit |
b099d7 |
((_XmStringEntry)(entry))->single.soft_line_break : \
|
|
Packit |
b099d7 |
(_XmEntryUnoptimized(entry) ? \
|
|
Packit |
b099d7 |
((_XmStringEntry)(entry))->unopt_single.soft_line_break : \
|
|
Packit |
b099d7 |
((_XmStringEntry)(entry))->multiple.soft_line_break))
|
|
Packit |
b099d7 |
#define _XmEntrySoftNewlineSet(entry, val) \
|
|
Packit |
b099d7 |
(_XmEntryOptimized(entry) ? \
|
|
Packit |
b099d7 |
(((_XmStringEntry)(entry))->single.soft_line_break = (val)) : \
|
|
Packit |
b099d7 |
(_XmEntryUnoptimized(entry) ? \
|
|
Packit |
b099d7 |
(((_XmStringEntry)(entry))->unopt_single.soft_line_break = (val)):\
|
|
Packit |
b099d7 |
(((_XmStringEntry)(entry))->multiple.soft_line_break = (val))))
|
|
Packit |
b099d7 |
#define _XmEntryImm(entry) \
|
|
Packit |
b099d7 |
(((_XmStringEntry)(entry))->single.immediate)
|
|
Packit |
b099d7 |
#define _XmEntryPushSet(entry, val) \
|
|
Packit |
b099d7 |
(_XmEntryUnoptimized(entry) ? \
|
|
Packit |
b099d7 |
(((_XmStringEntry)(entry))->unopt_single.push_before = (val)) : \
|
|
Packit |
b099d7 |
0)
|
|
Packit |
b099d7 |
#define _XmEntryPopSet(entry, val) \
|
|
Packit |
b099d7 |
(_XmEntryUnoptimized(entry) ? \
|
|
Packit |
b099d7 |
(((_XmStringEntry)(entry))->unopt_single.pop_after = (val)) : \
|
|
Packit |
b099d7 |
0)
|
|
Packit |
b099d7 |
#define _XmEntryMBText(entry) \
|
|
Packit |
b099d7 |
(((_XmStringOptSeg)(entry))->data.chars)
|
|
Packit |
b099d7 |
#define _XmEntryWCText(entry) \
|
|
Packit |
b099d7 |
(((_XmStringOptSeg)(entry))->data.wchars)
|
|
Packit |
b099d7 |
#define _XmEntryCacheSet(entry, val) \
|
|
Packit |
b099d7 |
(_XmEntryUnoptimized(entry) ? \
|
|
Packit |
b099d7 |
(((_XmStringUnoptSeg)(entry))->cache = (val)) : \
|
|
Packit |
b099d7 |
NULL)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Array entry specific macros */
|
|
Packit |
b099d7 |
#define _XmEntrySegmentCount(entry) \
|
|
Packit |
b099d7 |
(((_XmStringEntry)(entry))->multiple.segment_count)
|
|
Packit |
b099d7 |
#define _XmEntrySegmentCountGet(entry) \
|
|
Packit |
b099d7 |
(_XmEntryMultiple(entry) ? \
|
|
Packit |
b099d7 |
_XmEntrySegmentCount(entry) : \
|
|
Packit |
b099d7 |
1)
|
|
Packit |
b099d7 |
#define _XmEntrySegment(entry) \
|
|
Packit |
b099d7 |
(((_XmStringArraySeg)(entry))->seg)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define _XmEntrySegmentGet(entry) \
|
|
Packit |
b099d7 |
(_XmEntryMultiple(entry) ? \
|
|
Packit |
b099d7 |
_XmEntrySegment(entry) : \
|
|
Packit |
b099d7 |
(_XmStringNREntry *)&(entry))
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Creation macros */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define _XmEntryInit(entry, type) \
|
|
Packit |
b099d7 |
{ \
|
|
Packit |
b099d7 |
switch (type) { \
|
|
Packit |
b099d7 |
case XmSTRING_ENTRY_OPTIMIZED : \
|
|
Packit |
b099d7 |
bzero((char*)entry, sizeof(_XmStringOptSegRec)); \
|
|
Packit |
b099d7 |
_XmEntryTagIndex(entry) = TAG_INDEX_UNSET; \
|
|
Packit |
b099d7 |
_XmEntryRendIndex(entry) = REND_INDEX_UNSET; \
|
|
Packit |
b099d7 |
break; \
|
|
Packit |
b099d7 |
case XmSTRING_ENTRY_ARRAY : \
|
|
Packit |
b099d7 |
bzero((char*)entry, sizeof(_XmStringArraySegRec)); \
|
|
Packit |
b099d7 |
break; \
|
|
Packit |
b099d7 |
case XmSTRING_ENTRY_UNOPTIMIZED : \
|
|
Packit |
b099d7 |
bzero((char*)entry, sizeof(_XmStringUnoptSegRec)); \
|
|
Packit |
b099d7 |
break; \
|
|
Packit |
b099d7 |
} \
|
|
Packit |
b099d7 |
_XmEntryType(entry) = type; \
|
|
Packit |
b099d7 |
_XmEntryTextTypeSet(entry, XmNO_TEXT); \
|
|
Packit |
b099d7 |
if (type != XmSTRING_ENTRY_ARRAY) \
|
|
Packit |
b099d7 |
_XmEntryDirectionSet(entry, XmSTRING_DIRECTION_UNSET); \
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define _XmEntryCreate(entry, type) \
|
|
Packit |
b099d7 |
{ \
|
|
Packit |
b099d7 |
switch (type) { \
|
|
Packit |
b099d7 |
case XmSTRING_ENTRY_OPTIMIZED : \
|
|
Packit |
b099d7 |
(entry) = (_XmStringEntry)XtMalloc(sizeof(_XmStringOptSegRec)); \
|
|
Packit |
b099d7 |
bzero((char*)entry, sizeof(_XmStringOptSegRec)); \
|
|
Packit |
b099d7 |
_XmEntryTagIndex(entry) = TAG_INDEX_UNSET; \
|
|
Packit |
b099d7 |
_XmEntryRendIndex(entry) = REND_INDEX_UNSET; \
|
|
Packit |
b099d7 |
break; \
|
|
Packit |
b099d7 |
case XmSTRING_ENTRY_ARRAY : \
|
|
Packit |
b099d7 |
(entry) = (_XmStringEntry)XtMalloc(sizeof(_XmStringArraySegRec)); \
|
|
Packit |
b099d7 |
bzero((char*)entry, sizeof(_XmStringArraySegRec)); \
|
|
Packit |
b099d7 |
break; \
|
|
Packit |
b099d7 |
case XmSTRING_ENTRY_UNOPTIMIZED : \
|
|
Packit |
b099d7 |
(entry) = (_XmStringEntry)XtMalloc(sizeof(_XmStringUnoptSegRec)); \
|
|
Packit |
b099d7 |
bzero((char*)entry, sizeof(_XmStringUnoptSegRec)); \
|
|
Packit |
b099d7 |
break; \
|
|
Packit |
b099d7 |
} \
|
|
Packit |
b099d7 |
if (entry) { \
|
|
Packit |
b099d7 |
_XmEntryType(entry) = type; \
|
|
Packit |
b099d7 |
_XmEntryTextTypeSet(entry, XmNO_TEXT); \
|
|
Packit |
b099d7 |
if (type != XmSTRING_ENTRY_ARRAY) \
|
|
Packit |
b099d7 |
_XmEntryDirectionSet(entry, XmSTRING_DIRECTION_UNSET); \
|
|
Packit |
b099d7 |
} \
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define _XmCACHE_DIRTY 0
|
|
Packit |
b099d7 |
#define _XmCacheDirty(cache) (((_XmStringCache)(cache))->dirty)
|
|
Packit |
b099d7 |
#define _XmCacheNext(cache) (((_XmStringCache)(cache))->next)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define _XmEntryDirtyGet(entry, type, data) \
|
|
Packit |
b099d7 |
(((type) == _XmSCANNING_CACHE) ? \
|
|
Packit |
b099d7 |
(Boolean)(long)_XmScanningCacheGet((_XmStringNREntry)entry, \
|
|
Packit |
b099d7 |
(XmDirection)(long)data, \
|
|
Packit |
b099d7 |
_XmCACHE_DIRTY) : \
|
|
Packit |
b099d7 |
(((type) == _XmRENDERING_CACHE) ? \
|
|
Packit |
b099d7 |
(Boolean)(long)_XmRenderCacheGet((_XmStringEntry)entry, \
|
|
Packit |
b099d7 |
(XmRenderTable)(long)data, \
|
|
Packit |
b099d7 |
_XmCACHE_DIRTY) : \
|
|
Packit |
b099d7 |
True))
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define _XmEntryDirtySet(entry, type, data, val) \
|
|
Packit |
b099d7 |
(((type) == _XmSCANNING_CACHE) ? \
|
|
Packit |
b099d7 |
_XmScanningCacheSet((_XmStringNREntry)entry, \
|
|
Packit |
b099d7 |
(XmDirection)(long)data, \
|
|
Packit |
b099d7 |
_XmCACHE_DIRTY, (XtPointer)(long)val) : \
|
|
Packit |
b099d7 |
(((type) == _XmRENDERING_CACHE) ? \
|
|
Packit |
b099d7 |
_XmRenderCacheSet((_XmStringEntry)entry, \
|
|
Packit |
b099d7 |
(XmRenderTable)(long)data, \
|
|
Packit |
b099d7 |
_XmCACHE_DIRTY, (XtPointer)(long)val) : \
|
|
Packit |
b099d7 |
(void)NULL))
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Scanning cache */
|
|
Packit |
b099d7 |
#define _XmCACHE_SCAN_LEFT 1
|
|
Packit |
b099d7 |
#define _XmCACHE_SCAN_RIGHT 2
|
|
Packit |
b099d7 |
#define _XmCACHE_SCAN_LAYOUT 3
|
|
Packit |
b099d7 |
#define _XmCACHE_SCAN_DEPTH 4
|
|
Packit |
b099d7 |
#define _XmEntryLeftGet(entry, d) \
|
|
Packit |
b099d7 |
(_XmStringEntry)_XmScanningCacheGet(entry, d, _XmCACHE_SCAN_LEFT)
|
|
Packit |
b099d7 |
#define _XmEntryRightGet(entry, d) \
|
|
Packit |
b099d7 |
(_XmStringEntry)_XmScanningCacheGet(entry, d, _XmCACHE_SCAN_RIGHT)
|
|
Packit |
b099d7 |
#define _XmEntryLayoutGet(entry, d) \
|
|
Packit |
b099d7 |
(XmDirection)(long)_XmScanningCacheGet(entry, d, _XmCACHE_SCAN_LAYOUT)
|
|
Packit |
b099d7 |
#define _XmEntryLayoutDepthGet(entry, d) \
|
|
Packit |
b099d7 |
(unsigned short)(long)_XmScanningCacheGet(entry, d, _XmCACHE_SCAN_DEPTH)
|
|
Packit |
b099d7 |
#define _XmEntryLeftSet(entry, d, val) \
|
|
Packit |
b099d7 |
_XmScanningCacheSet(entry, d, _XmCACHE_SCAN_LEFT, (XtPointer)(long)val)
|
|
Packit |
b099d7 |
#define _XmEntryRightSet(entry, d, val) \
|
|
Packit |
b099d7 |
_XmScanningCacheSet(entry, d, _XmCACHE_SCAN_RIGHT, (XtPointer)(long)val)
|
|
Packit |
b099d7 |
#define _XmEntryLayoutSet(entry, d, val) \
|
|
Packit |
b099d7 |
_XmScanningCacheSet(entry, d, _XmCACHE_SCAN_LAYOUT, (XtPointer)(long)val)
|
|
Packit |
b099d7 |
#define _XmEntryLayoutDepthSet(entry, d, val) \
|
|
Packit |
b099d7 |
_XmScanningCacheSet(entry, d, _XmCACHE_SCAN_DEPTH, (XtPointer)(long)val)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Rendering cache */
|
|
Packit |
b099d7 |
#define _XmCACHE_RENDER_WIDTH 1
|
|
Packit |
b099d7 |
#define _XmCACHE_RENDER_HEIGHT 2
|
|
Packit |
b099d7 |
#define _XmCACHE_RENDER_RENDITION 3
|
|
Packit |
b099d7 |
#define _XmCACHE_RENDER_X 4
|
|
Packit |
b099d7 |
#define _XmCACHE_RENDER_Y 5
|
|
Packit |
b099d7 |
#define _XmCACHE_RENDER_BASELINE 6
|
|
Packit |
b099d7 |
#define _XmCACHE_RENDER_ASCENT 7
|
|
Packit |
b099d7 |
#define _XmCACHE_RENDER_DESCENT 8
|
|
Packit |
b099d7 |
#define _XmCACHE_RENDER_PREV_TABS 9
|
|
Packit |
b099d7 |
#define _XmEntryXGet(entry, rt) \
|
|
Packit |
b099d7 |
(long)_XmRenderCacheGet(entry, rt, _XmCACHE_RENDER_X)
|
|
Packit |
b099d7 |
#define _XmEntryYGet(entry, rt) \
|
|
Packit |
b099d7 |
(long)_XmRenderCacheGet(entry, rt, _XmCACHE_RENDER_Y)
|
|
Packit |
b099d7 |
#define _XmEntryWidthGet(entry, rt) \
|
|
Packit |
b099d7 |
(long)_XmRenderCacheGet(entry, rt, _XmCACHE_RENDER_WIDTH)
|
|
Packit |
b099d7 |
#define _XmEntryHeightGet(entry, rt) \
|
|
Packit |
b099d7 |
(long)_XmRenderCacheGet(entry, rt, _XmCACHE_RENDER_HEIGHT)
|
|
Packit |
b099d7 |
#define _XmEntryBaselineGet(entry, rt) \
|
|
Packit |
b099d7 |
(long)_XmRenderCacheGet(entry, rt, _XmCACHE_RENDER_BASELINE)
|
|
Packit |
b099d7 |
#define _XmEntryAscentGet(entry, rt) \
|
|
Packit |
b099d7 |
(long)_XmRenderCacheGet(entry, rt, _XmCACHE_RENDER_ASCENT)
|
|
Packit |
b099d7 |
#define _XmEntryDescentGet(entry, rt) \
|
|
Packit |
b099d7 |
(long)_XmRenderCacheGet(entry, rt, _XmCACHE_RENDER_DESCENT)
|
|
Packit |
b099d7 |
#define _XmEntryRenditionGet(entry, rt) \
|
|
Packit |
b099d7 |
(XmRendition)_XmRenderCacheGet(entry, rt, _XmCACHE_RENDER_RENDITION)
|
|
Packit |
b099d7 |
#define _XmEntryPrevTabsGet(entry, rt) \
|
|
Packit |
b099d7 |
(char)(long)_XmRenderCacheGet(entry, rt, _XmCACHE_RENDER_PREV_TABS)
|
|
Packit |
b099d7 |
#define _XmEntryXSet(entry, rt, val) \
|
|
Packit |
b099d7 |
_XmRenderCacheSet(entry, rt, _XmCACHE_RENDER_X, (XtPointer)(long)val)
|
|
Packit |
b099d7 |
#define _XmEntryYSet(entry, rt, val) \
|
|
Packit |
b099d7 |
_XmRenderCacheSet(entry, rt, _XmCACHE_RENDER_Y, (XtPointer)(long)val)
|
|
Packit |
b099d7 |
#define _XmEntryWidthSet(entry, rt, val) \
|
|
Packit |
b099d7 |
_XmRenderCacheSet(entry, rt, _XmCACHE_RENDER_WIDTH, (XtPointer)(long)val)
|
|
Packit |
b099d7 |
#define _XmEntryHeightSet(entry, rt, val) \
|
|
Packit |
b099d7 |
_XmRenderCacheSet(entry, rt, _XmCACHE_RENDER_HEIGHT, (XtPointer)(long)val)
|
|
Packit |
b099d7 |
#define _XmEntryBaselineSet(entry, rt, val) \
|
|
Packit |
b099d7 |
_XmRenderCacheSet(entry, rt, _XmCACHE_RENDER_BASELINE, (XtPointer)(long)val)
|
|
Packit |
b099d7 |
#define _XmEntryAscentSet(entry, rt, val) \
|
|
Packit |
b099d7 |
_XmRenderCacheSet(entry, rt, _XmCACHE_RENDER_ASCENT, (XtPointer)(long)val)
|
|
Packit |
b099d7 |
#define _XmEntryDescentSet(entry, rt, val) \
|
|
Packit |
b099d7 |
_XmRenderCacheSet(entry, rt, _XmCACHE_RENDER_DESCENT, (XtPointer)(long)val)
|
|
Packit |
b099d7 |
#define _XmEntryRenditionSet(entry, rt, val) \
|
|
Packit |
b099d7 |
_XmRenderCacheSet(entry, rt, _XmCACHE_RENDER_RENDITION, (XtPointer)(long)val)
|
|
Packit |
b099d7 |
#define _XmEntryPrevTabsSet(entry, rt, val) \
|
|
Packit |
b099d7 |
_XmRenderCacheSet(entry, rt, _XmCACHE_RENDER_PREV_TABS, (XtPointer)(long)val)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Macros for old non-optimized segment data structure access
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define _XmSegTag(seg) _XmUnoptSegTag(seg)
|
|
Packit |
b099d7 |
#define _XmSegCharCount(seg) _XmUnoptSegByteCount(seg)
|
|
Packit |
b099d7 |
#define _XmSegText(seg) ((_XmStringUnoptSeg)(seg))->data.text
|
|
Packit |
b099d7 |
#define _XmSegDirection(seg) _XmEntryDirectionGet(seg)
|
|
Packit |
b099d7 |
#define _XmSegLayoutDirection(seg) _XmEntryPushGet(seg)
|
|
Packit |
b099d7 |
#define _XmSegLayout(seg) _XmEntryPopGet(seg)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define _XmSegType(seg) _XmEntryTextTypeGet(seg)
|
|
Packit |
b099d7 |
#define _XmSegTextGet(seg) (unsigned char *)_XmSegText(seg)
|
|
Packit |
b099d7 |
#define _XmSegTextSet(seg,val) _XmEntryTextSet(seg, (XtPointer)(val))
|
|
Packit |
b099d7 |
#define _XmSegMBTextGet(seg) _XmEntryMBText(seg)
|
|
Packit |
b099d7 |
#define _XmSegWCTextGet(seg) _XmEntryWCText(seg)
|
|
Packit |
b099d7 |
#define _XmSegTab(seg) _XmEntryTabsGet(seg)
|
|
Packit |
b099d7 |
#define _XmSegLeft(seg) ((_XmStringUnoptSeg)seg)->cache
|
|
Packit |
b099d7 |
#define _XmSegRight(seg) ((_XmStringUnoptSeg)seg)->cache
|
|
Packit |
b099d7 |
#define _XmSegRendBegins(seg) _XmUnoptSegRendBegins(seg)
|
|
Packit |
b099d7 |
#define _XmSegRendBeginGet(seg,n) _XmEntryRendBeginGet(seg,n)
|
|
Packit |
b099d7 |
#define _XmSegRendBeginCount(seg) _XmUnoptSegRendBeginCount(seg)
|
|
Packit |
b099d7 |
#define _XmSegRendEnds(seg) _XmUnoptSegRendEnds(seg)
|
|
Packit |
b099d7 |
#define _XmSegRendEndGet(seg,n) _XmEntryRendEndGet(seg,n)
|
|
Packit |
b099d7 |
#define _XmSegRendEndCount(seg) _XmUnoptSegRendEndCount(seg)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Macros for line data structure access
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define _XmStrLineSegCount(line) _XmEntrySegmentCount(line)
|
|
Packit |
b099d7 |
#define _XmStrLineSegment(line) \
|
|
Packit |
b099d7 |
((_XmStringSegment *)_XmEntrySegment(line))
|
|
Packit |
b099d7 |
#define _XmStrLineSegmentSet(line, val) _XmEntrySegment(line) = \
|
|
Packit |
b099d7 |
(_XmStringNREntry *)(val)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Macros for internal string data structure access
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define _XmStrLineCnt(str) _XmStrEntryCount(str)
|
|
Packit |
b099d7 |
#define _XmStrLineLine(str) ((_XmStringLine *)_XmStrEntry(str))
|
|
Packit |
b099d7 |
#define _XmStrLineLineSet(str, val) _XmStrEntry(str) = \
|
|
Packit |
b099d7 |
(_XmStringEntry *)(val)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/****************************************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Function headers
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
****************************************************************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/**** Private Defines, Typedefs, and Function Declarations for XmString.c ****/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
extern XFontStruct * _XmGetFirstFont(
|
|
Packit |
b099d7 |
XmFontListEntry entry) ;
|
|
Packit |
b099d7 |
extern Boolean _XmFontListSearch(
|
|
Packit |
b099d7 |
XmFontList fontlist,
|
|
Packit |
b099d7 |
XmStringCharSet charset,
|
|
Packit |
b099d7 |
short *indx,
|
|
Packit |
b099d7 |
XFontStruct **font_struct) ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
extern int _XmStringIndexCacheTag(
|
|
Packit |
b099d7 |
XmStringTag tag,
|
|
Packit |
b099d7 |
int length) ;
|
|
Packit |
b099d7 |
extern XmStringTag _XmStringCacheTag(
|
|
Packit |
b099d7 |
XmStringTag tag,
|
|
Packit |
b099d7 |
int length) ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
extern Boolean _XmStringInitContext(
|
|
Packit |
b099d7 |
_XmStringContext *context,
|
|
Packit |
b099d7 |
_XmString string) ;
|
|
Packit |
b099d7 |
extern Boolean _XmStringGetNextSegment(
|
|
Packit |
b099d7 |
_XmStringContext context,
|
|
Packit |
b099d7 |
XmStringCharSet *charset,
|
|
Packit |
b099d7 |
XmStringDirection *direction,
|
|
Packit |
b099d7 |
char **text,
|
|
Packit |
b099d7 |
short *char_count,
|
|
Packit |
b099d7 |
Boolean *separator) ;
|
|
Packit |
b099d7 |
extern void _XmStringFreeContext(
|
|
Packit |
b099d7 |
_XmStringContext context) ;
|
|
Packit |
b099d7 |
extern Dimension _XmStringWidth(
|
|
Packit |
b099d7 |
XmFontList fontlist,
|
|
Packit |
b099d7 |
_XmString string) ;
|
|
Packit |
b099d7 |
extern Dimension _XmStringHeight(
|
|
Packit |
b099d7 |
XmFontList fontlist,
|
|
Packit |
b099d7 |
_XmString string) ;
|
|
Packit |
b099d7 |
extern void _XmStringExtent(
|
|
Packit |
b099d7 |
XmFontList fontlist,
|
|
Packit |
b099d7 |
_XmString string,
|
|
Packit |
b099d7 |
Dimension *width,
|
|
Packit |
b099d7 |
Dimension *height) ;
|
|
Packit |
b099d7 |
extern Boolean _XmStringEmpty(
|
|
Packit |
b099d7 |
_XmString string) ;
|
|
Packit |
b099d7 |
extern void _XmStringDraw(
|
|
Packit |
b099d7 |
Display *d,
|
|
Packit |
b099d7 |
Window w,
|
|
Packit |
b099d7 |
XmFontList fontlist,
|
|
Packit |
b099d7 |
_XmString string,
|
|
Packit |
b099d7 |
GC gc,
|
|
Packit |
b099d7 |
#if NeedWidePrototypes
|
|
Packit |
b099d7 |
int x,
|
|
Packit |
b099d7 |
int y,
|
|
Packit |
b099d7 |
int width,
|
|
Packit |
b099d7 |
unsigned int align,
|
|
Packit |
b099d7 |
unsigned int lay_dir,
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
Position x,
|
|
Packit |
b099d7 |
Position y,
|
|
Packit |
b099d7 |
Dimension width,
|
|
Packit |
b099d7 |
unsigned char align,
|
|
Packit |
b099d7 |
unsigned char lay_dir,
|
|
Packit |
b099d7 |
#endif /* NeedWidePrototypes */
|
|
Packit |
b099d7 |
XRectangle *clip) ;
|
|
Packit |
b099d7 |
extern void _XmStringDrawImage(
|
|
Packit |
b099d7 |
Display *d,
|
|
Packit |
b099d7 |
Window w,
|
|
Packit |
b099d7 |
XmFontList fontlist,
|
|
Packit |
b099d7 |
_XmString string,
|
|
Packit |
b099d7 |
GC gc,
|
|
Packit |
b099d7 |
#if NeedWidePrototypes
|
|
Packit |
b099d7 |
int x,
|
|
Packit |
b099d7 |
int y,
|
|
Packit |
b099d7 |
int width,
|
|
Packit |
b099d7 |
unsigned int align,
|
|
Packit |
b099d7 |
unsigned int lay_dir,
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
Position x,
|
|
Packit |
b099d7 |
Position y,
|
|
Packit |
b099d7 |
Dimension width,
|
|
Packit |
b099d7 |
unsigned char align,
|
|
Packit |
b099d7 |
unsigned char lay_dir,
|
|
Packit |
b099d7 |
#endif /* NeedWidePrototypes */
|
|
Packit |
b099d7 |
XRectangle *clip) ;
|
|
Packit |
b099d7 |
extern void _XmStringDrawUnderline(
|
|
Packit |
b099d7 |
Display *d,
|
|
Packit |
b099d7 |
Window w,
|
|
Packit |
b099d7 |
XmFontList f,
|
|
Packit |
b099d7 |
_XmString s,
|
|
Packit |
b099d7 |
GC gc,
|
|
Packit |
b099d7 |
#if NeedWidePrototypes
|
|
Packit |
b099d7 |
int x,
|
|
Packit |
b099d7 |
int y,
|
|
Packit |
b099d7 |
int width,
|
|
Packit |
b099d7 |
unsigned int align,
|
|
Packit |
b099d7 |
unsigned int lay_dir,
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
Position x,
|
|
Packit |
b099d7 |
Position y,
|
|
Packit |
b099d7 |
Dimension width,
|
|
Packit |
b099d7 |
unsigned char align,
|
|
Packit |
b099d7 |
unsigned char lay_dir,
|
|
Packit |
b099d7 |
#endif /* NeedWidePrototypes */
|
|
Packit |
b099d7 |
XRectangle *clip,
|
|
Packit |
b099d7 |
_XmString u) ;
|
|
Packit |
b099d7 |
extern void _XmStringDrawMnemonic(
|
|
Packit |
b099d7 |
Display *d,
|
|
Packit |
b099d7 |
Window w,
|
|
Packit |
b099d7 |
XmFontList fontlist,
|
|
Packit |
b099d7 |
_XmString string,
|
|
Packit |
b099d7 |
GC gc,
|
|
Packit |
b099d7 |
#if NeedWidePrototypes
|
|
Packit |
b099d7 |
int x,
|
|
Packit |
b099d7 |
int y,
|
|
Packit |
b099d7 |
int width,
|
|
Packit |
b099d7 |
unsigned int align,
|
|
Packit |
b099d7 |
unsigned int lay_dir,
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
Position x,
|
|
Packit |
b099d7 |
Position y,
|
|
Packit |
b099d7 |
Dimension width,
|
|
Packit |
b099d7 |
unsigned char align,
|
|
Packit |
b099d7 |
unsigned char lay_dir,
|
|
Packit |
b099d7 |
#endif /* NeedWidePrototypes */
|
|
Packit |
b099d7 |
XRectangle *clip,
|
|
Packit |
b099d7 |
String mnemonic,
|
|
Packit |
b099d7 |
XmStringCharSet charset) ;
|
|
Packit |
b099d7 |
extern void _XmStringRender(Display *d,
|
|
Packit |
b099d7 |
Drawable w,
|
|
Packit |
b099d7 |
XmRenderTable rendertable,
|
|
Packit |
b099d7 |
XmRendition rend,
|
|
Packit |
b099d7 |
_XmString string,
|
|
Packit |
b099d7 |
#if NeedWidePrototypes
|
|
Packit |
b099d7 |
int x,
|
|
Packit |
b099d7 |
int y,
|
|
Packit |
b099d7 |
int width,
|
|
Packit |
b099d7 |
unsigned int align,
|
|
Packit |
b099d7 |
unsigned int lay_dir
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
Position x,
|
|
Packit |
b099d7 |
Position y,
|
|
Packit |
b099d7 |
Dimension width,
|
|
Packit |
b099d7 |
unsigned char align,
|
|
Packit |
b099d7 |
unsigned char lay_dir
|
|
Packit |
b099d7 |
#endif /* NeedWidePrototypes */
|
|
Packit |
b099d7 |
) ;
|
|
Packit |
b099d7 |
extern _XmString _XmStringCreate(
|
|
Packit |
b099d7 |
XmString cs) ;
|
|
Packit |
b099d7 |
extern void _XmStringFree(
|
|
Packit |
b099d7 |
_XmString string) ;
|
|
Packit |
b099d7 |
extern char * _XmStringGetCurrentCharset( void ) ;
|
|
Packit |
b099d7 |
extern char * _XmCharsetCanonicalize(
|
|
Packit |
b099d7 |
String charset) ;
|
|
Packit |
b099d7 |
extern _XmString _XmStringCopy(
|
|
Packit |
b099d7 |
_XmString string) ;
|
|
Packit |
b099d7 |
extern Boolean _XmStringByteCompare(
|
|
Packit |
b099d7 |
_XmString a,
|
|
Packit |
b099d7 |
_XmString b) ;
|
|
Packit |
b099d7 |
extern Boolean _XmStringHasSubstring(
|
|
Packit |
b099d7 |
_XmString string,
|
|
Packit |
b099d7 |
_XmString substring) ;
|
|
Packit |
b099d7 |
extern XmString _XmStringCreateExternal(
|
|
Packit |
b099d7 |
XmFontList fontlist,
|
|
Packit |
b099d7 |
_XmString cs) ;
|
|
Packit |
b099d7 |
extern Dimension _XmStringBaseline(
|
|
Packit |
b099d7 |
XmFontList fontlist,
|
|
Packit |
b099d7 |
_XmString string) ;
|
|
Packit |
b099d7 |
extern void _XmStringGetBaselines(XmRenderTable rendertable,
|
|
Packit |
b099d7 |
_XmString string,
|
|
Packit |
b099d7 |
Dimension **baselines,
|
|
Packit |
b099d7 |
Cardinal *line_count);
|
|
Packit |
b099d7 |
extern int _XmStringLineCount(
|
|
Packit |
b099d7 |
_XmString string) ;
|
|
Packit |
b099d7 |
extern char * _XmStringGetTextConcat(
|
|
Packit |
b099d7 |
XmString string) ;
|
|
Packit |
b099d7 |
extern Boolean _XmStringIsCurrentCharset(
|
|
Packit |
b099d7 |
XmStringCharSet c) ;
|
|
Packit |
b099d7 |
extern Boolean _XmStringSingleSegment(
|
|
Packit |
b099d7 |
XmString str,
|
|
Packit |
b099d7 |
char **pTextOut,
|
|
Packit |
b099d7 |
XmStringCharSet *pCharsetOut ) ;
|
|
Packit |
b099d7 |
extern NextTabResult _XmStringGetNextTabWidth(XmStringContext ctx,
|
|
Packit |
b099d7 |
Widget widget,
|
|
Packit |
b099d7 |
unsigned char units,
|
|
Packit |
b099d7 |
XmRenderTable rt,
|
|
Packit |
b099d7 |
float *width,
|
|
Packit |
b099d7 |
XmRendition *rend);
|
|
Packit |
b099d7 |
extern XtPointer _XmStringUngenerate (XmString string,
|
|
Packit |
b099d7 |
XmStringTag tag,
|
|
Packit |
b099d7 |
XmTextType tag_type,
|
|
Packit |
b099d7 |
XmTextType output_type);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
extern void _XmStringDrawSegment(Display *d,
|
|
Packit |
b099d7 |
Drawable w,
|
|
Packit |
b099d7 |
#if NeedWidePrototypes
|
|
Packit |
b099d7 |
int x,
|
|
Packit |
b099d7 |
int y,
|
|
Packit |
b099d7 |
int width,
|
|
Packit |
b099d7 |
int height,
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
Position x,
|
|
Packit |
b099d7 |
Position y,
|
|
Packit |
b099d7 |
Dimension width,
|
|
Packit |
b099d7 |
Dimension height,
|
|
Packit |
b099d7 |
#endif /* NeedWidePrototypes */
|
|
Packit |
b099d7 |
_XmStringNREntry seg,
|
|
Packit |
b099d7 |
XmRendition rend,
|
|
Packit |
b099d7 |
XmRenderTable rendertable,
|
|
Packit |
b099d7 |
#if NeedWidePrototypes
|
|
Packit |
b099d7 |
int image,
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
Boolean image,
|
|
Packit |
b099d7 |
#endif /* NeedWidePrototypes */
|
|
Packit |
b099d7 |
XmString *underline,
|
|
Packit |
b099d7 |
#if NeedWidePrototypes
|
|
Packit |
b099d7 |
unsigned int descender
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
Dimension descender
|
|
Packit |
b099d7 |
#endif /* NeedWidePrototypes */
|
|
Packit |
b099d7 |
);
|
|
Packit |
b099d7 |
extern void _XmStringDrawLining(Display *d,
|
|
Packit |
b099d7 |
Drawable w,
|
|
Packit |
b099d7 |
Position x,
|
|
Packit |
b099d7 |
Position y,
|
|
Packit |
b099d7 |
Dimension width,
|
|
Packit |
b099d7 |
Dimension height,
|
|
Packit |
b099d7 |
Dimension descender,
|
|
Packit |
b099d7 |
XmRendition rend,
|
|
Packit |
b099d7 |
Pixel select_color,
|
|
Packit |
b099d7 |
XmHighlightMode mode,
|
|
Packit |
b099d7 |
Boolean colors_set);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
extern Boolean _XmStringSegmentExtents(_XmStringEntry entry,
|
|
Packit |
b099d7 |
XmRenderTable rendertable,
|
|
Packit |
b099d7 |
XmRendition *rend_in_out,
|
|
Packit |
b099d7 |
XmRendition base,
|
|
Packit |
b099d7 |
Dimension *width,
|
|
Packit |
b099d7 |
Dimension *height,
|
|
Packit |
b099d7 |
Dimension *ascent,
|
|
Packit |
b099d7 |
Dimension *descent);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
extern void _XmStringLayout(_XmString string,
|
|
Packit |
b099d7 |
#if NeedWidePrototypes
|
|
Packit |
b099d7 |
int direction
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
XmDirection direction
|
|
Packit |
b099d7 |
#endif /* NeedWidePrototypes */
|
|
Packit |
b099d7 |
);
|
|
Packit |
b099d7 |
extern _XmString _XmStringOptToNonOpt(_XmStringOpt string);
|
|
Packit |
b099d7 |
extern XmString _XmStringCvtOptToMulti(XmString str);
|
|
Packit |
b099d7 |
extern XmString _XmStringOptimize(XmString str);
|
|
Packit |
b099d7 |
extern XmString _XmStringMakeXmString(_XmStringEntry **entries,
|
|
Packit |
b099d7 |
int count);
|
|
Packit |
b099d7 |
extern void _XmStringEntryFree(_XmStringEntry entry);
|
|
Packit |
b099d7 |
extern _XmStringEntry _XmStringEntryCopy(_XmStringEntry entry);
|
|
Packit |
b099d7 |
extern unsigned char _XmStringCharacterCount(XtPointer text,
|
|
Packit |
b099d7 |
XmTextType text_type,
|
|
Packit |
b099d7 |
int byte_count,
|
|
Packit |
b099d7 |
XFontStruct *font);
|
|
Packit |
b099d7 |
extern unsigned char _XmEntryCharCountGet(_XmStringEntry entry,
|
|
Packit |
b099d7 |
XmRenderTable rt);
|
|
Packit |
b099d7 |
extern _XmStringCache _XmStringCacheGet(_XmStringCache caches,
|
|
Packit |
b099d7 |
int type);
|
|
Packit |
b099d7 |
extern void _XmStringCacheFree(_XmStringCache caches);
|
|
Packit |
b099d7 |
extern XtPointer _XmScanningCacheGet(_XmStringNREntry entry,
|
|
Packit |
b099d7 |
#if NeedWidePrototypes
|
|
Packit |
b099d7 |
int d,
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
XmDirection d,
|
|
Packit |
b099d7 |
#endif /* NeedWidePrototypes */
|
|
Packit |
b099d7 |
int field);
|
|
Packit |
b099d7 |
extern void _XmScanningCacheSet(_XmStringNREntry entry,
|
|
Packit |
b099d7 |
#if NeedWidePrototypes
|
|
Packit |
b099d7 |
int d,
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
XmDirection d,
|
|
Packit |
b099d7 |
#endif /* NeedWidePrototypes */
|
|
Packit |
b099d7 |
int field,
|
|
Packit |
b099d7 |
XtPointer value);
|
|
Packit |
b099d7 |
/* Rendering cache */
|
|
Packit |
b099d7 |
extern XtPointer _XmRenderCacheGet(_XmStringEntry entry,
|
|
Packit |
b099d7 |
XmRenderTable rt,
|
|
Packit |
b099d7 |
int field);
|
|
Packit |
b099d7 |
extern void _XmRenderCacheSet(_XmStringEntry entry,
|
|
Packit |
b099d7 |
XmRenderTable rt,
|
|
Packit |
b099d7 |
int field,
|
|
Packit |
b099d7 |
XtPointer value);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
extern XmStringTag _XmStringIndexGetTag(int index);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
extern Boolean _XmStringGetSegment(_XmStringContext context,
|
|
Packit |
b099d7 |
Boolean update_context,
|
|
Packit |
b099d7 |
Boolean copy_data,
|
|
Packit |
b099d7 |
XtPointer *text,
|
|
Packit |
b099d7 |
XmStringTag *tag,
|
|
Packit |
b099d7 |
XmTextType *type,
|
|
Packit |
b099d7 |
XmStringTag **rendition_tags,
|
|
Packit |
b099d7 |
unsigned int *tag_count,
|
|
Packit |
b099d7 |
XmStringDirection *direction,
|
|
Packit |
b099d7 |
Boolean *separator,
|
|
Packit |
b099d7 |
unsigned char *tabs,
|
|
Packit |
b099d7 |
short *char_count,
|
|
Packit |
b099d7 |
XmDirection *push_before,
|
|
Packit |
b099d7 |
Boolean *pop_after);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Declarations for macro to function switchover. */
|
|
Packit |
b099d7 |
extern _XmStringCache _XmEntryCacheGet(_XmStringEntry entry);
|
|
Packit |
b099d7 |
extern XmStringTag _XmEntryTag(_XmStringEntry entry);
|
|
Packit |
b099d7 |
extern void _XmEntryTagSet(_XmStringEntry entry, XmStringTag tag);
|
|
Packit |
b099d7 |
extern XtPointer _XmEntryTextGet(_XmStringEntry entry);
|
|
Packit |
b099d7 |
extern XmDirection _XmEntryPushGet(_XmStringEntry entry);
|
|
Packit |
b099d7 |
extern Boolean _XmEntryPopGet(_XmStringEntry entry);
|
|
Packit |
b099d7 |
extern unsigned int _XmEntryByteCountGet(_XmStringEntry entry);
|
|
Packit |
b099d7 |
extern unsigned int _XmEntryDirectionGet(_XmStringEntry entry);
|
|
Packit |
b099d7 |
extern void _XmEntryDirectionSet(_XmStringEntry entry, XmDirection val);
|
|
Packit |
b099d7 |
extern unsigned char _XmEntryRendEndCountGet(_XmStringEntry entry);
|
|
Packit |
b099d7 |
extern unsigned char _XmEntryRendBeginCountGet(_XmStringEntry entry);
|
|
Packit |
b099d7 |
extern XmStringTag _XmEntryRendEndGet(_XmStringEntry entry,
|
|
Packit |
b099d7 |
int n);
|
|
Packit |
b099d7 |
extern XmStringTag _XmEntryRendBeginGet(_XmStringEntry entry,
|
|
Packit |
b099d7 |
int n);
|
|
Packit |
b099d7 |
extern void _XmEntryRendEndSet(_XmStringEntry entry,
|
|
Packit |
b099d7 |
XmStringTag tag,
|
|
Packit |
b099d7 |
int n);
|
|
Packit |
b099d7 |
extern void _XmEntryRendBeginSet(_XmStringEntry entry,
|
|
Packit |
b099d7 |
XmStringTag tag,
|
|
Packit |
b099d7 |
int n);
|
|
Packit |
b099d7 |
extern unsigned char _XmEntryTabsGet(_XmStringEntry entry);
|
|
Packit |
b099d7 |
extern unsigned int _XmEntryTextTypeGet(_XmStringEntry entry);
|
|
Packit |
b099d7 |
extern void _XmEntryTextSet(_XmStringEntry entry, XtPointer val);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
extern unsigned char *_XmStringTruncateASN1(unsigned char *str, int n);
|
|
Packit |
b099d7 |
extern void _XmStringContextCopy(_XmStringContext target,
|
|
Packit |
b099d7 |
_XmStringContext source);
|
|
Packit |
b099d7 |
extern void _XmStringContextFree(_XmStringContext target);
|
|
Packit |
b099d7 |
extern XmString _XmStringNCreate(char *text, XmStringTag tag, int len);
|
|
Packit |
b099d7 |
extern void _XmStringSegmentNew(_XmString string,
|
|
Packit |
b099d7 |
int line_index,
|
|
Packit |
b099d7 |
_XmStringEntry value,
|
|
Packit |
b099d7 |
int copy) ;
|
|
Packit |
b099d7 |
extern void _XmStringContextReInit(_XmStringContext context,
|
|
Packit |
b099d7 |
_XmString string);
|
|
Packit |
b099d7 |
extern int _XmConvertFactor(unsigned char units,
|
|
Packit |
b099d7 |
float *factor);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#ifdef _XmDEBUG_XMSTRING
|
|
Packit |
b099d7 |
extern void _Xm_dump_fontlist(XmFontList f) ;
|
|
Packit |
b099d7 |
extern void _Xm_dump_fontlist_cache( void ) ;
|
|
Packit |
b099d7 |
extern void _Xm_dump_stream( unsigned char *cs) ;
|
|
Packit |
b099d7 |
extern void _Xm_dump_internal(_XmString string) ;
|
|
Packit |
b099d7 |
#endif /* _XmDEBUG_XMSTRING */
|
|
Packit |
b099d7 |
/******** End Private Function Declarations ********/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#ifdef __cplusplus
|
|
Packit |
b099d7 |
} /* Close scope of 'extern "C"' declaration which encloses file. */
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#endif /* _XmStringI_h */
|
|
Packit |
b099d7 |
/* DON'T ADD ANYTHING AFTER THIS #endif */
|