diff -r 666f914201fb -r 2fe1408b6811 epoc32/include/gulalign.h --- a/epoc32/include/gulalign.h Tue Nov 24 13:55:44 2009 +0000 +++ b/epoc32/include/gulalign.h Tue Mar 16 16:12:26 2010 +0000 @@ -1,1 +1,153 @@ -gulalign.h +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members +// which accompanies this distribution, and is available +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#ifndef __GULALIGN_H__ +#define __GULALIGN_H__ + +#include +#include +#include +#include // enum TBidiText::TDirectionality +#include // enum CParaFormat::TAlignment + +/** Horizontal layout settings for graphic objects. + +@publishedAll +@released */ +enum TGulHAlignment + { + /** Object is left-aligned. */ + EHLeft=CGraphicsContext::ELeft, + /** Object is centred horizontally. */ + EHCenter=CGraphicsContext::ECenter, + /** Object is right-aligned. */ + EHRight=CGraphicsContext::ERight + }; + +/** Vertical layout settings for graphic objects. + +@publishedAll +@released */ +enum TGulVAlignment + { + /** Object is aligned with the top. */ + EVTop=0x00, + /** Object is centred vertically. */ + EVCenter=0x10, + /** Object is aligned with the bottom. */ + EVBottom=0x20 + }; + +/** Alignment settings for the layout of graphic objects. + +@publishedAll +@released */ +enum TGulAlignmentValue + { + /** Object is left and top aligned. */ + EHLeftVTop=EHLeft|EVTop, + /** Object is left aligned and centred vertically. */ + EHLeftVCenter=EHLeft|EVCenter, + /** Object is left aligned and at the bottom. */ + EHLeftVBottom=EHLeft|EVBottom, + /** Object is centre aligned horizontally and at the top. */ + EHCenterVTop=EHCenter|EVTop, + /** Object is centred horizontally and vertically. */ + EHCenterVCenter=EHCenter|EVCenter, + /** Object is centred horizontally and at the bottom. */ + EHCenterVBottom=EHCenter|EVBottom, + /** Object is right and top aligned. */ + EHRightVTop=EHRight|EVTop, + /** Object is right aligned and centred vertically. */ + EHRightVCenter=EHRight|EVCenter, + /** Object is right aligned and at the bottom. */ + EHRightVBottom=EHRight|EVBottom + }; + + +/** Provides a convenient way to describe horizontal and vertical layouts of rectangular +objects and to enquire how they occupy an area given their alignment. + +@publishedAll +@released */ +class TGulAlignment + { +private: + enum {EHMask=0x03, EHAbsoluteFlag=0x04, EVMask=0x30}; +public: + inline TGulAlignment(); + inline TGulAlignment(TGulAlignmentValue aValue); + inline TGulAlignment(CGraphicsContext::TTextAlign aHAlign, TGulVAlignment aVAlign = EVTop); + IMPORT_C operator TGulAlignmentValue() const; + inline TGulVAlignment VAlignment() const; + inline TGulHAlignment HAlignment() const; + IMPORT_C TGulHAlignment HAlignment(TBidiText::TDirectionality aLanguageDirectionality) const; + IMPORT_C TBool HasAbsoluteHAlignment() const; + IMPORT_C void SetAbsoluteHAlignment(TBool aAbsoluteHAlignment); + + // Returns the horizontal text alignment. + inline CGraphicsContext::TTextAlign TextAlign() const; + IMPORT_C CGraphicsContext::TTextAlign TextAlign(TBidiText::TDirectionality aLanguageDirectionality) const; + IMPORT_C CParaFormat::TAlignment ParaAlign() const; + + IMPORT_C void SetVAlignment(TGulVAlignment aVAlign); + IMPORT_C void SetHAlignment(TGulHAlignment aHAlign); + IMPORT_C void SetHAlignment(CGraphicsContext::TTextAlign aHAlign); + IMPORT_C void SetHAlignment(CParaFormat::TAlignment aHAlign); + IMPORT_C TPoint InnerTopLeft(const TRect& aOuter, const TSize& aInnerSize) const; + IMPORT_C TPoint InnerTopLeft(const TRect& aOuter, const TSize& aInnerSize, TBidiText::TDirectionality aLanguageDirectionality) const; + IMPORT_C TRect InnerRect(const TRect& aOuter, const TSize& aInnerSize) const; + IMPORT_C TRect InnerRect(const TRect& aOuter, const TSize& aInnerSize, TBidiText::TDirectionality aLanguageDirectionality) const; +private: + TInt iValue; + }; + +/** Default constructor. */ +inline TGulAlignment::TGulAlignment() + {}; + +/** Constructor initialising the object with an alignment value. +@param aValue The alignment value. */ +inline TGulAlignment::TGulAlignment(TGulAlignmentValue aValue) + {iValue=aValue;} + +/** Constructor initialising the object with an alignment value. +@param aHAlign The horizontal alignment value. +@param aVAlign The vertical alignment value. */ +inline TGulAlignment::TGulAlignment(CGraphicsContext::TTextAlign aHAlign, TGulVAlignment aVAlign) + { iValue = static_cast(((TGulHAlignment)aHAlign) |aVAlign); } + +/** Gets the vertical alignment. +@return Vertical alignment. */ +inline TGulVAlignment TGulAlignment::VAlignment() const + {return((TGulVAlignment)(iValue&EVMask));} + +/** Gets the absolute horizontal alignment. + +Note that this is the alignment in absolute terms. I.e. left and right +alignment will not be swapped depending on language directionality. +@return Horizontal alignment. */ +inline TGulHAlignment TGulAlignment::HAlignment() const + {return((TGulHAlignment)(iValue&EHMask));} + +/** Gets the absolute horizontal text alignment. + +Note that this is the alignment in absolute terms. I.e. left and right +alignment will not be swapped depending on language directionality. +@return The horizontal text alignment. */ +inline CGraphicsContext::TTextAlign TGulAlignment::TextAlign() const + {return((CGraphicsContext::TTextAlign)(HAlignment()));} + +#endif // __GULALIGN_H__