749N/ACopyright (c) 1989, 1994 X Consortium 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/AThe above copyright notice and this permission notice shall be included in 749N/Aall copies or substantial portions of the Software. 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/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 * Author: Chris Peterson, MIT X Consortium. 749N/A * Much code taken from X11R3 AsciiSink. 749N/A/**************************************************************** 749N/A * Full class record constant 749N/A ****************************************************************/ 749N/A /* class_name */ "TextSink",
749N/A/* textSink_class fields */ 749N/A * We don't need to check for null super since we'll get to TextSink 749N/A/* Function Name: Initialize 749N/A * Description: Initializes the TextSink Object. 749N/A * Arguments: request, new - the requested and new values for the object 749N/A/* Function Name: Destroy 749N/A * Description: This function cleans up when the object is 749N/A * Arguments: w - the TextSink Object. 749N/A/* Function Name: SetValues 749N/A * Description: Sets the values for the TextSink 749N/A * Arguments: current - current state of the object. 749N/A * request - what was requested. 749N/A * new - what the object will become. 749N/A * Returns: True if redisplay is needed. 749N/A/************************************************************ 749N/A * Class specific methods. 749N/A ************************************************************/ 749N/A/* Function Name: DisplayText 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 * highlight - hightlight this text? 749N/A * This function doesn't actually display anything, it is only a place 749N/A/* Function Name: InsertCursor 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 * This function doesn't actually display anything, it is only a place 749N/A/* Function Name: ClearToBackground 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 * Don't clear in height or width are zero. 749N/A * XClearArea() has special semantic for these values. 749N/A/* Function Name: FindPosition 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/* Function Name: FindDistance 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/* Function Name: Resolve 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/* Function Name: MaxLines 749N/A * Description: Finds the Maximum number of lines that will fit in 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 * The fontset has gone down to descent Sink Widget, so 749N/A * the functions such MaxLines, SetTabs... are bound to the descent. 749N/A * by Li Yuhong, Jan. 15, 1991 749N/A/* Function Name: MaxHeight 749N/A * Description: Finds the Minium height that will contain a given number 749N/A * Arguments: w - the TextSink Object. 749N/A * lines - the number of lines. 749N/A/* Function Name: SetTabs 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/* Function Name: GetCursorBounds 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/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 * highlight - hightlight this text? 749N/A * This function doesn't actually display anything, it is only a place 749N/A /* Position */ int x,
/* Position */ int y,
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 * This function doesn't actually display anything, it is only a place 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 * This function doesn't actually display anything, it is only a place 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/* 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/* 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/* Function Name: XawTextSinkMaxLines 749N/A * Description: Finds the Maximum number of lines that will fit in 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/* Function Name: XawTextSinkMaxHeight 749N/A * Description: Finds the Minimum height that will contain a given number 749N/A * Arguments: w - the TextSink Object. 749N/A * lines - the number of lines. 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/* 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).