diff -r 969102054596 -r 414d4b727fd9 graphicsdeviceinterface/gdi/sgdi/LineBreakImp.h --- a/graphicsdeviceinterface/gdi/sgdi/LineBreakImp.h Wed Aug 25 08:17:25 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,181 +0,0 @@ -// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -#ifndef LINEBREAKIMP_H_ -#define LINEBREAKIMP_H_ - -#include - -const TText KZeroWidthSpace = 0x200B; -const TText KWhiteSpace = 0x0020; - -// Forward delcarations. -GLREF_C void Panic(TInt aError); -class MLineBreaker; - -/** - Rule for which classes may be broken before. -@internalComponent - */ -struct TLineBreakRule - { - /** Classes that breaks are illegal before, even after spaces. */ - TUint iForbid; - /** Classes that breaks are legal before, even without spaces. */ - TUint iAllow; - }; - -/** - Range of characters which have a particular line breaking class. -@internalComponent - */ -struct TLineBreakRange - { - TUint iStart; - TUint iEnd; - TUint iClass; - }; - -/** - Single-entry line break cache. Saves asking the MLineBreaker for the classes - of multiple characters in the same run. -@internalComponent - */ -class TLineBreakClassCache - { -public: - TLineBreakClassCache(const MLineBreaker& aBreaker): iBreaker(aBreaker), iStart(0), iEnd(0), iClass(0) { } - TUint LineBreakClass(TUint aChar); - const MLineBreaker& Breaker() const { return iBreaker; } - -private: - const MLineBreaker& iBreaker; - TUint iStart; - TUint iEnd; - TUint iClass; - }; - -/** -@internalComponent - */ -void TestLineBreakTables(void); - -/** -@internalComponent - */ -class TLineBreakClassIterator - { -public: - void Set(const TText* aFirst, const TText* aText, TLineBreakClassCache& aBreaker); - void SetNull(); - /** Returns the pointer to the character that has the class returned by - Class(). */ - const TText* Ptr() const { return iCurrent; } - /** Returns the class of the current character. */ - TInt Class() const { return iClass; } - // Will not go beyond maximum of aLimit - // Should not be called with aLimit == Ptr() - // Will return EFalse if the limit has been exceeded - // aOffset must be 1 or -1 - TBool Move(const TText* aLimit, const TText* aLimitAfterSpaces, - TInt aOffset, TBool& aHasSpaces, TLineBreakClassCache& aBreaker); -private: - /** Addres of first character in the string to iterator through */ - const TText* iFirst; - /** Current position within the iteration. */ - const TText* iCurrent; - /** Class of the character at the currrent position. */ - TInt iClass; - }; - - -/** -@internalComponent - */ -TInt MoveTextPtr(const TText*& aPtr, const TText* aLimit, TInt aOffset); - -/** - Class for implementing the Unicode line breaking algorithm -@internalComponent - */ -class TLineBreakIterator - { -public: - TLineBreakIterator(TLineBreakClassCache& aBreaker, - const TText* aText, TInt aLength, TBool aForwards, - TInt aMinBreakPos, TInt aMaxBreakPos); - TBool IsBreak(TBool aForwards); - // Is one side of the potential line break CB class? - TBool HasContingentBreak() const; - // Get class before the break: useful for CB - TInt PreviousClass() const; - // Get class after the break: useful for CB - TInt NextClass() const; - // Are there spaces between the classes: useful for CB - TInt HasSpaces() const; - // go backwards - TBool Decrement(); - // go forwards - TBool Increment(); - // position of iterator at the break - TInt BreakPos() const; - // position of iterator after the break - TInt AfterBreakPos() const; - // position of iterator before the break - TInt BeforeBreakPos() const; -private: - TLineBreakClassCache iBreaker; - const TText* iText; - TInt iTextLength; - const TText* iLimit; - /** The limit that we are allowed to search beyond space characters. For - forwards this will be up to the end of the text, for backwards we may not - search beyond the minimum break position because that would mean that the - break position returned would be below the minimum. */ - const TText* iLimitAfterSpaces; - TLineBreakClassIterator iBeforeBreak; - TLineBreakClassIterator iAfterBreak; - TBool iHasSpaces; - /** Holds the address of the lowest point allowed to break at */ - const TText* iMinBreakPos; - /** Holds the address of the highest point allowed to break at */ - const TText* iMaxBreakPos; - }; - -/** -@internalComponent -*/ -TBool HasContingentBreak(TLineBreakIterator& aIterator, TBool aForwards, - MContingentLineBreaker& aCbDelegate); - -/** -@internalComponent -*/ -TBool HasContingentBreakL(TLineBreakIterator& aIterator, TBool aForwards, - MContingentLineBreakerL& aCbDelegate); - -/** -@internalComponent -*/ -TBool FindBreak(TLineBreakIterator& aIterator, TBool aForwards, - MContingentLineBreaker* aCbDelegate); - -/** -@internalComponent -*/ -TBool FindBreakL(TLineBreakIterator& aIterator, TBool aForwards, - MContingentLineBreakerL* aCbDelegate); - -#endif