AsciiSink.c revision 749
749N/A/*********************************************************** 749N/ACopyright (c) 1987, 1988, 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/ACopyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts. 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/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/A******************************************************************/ 749N/A /* class_name */ "AsciiSink",
749N/A/* text_sink_class fields */ 749N/A/* ascii_sink_class fields */ 749N/A /* Adjust for Left Margin. */ 749N/A/* Function Name: PaintText 749N/A * Description: Actually paints the text into the windoe. 749N/A * Arguments: w - the text widget. 749N/A * gc - gc to paint text with. 749N/A * x, y - location to paint the text. 749N/A * buf, len - buffer and length of text to paint. 749N/A * Returns: the width of the text painted, or 0. 749N/A * NOTE: If this string attempts to paint past the end of the window 749N/A * then this function will return zero. 749N/A if ( ((
int)
width) <= -x)
/* Don't draw if we can't see it. */ 749N/A/* Sink Object Functions */ 749N/A * This function does not know about drawing more than one line of text. 749N/A else if (
buf[j] < (
unsigned char)
' ' ) {
749N/A/* Function Name: GetCursorBounds 749N/A * Description: Returns the size and location of the cursor. 749N/A * Arguments: w - the text object. 749N/A * RETURNED rect - an X rectangle to return the cursor bounds in. 749N/A * The following procedure manages the "insert" cursor. 749N/A * Given two positions, find the distance between them. 749N/Aint fromx;
/* Horizontal location of first position. */ 749N/A /* we may not need this */ 749N/Aint fromx;
/* Horizontal location of starting position.*/ 749N/A/***** Public routines *****/ 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 AsciiSink Object. 749N/A/* Function Name: SetValues 749N/A * Description: Sets the values for the AsciiSink 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/* Function Name: MaxLines 749N/A * Description: Finds the Maximum number of lines that will fit in 749N/A * Arguments: w - the AsciiSink Object. 749N/A * height - height to fit lines into. 749N/A * Returns: the number of lines that will fit. 749N/A/* Function Name: MaxHeight 749N/A * Description: Finds the Minium height that will contain a given number 749N/A * Arguments: w - the AsciiSink 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 AsciiSink Object. 749N/A * tab_count - the number of tabs in the list. 749N/A * tabs - the text positions of the tabs. 749N/A * Find the figure width of the current font.