diff -r 969102054596 -r 414d4b727fd9 graphicsdeviceinterface/gdi/sgdi/BidiTextImp.h --- a/graphicsdeviceinterface/gdi/sgdi/BidiTextImp.h Wed Aug 25 08:17:25 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,125 +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 BIDITEXTIMP_H_ -#define BIDITEXTIMP_H_ - -#include "BidiText.h" - -class TRunInfoCompact; - -class TBidiTextImp : public TBidiText -/** This is the implementation for the class TBidiText. It is so designed so -that it only occupies a single heap cell. This means that it is efficient in -memory usage, and can be placed on the cleanup stack without being a C-class. -@internalComponent */ - { -public: - static TBidiTextImp* NewL(TInt aLength, TInt aMaxLines, TInt aBdRunArraySize); - static TBidiTextImp* Imp(TBidiText* aSelf); - static const TBidiTextImp* Imp(const TBidiText* aSelf); - static TInt AlignedSizeOf(); - TText* LogicalText(); - TText* VisualText(); - TInt16* LineWidthArray(); - TRunInfoCompact* BidiRunArray(); - const TText* LogicalText() const - { return const_cast(this)->LogicalText(); } - const TText* VisualText() const - { return const_cast(this)->VisualText(); } - const TInt16* LineWidthArray() const - { return const_cast(this)->LineWidthArray(); } - const TRunInfoCompact* BidiRunArray() const - { return const_cast(this)->BidiRunArray(); } - /** - @return Current truncation character. - @internalComponent */ - TChar TruncationChar() const - { return static_cast(iTruncationCharPlane << 16) - + iTruncationChar16; } - - inline TInt TextLength() const; - inline void SetTextLength(TInt aLength); - inline TBool HasRightToLeftDirectionality() const; - inline void SetRightToLeftDirectionality(TBool aRightToLeftDirectionality); - - static TInt RequiredBytes(TInt aLendth, TInt aMaxLines, TInt aBdRunArraySize); - inline TInt AllocatedTextDataBytes() const; - -private: - inline void SetAllocatedTextDataBytes(TInt aMaxBytes); - enum TFlags - { - EFRightToLeft = 0x10000000, - EFTruncateAtBeginning = 0x20000000 - }; - - enum { ELengthMask = 0x0FFFFFFF }; - TInt iTextLengthAndFlags; - TInt iTextDataBytes; // Number of bytes allocated off the end of the object for text data -public: - TInt iVisualOrderedTextLength; - TUint16 iWrappingWidth; - TUint16 iBidiRunArrayLength; - TUint8 iLines; - TUint8 iTruncationCharPlane; - TUint16 iTruncationChar16; - }; - -TInt SizeLineBreak(const TText* aText); -const TText* FindEndOfThisLine(const TText* aStart, const TText* aEnd); -TInt NumberOfLines(const TText* aStart, const TText* aEnd); - -inline TBidiTextImp* TBidiTextImp::Imp(TBidiText* aSelf) - { return static_cast(aSelf); } - -inline const TBidiTextImp* TBidiTextImp::Imp(const TBidiText* aSelf) - { return static_cast(aSelf); } - -inline TInt TBidiTextImp::AlignedSizeOf() - { return ((sizeof(TBidiTextImp) + 1) & 0xFFFFFFFE); } - -inline TInt TBidiTextImp::TextLength() const - { return iTextLengthAndFlags & TBidiTextImp::ELengthMask; } - -inline void TBidiTextImp::SetTextLength(TInt aLength) - { iTextLengthAndFlags &= ~ELengthMask; // clear old size bits - iTextLengthAndFlags |= (aLength&ELengthMask); } // set new size bits - -inline TBool TBidiTextImp::HasRightToLeftDirectionality() const - { return iTextLengthAndFlags&TBidiTextImp::EFRightToLeft; } - -inline void TBidiTextImp::SetRightToLeftDirectionality(TBool aRightToLeftDirectionality) - { - if (aRightToLeftDirectionality) - iTextLengthAndFlags |= TBidiTextImp::EFRightToLeft; - else - iTextLengthAndFlags &= ~TBidiTextImp::EFRightToLeft; - } - -inline TInt TBidiTextImp::AllocatedTextDataBytes() const - { return iTextDataBytes; } - -inline void TBidiTextImp::SetAllocatedTextDataBytes(TInt aTextDataBytes) - { iTextDataBytes = aTextDataBytes; } - - -/** -Bidi panic. -@internalComponent -*/ -void Panic(TInt aError); - -#endif