#ifndef _XawTextP_h
#define _XawTextP_h
#include <X11/Xfuncproto.h>
#include <X11/Xaw/Text.h>
#include <X11/Xaw/SimpleP.h>
_XFUNCPROTOBEGIN
#define MAXCUT 30000
#define XawTextGetLastPosition(ctx) \
XawTextSourceScan((ctx)->text.source, 0, \
XawstAll, XawsdRight, 1, True)
#define GETLASTPOS XawTextGetLastPosition(ctx)
#define zeroPosition ((XawTextPosition)0)
extern XtActionsRec _XawTextActionsTable[];
extern Cardinal _XawTextActionsTableCount;
extern char _XawDefaultTextTranslations[];
#define XawLF 0x0a
#define XawCR 0x0d
#define XawTAB 0x09
#define XawBS 0x08
#define XawSP 0x20
#define XawDEL 0x7f
#define XawESC 0x1b
#define XawBSLASH '\\'
#define DEFAULT_TEXT_HEIGHT ((Dimension)~0)
#define DEFAULT_TAB_SIZE 8
typedef struct {
XawTextPosition position;
Position y;
#ifndef OLDXAW
unsigned int textWidth;
#else
Dimension textWidth;
#endif
} XawTextLineTableEntry, *XawTextLineTableEntryPtr;
typedef struct {
XawTextPosition left, right;
XawTextSelectType type;
Atom *selections;
int atom_count;
int array_size;
} XawTextSelection;
typedef struct _XawTextSelectionSalt {
struct _XawTextSelectionSalt *next;
XawTextSelection s;
char *contents;
int length;
} XawTextSelectionSalt;
#ifndef OLDXAW
typedef struct _XawTextKillRing {
struct _XawTextKillRing *next;
char *contents;
int length;
unsigned refcount;
unsigned long format;
} XawTextKillRing;
extern XawTextKillRing *xaw_text_kill_ring;
#endif
typedef struct {
XawTextPosition top;
int lines;
#ifndef OLDXAW
int base_line;
#endif
XawTextLineTableEntry *info;
} XawTextLineTable, *XawTextLineTablePtr;
typedef struct _XawTextMargin {
Position left, right, top, bottom;
} XawTextMargin;
typedef struct _XmuScanline XmuTextUpdate;
#define VMargins(ctx) ((ctx)->text.margin.top + (ctx)->text.margin.bottom)
#define HMargins(ctx) ((ctx)->text.left_margin + (ctx)->text.margin.right)
#define RVMargins(ctx) ((ctx)->text.r_margin.top + (ctx)->text.r_margin.bottom)
#define RHMargins(ctx) ((ctx)->text.r_margin.left + (ctx)->text.r_margin.right)
#define IsPositionVisible(ctx, pos) \
(pos >= ctx->text.lt.info[0].position && \
pos < ctx->text.lt.info[ctx->text.lt.lines].position)
struct SearchAndReplace {
Boolean selection_changed;
Widget search_popup;
Widget label1;
Widget label2;
Widget left_toggle;
Widget right_toggle;
Widget rep_label;
Widget rep_text;
Widget search_text;
Widget rep_one;
Widget rep_all;
#ifndef OLDXAW
Widget case_sensitive;
#endif
};
typedef struct {
XtPointer extension;
} TextClassPart;
typedef struct _TextClassRec {
CoreClassPart core_class;
SimpleClassPart simple_class;
TextClassPart text_class;
} TextClassRec;
extern TextClassRec textClassRec;
typedef struct _TextPart {
Widget source, sink;
XawTextPosition insertPos;
XawTextSelection s;
XawTextSelectType *sarray;
XawTextSelectionSalt *salt;
int left_margin;
int dialog_horiz_offset, dialog_vert_offset;
Boolean display_caret;
Boolean auto_fill;
XawTextScrollMode scroll_vert, scroll_horiz;
XawTextWrapMode wrap;
XawTextResizeMode resize;
XawTextMargin r_margin;
#ifndef OLDXAW
XtCallbackList position_callbacks;
#else
XtPointer pad1;
#endif
XawTextMargin margin;
XawTextLineTable lt;
XawTextScanDirection extendDir;
XawTextSelection origSel;
Time lasttime;
Time time;
Position ev_x, ev_y;
Widget vbar, hbar;
struct SearchAndReplace *search;
Widget file_insert;
XmuTextUpdate *update;
#ifndef OLDXAW
int line_number;
short column_number;
unsigned char kill_ring;
Boolean selection_state;
#else
XtPointer pad2;
int pad3;
#endif
int from_left;
XawTextPosition lastPos;
GC gc;
Boolean showposition;
Boolean hasfocus;
Boolean update_disabled;
Boolean clear_to_eol;
XawTextPosition old_insert;
short mult;
#ifndef OLDXAW
XawTextKillRing *kill_ring_ptr;
#else
XtPointer pad4;
#endif
Boolean redisplay_needed;
XawTextSelectionSalt *salt2;
#ifndef OLDXAW
char numeric;
char source_changed;
Boolean overwrite;
short left_column, right_column;
XawTextJustifyMode justify;
XtPointer pad[4];
#endif
} TextPart;
#define XtRWrapMode "WrapMode"
#define XtRScrollMode "ScrollMode"
#define XtRResizeMode "ResizeMode"
#define XtRJustifyMode "JustifyMode"
typedef struct _TextRec {
CorePart core;
SimplePart simple;
TextPart text;
} TextRec;
void _XawTextBuildLineTable
(
TextWidget ctx,
XawTextPosition top_pos,
_XtBoolean force_rebuild
);
char *_XawTextGetSTRING
(
TextWidget ctx,
XawTextPosition left,
XawTextPosition right
);
void _XawTextSaltAwaySelection
(
TextWidget ctx,
Atom *selections,
int num_atoms
);
void _XawTextPosToXY
(
Widget w,
XawTextPosition pos,
Position *x,
Position *y
);
void _XawTextNeedsUpdating
(
TextWidget ctx,
XawTextPosition left,
XawTextPosition right
);
_XFUNCPROTOEND
#endif