749N/A/*
749N/A * $XConsortium: TextSink.h,v 1.10 94/04/17 20:13:12 kaleb Exp $
749N/A */
749N/A
749N/A/***********************************************************
749N/A
749N/ACopyright (c) 1987, 1988, 1994 X Consortium
749N/A
749N/APermission is hereby granted, free of charge, to any person obtaining a copy
749N/Aof this software and associated documentation files (the "Software"), to deal
749N/Ain the Software without restriction, including without limitation the rights
749N/Ato use, copy, modify, merge, publish, distribute, sublicense, and/or sell
749N/Acopies of the Software, and to permit persons to whom the Software is
749N/Afurnished to do so, subject to the following conditions:
749N/A
749N/AThe above copyright notice and this permission notice shall be included in
749N/Aall copies or substantial portions of the Software.
749N/A
749N/ATHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
749N/AIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
749N/AFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
749N/AX CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
749N/AAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
749N/ACONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
749N/A
749N/AExcept as contained in this notice, the name of the X Consortium shall not be
749N/Aused in advertising or otherwise to promote the sale, use or other dealings
749N/Ain this Software without prior written authorization from the X Consortium.
749N/A
749N/A
749N/ACopyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
749N/A
749N/A All Rights Reserved
749N/A
749N/APermission to use, copy, modify, and distribute this software and its
749N/Adocumentation for any purpose and without fee is hereby granted,
749N/Aprovided that the above copyright notice appear in all copies and that
749N/Aboth that copyright notice and this permission notice appear in
749N/Asupporting documentation, and that the name of Digital not be
749N/Aused in advertising or publicity pertaining to distribution of the
749N/Asoftware without specific, written prior permission.
749N/A
749N/ADIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
749N/AALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
749N/ADIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
749N/AANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
749N/AWHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
749N/AARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
749N/ASOFTWARE.
749N/A
749N/A******************************************************************/
749N/A
749N/A#ifndef _XawTextSink_h
749N/A#define _XawTextSink_h
749N/A
749N/A#include <X11/Xaw/Text.h>
749N/A
749N/A/***********************************************************************
749N/A *
749N/A * TextSink Object
749N/A *
749N/A ***********************************************************************/
749N/A
749N/A/* Resources:
749N/A
749N/A Name Class RepType Default Value
749N/A ---- ----- ------- -------------
749N/A font Font XFontStruct * XtDefaultFont
749N/A foreground Foreground Pixel XtDefaultForeground
749N/A background Background Pixel XtDefaultBackground
749N/A
749N/A*/
749N/A
749N/A/* Class record constants */
749N/A
749N/Aextern WidgetClass textSinkObjectClass;
749N/A
749N/Atypedef struct _TextSinkClassRec *TextSinkObjectClass;
749N/Atypedef struct _TextSinkRec *TextSinkObject;
749N/A
749N/Atypedef enum {XawisOn, XawisOff} XawTextInsertState;
749N/A
749N/A/************************************************************
749N/A *
749N/A * Public Functions.
749N/A *
749N/A ************************************************************/
749N/A
749N/A_XFUNCPROTOBEGIN
749N/A
749N/A/* Function Name: XawTextSinkDisplayText
749N/A * Description: Stub function that in subclasses will display text.
749N/A * Arguments: w - the TextSink Object.
749N/A * x, y - location to start drawing text.
749N/A * pos1, pos2 - location of starting and ending points
749N/A * in the text buffer.
749N/A * highlight - hightlight this text?
749N/A * Returns: none.
749N/A *
749N/A * This function doesn't actually display anything, it is only a place
749N/A * holder.
749N/A */
749N/A
749N/Aextern void XawTextSinkDisplayText(
749N/A#if NeedFunctionPrototypes
749N/A Widget /* w */,
749N/A#if NeedWidePrototypes
749N/A /* Position */ int /* x */,
749N/A /* Position */ int /* y */,
749N/A#else
749N/A Position /* x */,
749N/A Position /* y */,
749N/A#endif
749N/A XawTextPosition /* pos1 */,
749N/A XawTextPosition /* pos2 */,
749N/A#if NeedWidePrototypes
749N/A /* Boolean */ int /* highlight */
749N/A#else
749N/A Boolean /* highlight */
749N/A#endif
749N/A#endif
749N/A);
749N/A
749N/A/* Function Name: XawTextSinkInsertCursor
749N/A * Description: Places the InsertCursor.
749N/A * Arguments: w - the TextSink Object.
749N/A * x, y - location for the cursor.
749N/A * staye - whether to turn the cursor on, or off.
749N/A * Returns: none.
749N/A *
749N/A * This function doesn't actually display anything, it is only a place
749N/A * holder.
749N/A */
749N/A
749N/Aextern void XawTextSinkInsertCursor(
749N/A#if NeedFunctionPrototypes
749N/A Widget /* w */,
749N/A#if NeedWidePrototypes
749N/A /* Position */ int /* x */,
749N/A /* Position */ int /* y */,
749N/A /* XawTextInsertState */ int /* state */
749N/A#else
749N/A Position /* x */,
749N/A Position /* y */,
749N/A XawTextInsertState /* state */
749N/A#endif
749N/A#endif
749N/A);
749N/A
749N/A/* Function Name: XawTextSinkClearToBackground
749N/A * Description: Clears a region of the sink to the background color.
749N/A * Arguments: w - the TextSink Object.
749N/A * x, y - location of area to clear.
749N/A * width, height - size of area to clear
749N/A * Returns: void.
749N/A *
749N/A * This function doesn't actually display anything, it is only a place
749N/A * holder.
749N/A */
749N/A
749N/Aextern void XawTextSinkClearToBackground(
749N/A#if NeedFunctionPrototypes
749N/A Widget /* w */,
749N/A#if NeedWidePrototypes
749N/A /* Position */ int /* x */,
749N/A /* Position */ int /* y */,
749N/A /* Dimension */ int /* width */,
749N/A /* Dimension */ int /* height */
749N/A#else
749N/A Position /* x */,
749N/A Position /* y */,
749N/A Dimension /* width */,
749N/A Dimension /* height */
749N/A#endif
749N/A#endif
749N/A);
749N/A
749N/A/* Function Name: XawTextSinkFindPosition
749N/A * Description: Finds a position in the text.
749N/A * Arguments: w - the TextSink Object.
749N/A * fromPos - reference position.
749N/A * fromX - reference location.
749N/A * width, - width of section to paint text.
749N/A * stopAtWordBreak - returned position is a word break?
749N/A * resPos - Position to return. *** RETURNED ***
749N/A * resWidth - Width actually used. *** RETURNED ***
749N/A * resHeight - Height actually used. *** RETURNED ***
749N/A * Returns: none (see above).
749N/A */
749N/A
749N/Aextern void XawTextSinkFindPosition(
749N/A#if NeedFunctionPrototypes
749N/A Widget /* w */,
749N/A XawTextPosition /* fromPos */,
749N/A int /* fromX */,
749N/A int /* width */,
749N/A#if NeedWidePrototypes
749N/A /* Boolean */ int /* stopAtWordBreak */,
749N/A#else
749N/A Boolean /* stopAtWordBreak */,
749N/A#endif
749N/A XawTextPosition* /* pos_return */,
749N/A int* /* width_return */,
749N/A int* /* height_return */
749N/A#endif
749N/A);
749N/A
749N/A/* Function Name: XawTextSinkFindDistance
749N/A * Description: Find the Pixel Distance between two text Positions.
749N/A * Arguments: w - the TextSink Object.
749N/A * fromPos - starting Position.
749N/A * fromX - x location of starting Position.
749N/A * toPos - end Position.
749N/A * resWidth - Distance between fromPos and toPos.
749N/A * resPos - Acutal toPos used.
749N/A * resHeight - Height required by this text.
749N/A * Returns: none.
749N/A */
749N/A
749N/Aextern void XawTextSinkFindDistance (
749N/A#if NeedFunctionPrototypes
749N/A Widget /* w */,
749N/A XawTextPosition /* fromPos */,
749N/A int /* fromX */,
749N/A XawTextPosition /* toPos */,
749N/A int* /* width_return */,
749N/A XawTextPosition* /* pos_return */,
749N/A int* /* height_return */
749N/A#endif
749N/A);
749N/A
749N/A/* Function Name: XawTextSinkResolve
749N/A * Description: Resloves a location to a position.
749N/A * Arguments: w - the TextSink Object.
749N/A * pos - a reference Position.
749N/A * fromx - a reference Location.
749N/A * width - width to move.
749N/A * resPos - the resulting position.
749N/A * Returns: none
749N/A */
749N/A
749N/Aextern void XawTextSinkResolve(
749N/A#if NeedFunctionPrototypes
749N/A Widget /* w */,
749N/A XawTextPosition /* fromPos */,
749N/A int /* fromX */,
749N/A int /* width */,
749N/A XawTextPosition* /* pos_return */
749N/A#endif
749N/A);
749N/A
749N/A/* Function Name: XawTextSinkMaxLines
749N/A * Description: Finds the Maximum number of lines that will fit in
749N/A * a given height.
749N/A * Arguments: w - the TextSink Object.
749N/A * height - height to fit lines into.
749N/A * Returns: the number of lines that will fit.
749N/A */
749N/A
749N/Aextern int XawTextSinkMaxLines(
749N/A#if NeedFunctionPrototypes
749N/A Widget /* w */,
749N/A#if NeedWidePrototypes
749N/A /* Dimension */ int /* height */
749N/A#else
749N/A Dimension /* height */
749N/A#endif
749N/A#endif
749N/A);
749N/A
749N/A/* Function Name: XawTextSinkMaxHeight
749N/A * Description: Finds the Minium height that will contain a given number
749N/A * lines.
749N/A * Arguments: w - the TextSink Object.
749N/A * lines - the number of lines.
749N/A * Returns: the height.
749N/A */
749N/A
749N/Aextern int XawTextSinkMaxHeight(
749N/A#if NeedFunctionPrototypes
749N/A Widget /* w */,
749N/A int /* lines */
749N/A#endif
749N/A);
749N/A
749N/A/* Function Name: XawTextSinkSetTabs
749N/A * Description: Sets the Tab stops.
749N/A * Arguments: w - the TextSink Object.
749N/A * tab_count - the number of tabs in the list.
749N/A * tabs - the text positions of the tabs.
749N/A * Returns: none
749N/A */
749N/A
749N/Aextern void XawTextSinkSetTabs(
749N/A#if NeedFunctionPrototypes
749N/A Widget /* w */,
749N/A int /* tab_count */,
749N/A int* /* tabs */
749N/A#endif
749N/A);
749N/A
749N/A/* Function Name: XawTextSinkGetCursorBounds
749N/A * Description: Finds the bounding box for the insert curor (caret).
749N/A * Arguments: w - the TextSinkObject.
749N/A * rect - an X rectance containing the cursor bounds.
749N/A * Returns: none (fills in rect).
749N/A */
749N/A
749N/Aextern void XawTextSinkGetCursorBounds(
749N/A#if NeedFunctionPrototypes
749N/A Widget /* w */,
749N/A XRectangle* /* rect_return */
749N/A#endif
749N/A);
749N/A
749N/A_XFUNCPROTOEND
749N/A
749N/A#endif /* _XawTextSrc_h */