aboutsummaryrefslogtreecommitdiff
path: root/X11/Xaw/TextP.h
diff options
context:
space:
mode:
Diffstat (limited to 'X11/Xaw/TextP.h')
-rw-r--r--X11/Xaw/TextP.h323
1 files changed, 323 insertions, 0 deletions
diff --git a/X11/Xaw/TextP.h b/X11/Xaw/TextP.h
new file mode 100644
index 000000000..d058e8bd3
--- /dev/null
+++ b/X11/Xaw/TextP.h
@@ -0,0 +1,323 @@
+/*
+* $Xorg: TextP.h,v 1.4 2001/02/09 02:03:46 xorgcvs Exp $
+*/
+
+
+/***********************************************************
+
+Copyright 1987, 1988, 1994, 1998 The Open Group
+
+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.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+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 name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+/* $XFree86: xc/lib/Xaw/TextP.h,v 3.21 2001/12/14 19:54:44 dawes Exp $ */
+
+#ifndef _XawTextP_h
+#define _XawTextP_h
+
+#include <X11/Xfuncproto.h>
+
+#include <X11/Xaw/Text.h>
+#include <X11/Xaw/SimpleP.h>
+
+_XFUNCPROTOBEGIN
+
+#define MAXCUT 30000 /* Maximum number of characters that can be cut */
+
+#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 '\\'
+
+/* 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;
+#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;
+ /*
+ * The element "contents" stores the CT string which is gotten in the
+ * 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 */
+#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;
+} 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)
+
+/*
+ * Search & Replace data structure
+ */
+struct SearchAndReplace {
+ 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. */
+#ifndef OLDXAW
+ Widget case_sensitive; /* The "Case Sensitive" toggle */
+#endif
+};
+
+/* New fields for the Text widget class record */
+typedef struct {
+ XtPointer extension;
+} TextClassPart;
+
+/* Full class record declaration */
+typedef struct _TextClassRec {
+ CoreClassPart core_class;
+ SimpleClassPart simple_class;
+ TextClassPart text_class;
+} TextClassRec;
+
+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
+
+ /* private state */
+ 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 */
+ 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 */
+
+#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;
+
+#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
+ */
+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 */