diff options
Diffstat (limited to 'include/X11/Xaw/TextP.h')
-rw-r--r-- | include/X11/Xaw/TextP.h | 339 |
1 files changed, 186 insertions, 153 deletions
diff --git a/include/X11/Xaw/TextP.h b/include/X11/Xaw/TextP.h index f679db1..cf11b85 100644 --- a/include/X11/Xaw/TextP.h +++ b/include/X11/Xaw/TextP.h @@ -49,117 +49,135 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************/ +/* $XFree86: xc/lib/Xaw/TextP.h,v 3.22 2001/12/19 21:37:31 dawes Exp $ */ #ifndef _XawTextP_h #define _XawTextP_h +#include <X11/Xfuncproto.h> + #include <X11/Xaw/Text.h> #include <X11/Xaw/SimpleP.h> -/**************************************************************** - * - * Text widget private - * - ****************************************************************/ -#define MAXCUT 30000 /* Maximum number of characters that can be cut. */ +_XFUNCPROTOBEGIN + +#define MAXCUT 30000 /* Maximum number of characters that can be cut */ -#define GETLASTPOS XawTextSourceScan(ctx->text.source, 0, \ - XawstAll, XawsdRight, 1, TRUE) +#define XawTextGetLastPosition(ctx) \ + XawTextSourceScan((ctx)->text.source, 0, \ + XawstAll, XawsdRight, 1, True) +#define GETLASTPOS XawTextGetLastPosition(ctx) -#define zeroPosition ((XawTextPosition) 0) +#define zeroPosition ((XawTextPosition)0) extern XtActionsRec _XawTextActionsTable[]; extern Cardinal _XawTextActionsTableCount; -#define XawLF 0x0a -#define XawCR 0x0d -#define XawTAB 0x09 -#define XawBS 0x08 -#define XawSP 0x20 -#define XawDEL 0x7f -#define XawESC 0x1b +#define XawLF 0x0a +#define XawCR 0x0d +#define XawTAB 0x09 +#define XawBS 0x08 +#define XawSP 0x20 +#define XawDEL 0x7f +#define XawESC 0x1b #define XawBSLASH '\\' /* constants that subclasses may want to know */ #define DEFAULT_TEXT_HEIGHT ((Dimension)~0) +#define DEFAULT_TAB_SIZE 8 /* displayable text management data structures */ - typedef struct { - XawTextPosition position; - Position y; - Dimension textWidth; + XawTextPosition position; + Position y; +#ifndef OLDXAW + unsigned int textWidth; +#else + Dimension textWidth; +#endif } XawTextLineTableEntry, *XawTextLineTableEntryPtr; typedef struct { - XawTextPosition left, right; + XawTextPosition left, right; XawTextSelectType type; - Atom* selections; - int atom_count; - int array_size; + Atom *selections; + int atom_count; + int array_size; } XawTextSelection; typedef struct _XawTextSelectionSalt { - struct _XawTextSelectionSalt *next; + struct _XawTextSelectionSalt *next; XawTextSelection s; /* * The element "contents" stores the CT string which is gotten in the - * function _XawTextSaltAwaySelection(). + * function _XawTextSaltAwaySelection() */ 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 + /* Line Tables are n+1 long - last position displayed is in last lt entry */ typedef struct { - XawTextPosition top; /* Top of the displayed text. */ - int lines; /* How many lines in this table. */ - XawTextLineTableEntry *info; /* A dynamic array, one entry per line */ + XawTextPosition top; /* Top of the displayed text */ + int lines; /* How many lines in this table */ +#ifndef OLDXAW + int base_line; /* line number of first entry */ +#endif + XawTextLineTableEntry *info; /* A dynamic array, one entry per line */ } XawTextLineTable, *XawTextLineTablePtr; - typedef struct _XawTextMargin { - Position left, right, top, bottom; + Position left, right, top, bottom; } XawTextMargin; -#define VMargins(ctx) ( (ctx)->text.margin.top + (ctx)->text.margin.bottom ) -#define HMargins(ctx) ( (ctx)->text.margin.left + (ctx)->text.margin.right ) +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[0].position && \ pos < ctx->text.lt.info[ctx->text.lt.lines].position) /* - * Search & Replace data structure. + * Search & Replace data structure */ - struct SearchAndReplace { - Boolean selection_changed; /* flag so that the selection cannot be + Boolean selection_changed; /* flag so that the selection cannot be changed out from underneath query-replace.*/ - Widget search_popup; /* The poppup widget that allows searches.*/ - Widget label1; /* The label widgets for the search window. */ - Widget label2; - Widget left_toggle; /* The left search toggle radioGroup. */ - Widget right_toggle; /* The right search toggle radioGroup. */ - Widget rep_label; /* The Replace label string. */ - Widget rep_text; /* The Replace text field. */ - Widget search_text; /* The Search text field. */ - Widget rep_one; /* The Replace one button. */ - Widget rep_all; /* The Replace all button. */ + Widget search_popup; /* The poppup widget that allows searches.*/ + Widget label1; /* The label widgets for the search window. */ + Widget label2; + Widget left_toggle; /* The left search toggle radioGroup. */ + Widget right_toggle; /* The right search toggle radioGroup. */ + Widget rep_label; /* The Replace label string. */ + Widget rep_text; /* The Replace text field. */ + Widget search_text; /* The Search text field. */ + Widget rep_one; /* The Replace one button. */ + Widget rep_all; /* The Replace all button. */ +#ifndef OLDXAW + Widget case_sensitive; /* The "Case Sensitive" toggle */ +#endif }; - -/* Private Text Definitions */ - -typedef int (*ActionProc)(); /* New fields for the Text widget class record */ - -typedef struct {int empty;} TextClassPart; - -struct text_move { - int h, v; - struct text_move * next; -}; +typedef struct { + XtPointer extension; +} TextClassPart; /* Full class record declaration */ typedef struct _TextClassRec { @@ -173,116 +191,131 @@ extern TextClassRec textClassRec; /* New fields for the Text widget record */ typedef struct _TextPart { /* resources */ + Widget source, sink; + XawTextPosition insertPos; + XawTextSelection s; + XawTextSelectType *sarray; /* Array to cycle for selections */ + XawTextSelectionSalt *salt; /* salted away selections */ + int left_margin; + int dialog_horiz_offset, dialog_vert_offset; /* position for popup dialog */ + Boolean display_caret; /* insertion pt visible iff T */ + Boolean auto_fill; /* Auto fill mode? */ + XawTextScrollMode scroll_vert, scroll_horiz; + XawTextWrapMode wrap; /* The type of wrapping */ + XawTextResizeMode resize; + XawTextMargin r_margin; /* The real margins */ +#ifndef OLDXAW + XtCallbackList position_callbacks; +#else + XtPointer pad1; +#endif - Widget source, sink; - XawTextPosition insertPos; - XawTextSelection s; - XawTextSelectType *sarray; /* Array to cycle for selections. */ - XawTextSelectionSalt *salt; /* salted away selections */ - int options; /* wordbreak, scroll, etc. */ - int dialog_horiz_offset; /* position for popup dialog */ - int dialog_vert_offset; /* position for popup dialog */ - Boolean display_caret; /* insertion pt visible iff T */ - Boolean auto_fill; /* Auto fill mode? */ - XawTextScrollMode scroll_vert, scroll_horiz; /*what type of scrollbars.*/ - XawTextWrapMode wrap; /* The type of wrapping. */ - XawTextResizeMode resize; /* what to resize */ - XawTextMargin r_margin; /* The real margins. */ - XtCallbackList unrealize_callbacks; /* used for scrollbars */ - /* private state */ - - XawTextMargin margin; /* The current margins. */ - XawTextLineTable lt; + XawTextMargin margin; /* The current margins */ + XawTextLineTable lt; XawTextScanDirection extendDir; - XawTextSelection origSel; /* the selection being modified */ - Time lasttime; /* timestamp of last processed action */ - Time time; /* time of last key or button action */ - Position ev_x, ev_y; /* x, y coords for key or button action */ - Widget vbar, hbar; /* The scroll bars (none = NULL). */ - struct SearchAndReplace * search;/* Search and replace structure. */ - Widget file_insert; /* The file insert popup widget. */ - XawTextPosition *updateFrom; /* Array of start positions for update. */ - XawTextPosition *updateTo; /* Array of end positions for update. */ - int numranges; /* How many update ranges there are. */ - int maxranges; /* How many ranges we have space for */ - XawTextPosition lastPos; /* Last position of source. */ - GC gc; - Boolean showposition; /* True if we need to show the position. */ - Boolean hasfocus; /* TRUE if we currently have input focus.*/ - Boolean update_disabled; /* TRUE if display updating turned off */ - Boolean single_char; /* Single character replaced. */ - XawTextPosition old_insert; /* Last insertPos for batched updates */ - short mult; /* Multiplier. */ - struct text_move * copy_area_offsets; /* Text offset area (linked list) */ + XawTextSelection origSel; /* the selection being modified */ + Time lasttime; /* timestamp of last processed action */ + Time time; /* time of last key or button action */ + Position ev_x, ev_y; /* x, y coords for key or button action */ + Widget vbar, hbar; /* The scroll bars (none = NULL) */ + struct SearchAndReplace *search; /* Search and replace structure */ + Widget file_insert; /* The file insert popup widget */ + XmuTextUpdate *update; /* Position intervals to 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; /* Cursor position */ + XawTextPosition lastPos; /* Last position of source */ + GC gc; + Boolean showposition; /* True if we need to show the position */ + Boolean hasfocus; /* TRUE if we currently have input focus*/ + Boolean update_disabled; /* TRUE if display updating turned off */ + Boolean clear_to_eol; /* Clear to eol when painting text? */ + XawTextPosition old_insert; /* Last insertPos for batched updates */ + short mult; /* Multiplier */ +#ifndef OLDXAW + XawTextKillRing *kill_ring_ptr; +#else + XtPointer pad4; +#endif /* private state, shared w/Source and Sink */ - Boolean redisplay_needed; /* in SetValues */ - XawTextSelectionSalt *salt2; /* salted away selections */ + Boolean redisplay_needed; /* in SetValues */ + XawTextSelectionSalt *salt2; /* salted away selections */ + +#ifndef OLDXAW + char numeric; + char source_changed; + Boolean overwrite; /* Overwrite mode */ + + /* new resources and states, for text edition + * Note: a fixed width font is required for these resources/states. + */ + short left_column, right_column; + XawTextJustifyMode justify; + XtPointer pad[4]; /* for future use and keep binary compatability */ +#endif } TextPart; -/************************************************************* - * - * Resource types private to Text widget. - * - *************************************************************/ - -#define XtRScrollMode "ScrollMode" -#define XtRWrapMode "WrapMode" -#define XtRResizeMode "ResizeMode" - -/**************************************************************** - * - * Full instance record declaration - * - ****************************************************************/ +#define XtRWrapMode "WrapMode" +#define XtRScrollMode "ScrollMode" +#define XtRResizeMode "ResizeMode" +#define XtRJustifyMode "JustifyMode" +/* full instance record */ typedef struct _TextRec { CorePart core; SimplePart simple; TextPart text; } TextRec; -/******************************************** - * +/* * Semi-private functions * for use by other Xaw modules only - * - *******************************************/ - -extern void _XawTextBuildLineTable ( -#if NeedFunctionPrototypes - TextWidget /*ctx*/, - XawTextPosition /*top pos*/, - _XtBoolean /* force_rebuild */ -#endif -); - -extern char* _XawTextGetSTRING( -#if NeedFunctionPrototypes - TextWidget /*ctx*/, - XawTextPosition /*left*/, - XawTextPosition /*right*/ -#endif -); - -extern void _XawTextSaltAwaySelection( -#if NeedFunctionPrototypes - TextWidget /*ctx*/, - Atom* /*selections*/, - int /*num_atoms*/ -#endif -); - -extern void _XawTextPosToXY( -#if NeedFunctionPrototypes - Widget /* w */, - XawTextPosition /* pos */, - Position * /* x */, - Position * /*y */ -#endif -); + */ +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 /* _XawTextP_h */ - - |