summaryrefslogtreecommitdiff
path: root/3dc/avp/support/wrapstr.cpp
diff options
context:
space:
mode:
Diffstat (limited to '3dc/avp/support/wrapstr.cpp')
-rw-r--r--3dc/avp/support/wrapstr.cpp372
1 files changed, 0 insertions, 372 deletions
diff --git a/3dc/avp/support/wrapstr.cpp b/3dc/avp/support/wrapstr.cpp
deleted file mode 100644
index 2676c90..0000000
--- a/3dc/avp/support/wrapstr.cpp
+++ /dev/null
@@ -1,372 +0,0 @@
-/*******************************************************************
- *
- * DESCRIPTION: wrapstr.cpp
- *
- * AUTHOR: David Malcolm
- *
- * HISTORY: Created 6/8/98
- *
- *******************************************************************/
-
-/* Includes ********************************************************/
-#include "3dc.h"
-#include "wrapstr.hpp"
-#include "strutil.h"
-
- #define UseLocalAssert Yes
- #include "ourasert.h"
-
-/* Version settings ************************************************/
-
-/* Constants *******************************************************/
-
-/* Macros **********************************************************/
-
-/* Imported function prototypes ************************************/
-
-/* Imported data ***************************************************/
-#ifdef __cplusplus
- extern "C"
- {
-#endif
- #if 0
- extern OurBool DaveDebugOn;
- extern FDIEXTENSIONTAG FDIET_Dummy;
- extern IFEXTENSIONTAG IFET_Dummy;
- extern FDIQUAD FDIQuad_WholeScreen;
- extern FDIPOS FDIPos_Origin;
- extern FDIPOS FDIPos_ScreenCentre;
- extern IFOBJECTLOCATION IFObjLoc_Origin;
- extern UncompressedGlobalPlotAtomID UGPAID_StandardNull;
- extern IFCOLOUR IFColour_Dummy;
- extern IFVECTOR IFVec_Zero;
- #endif
-#ifdef __cplusplus
- };
-#endif
-
-
-
-/* Exported globals ************************************************/
-
-/* Internal type definitions ***************************************/
-
-/* Internal function prototypes ************************************/
-
-/* Internal globals ************************************************/
-
-/* Exported function definitions ***********************************/
-// namespace WordWrap
-List<SCString*>* WordWrap :: DeprecatedMake
-(
- const SCString& SCString_In,
-
- const IndexedFont& IndexedFnt_In,
-
- int W_FirstLine_In,
- int W_Subsequently_In
- // widths to wrap with.
- // They are different in order to support paragraph starts of various kinds
- // e.g. bulleting
-)
-{
- GLOBALASSERT( W_FirstLine_In >= 0 );
- GLOBALASSERT( W_Subsequently_In >= 0 );
-
- // The list to return is initially empty:
- List<SCString*>* pList_pSCString_Return = new List<SCString*>;
-
- #if 1
- {
- // Iterate through the string:
- ProjChar* pProjCh_I = SCString_In . pProjCh();
-
- ProjChar* pProjCh_StartOfLine = pProjCh_I;
- int CharsInLine = 0;
-
- ProjChar* pProjCh_StartOfNextLine = 0;
- int CharsInLine_Good = 0;
- // update this whenever you have a "good" wrap position i.e.
- // one where there's whitespace
-
- int W_Available = W_FirstLine_In;
-
- while
- (
- !STRUTIL_SC_fIsTerminator
- (
- pProjCh_I
- )
- )
- {
- // Determine if adding this character to the line being
- // formed will make the line too long to fit:
- if
- (
- IndexedFnt_In . CalcSize
- (
- pProjCh_StartOfLine,
- ( CharsInLine + 1 )
- ) . w
- >
- W_Available
- )
- {
- // It won't fit:
- if ( CharsInLine_Good > 0 )
- {
- GLOBALASSERT( pProjCh_StartOfNextLine );
-
- // If so, flush the current line by creating a new SCString
- // for it and start a new line with this as the first character
- pList_pSCString_Return -> add_entry_end
- (
- new SCString
- (
- pProjCh_StartOfLine,
- CharsInLine_Good
- )
- );
-
- pProjCh_StartOfLine = pProjCh_StartOfNextLine;
- CharsInLine = (CharsInLine - CharsInLine_Good );
- CharsInLine_Good = 0;
- // Note that we don't advance pProjCh_I, but the variant does
- // decrease since pProjCh_StartOfLine will advance, reducing the number
- // of characters left to add.
-
- W_Available = W_Subsequently_In;
-
- continue;
- }
- else
- {
- // Emergency: what we have won't fit even by itself in the given
- // width. Continue processing until you reach a "good" breaking point:
- }
- }
-
- // Otherwise, add this character to the line being formed:
- {
- if
- (
- bWhitespace( *pProjCh_I )
- )
- {
- // Whitespace character:
- if
- (
- (CharsInLine == 0)
- )
- {
- // Ignore leading whitespace in a line:
- pProjCh_StartOfLine++;
- pProjCh_I++;
- }
- else
- {
- // Add this character to the line being generated; it is an acceptable
- // breaking point:
- pProjCh_I++;
- CharsInLine++;
-
- CharsInLine_Good = CharsInLine;
- pProjCh_StartOfNextLine = pProjCh_I;
- }
- }
- else if (*pProjCh_I=='\n')
- {
- pProjCh_I++;
- CharsInLine++;
-
- CharsInLine_Good = CharsInLine;
- pProjCh_StartOfNextLine = pProjCh_I;
-
- pList_pSCString_Return -> add_entry_end
- (
- new SCString
- (
- pProjCh_StartOfLine,
- CharsInLine_Good
- )
- );
-
- pProjCh_StartOfLine = pProjCh_StartOfNextLine;
- CharsInLine = (CharsInLine - CharsInLine_Good );
- CharsInLine_Good = 0;
- W_Available = W_Subsequently_In;
-
-
- }
- else
- {
- // Non-whitespace character:
-
- // Add this character to the line being generated; it is not an acceptable
- // breaking point:
- CharsInLine++;
- pProjCh_I++;
- }
- }
- }
-
- // Flush the final line that was formed:
- pList_pSCString_Return -> add_entry_end
- (
- new SCString
- (
- pProjCh_StartOfLine,
- CharsInLine
- )
- );
-
-
- }
- #else
- {
- // Iterate through the string:
- ProjChar* pProjCh_I = SCString_In . pProjCh();
- ProjChar* pProjCh_StartOfLine = pProjCh_I;
-
- int CharsInLine = 0;
-
- int W_Available = W_FirstLine_In;
-
- while
- (
- !STRUTIL_SC_fIsTerminator
- (
- pProjCh_I
- )
- )
- {
- // Determine if adding this character to the line being
- // formed will make the line too long to fit:
- if
- (
- IndexedFnt_In . CalcSize
- (
- pProjCh_StartOfLine,
- ( CharsInLine + 1 )
- ) . w
- >
- W_Available
- )
- {
- // It won't fit:
- if ( CharsInLine > 0 )
- {
- // If so, flush the current line by creating a new SCString
- // for it and start a new line with this as the first character
- pList_pSCString_Return -> add_entry_end
- (
- new SCString
- (
- pProjCh_StartOfLine,
- CharsInLine
- )
- );
-
- pProjCh_StartOfLine = pProjCh_I;
- CharsInLine = 0;
- // Note that we don't advance pProjCh_I, but the variant does
- // decrease since pProjCh_StartOfLine will advance, reducing the number
- // of characters left to add.
-
- W_Available = W_Subsequently_In;
- }
- else
- {
- // Emergency: the character we have won't fit even by itself in the given
- // width. Make a line containing just this character (to avoid infinite loops):
- pList_pSCString_Return -> add_entry_end
- (
- new SCString
- (
- pProjCh_StartOfLine,
- 1
- )
- );
-
- pProjCh_I++;
-
- pProjCh_StartOfLine = pProjCh_I;
- CharsInLine = 0;
-
- W_Available = W_Subsequently_In;
- }
- }
- else
- {
- // Otherwise, add this character to the line being formed:
- if
- (
- (CharsInLine == 0)
- &&
- bWhitespace( *pProjCh_I )
- )
- {
- // Ignore leading whitespace in a line:
- pProjCh_StartOfLine++;
- }
- else
- {
- // Add this character to the line being generated:
- CharsInLine ++;
- }
-
- pProjCh_I++;
-
- }
- }
-
- // Flush the final line that was formed:
- pList_pSCString_Return -> add_entry_end
- (
- new SCString
- (
- pProjCh_StartOfLine,
- CharsInLine
- )
- );
-
-
- }
- #endif
-
- return pList_pSCString_Return;
-}
-
-int WordWrap :: bWhitespace( ProjChar ProjCh )
-{
- // LOCALISEME();
- return ( ProjCh == ' ');
-}
-
-int WordWrap :: bWithinWord( ProjChar* pProjCh_Test )
-{
- GLOBALASSERT( pProjCh_Test );
-
- if ( bWhitespace(*pProjCh_Test) )
- {
- return No;
- }
-
- GLOBALASSERT
- (
- !STRUTIL_SC_fIsTerminator
- (
- pProjCh_Test
- )
- );
-
- return
- (
- !bWhitespace( *(pProjCh_Test++) )
- );
- // i.e you're within a word iff
- // neither you nor the next char are whitespace
-}
-
-
-/* Internal function definitions ***********************************/