diff -r 000000000000 -r 05e9090e2422 uiresources_plat/layout_data_api/inc/AknLayout2Def.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uiresources_plat/layout_data_api/inc/AknLayout2Def.h Thu Dec 17 09:14:12 2009 +0200 @@ -0,0 +1,158 @@ +/* +* Copyright (c) 2002-2004 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 AKNLAYOUT2DEF_H +#define AKNLAYOUT2DEF_H + +#include +#include +#include + +class TAknLayoutRect; +class TAknWindowComponentLayout; +class TAknTextComponentLayout; + +/** +* Defines the valid range of a table lookup index. +* A table index is valid if it satisfies iFirstIndex <= index <= iLastIndex +*/ +class TAknLayoutTableLimits + { +public: + TInt iFirstIndex; + TInt iLastIndex; + }; + + +#define ELayoutP ((TInt16)16384) +#define ELayoutPRange ((TInt16)8192) + +/** +* A window line structure from layout. +*/ +class TAknWindowLineLayout + { +public: + inline TAknWindowLineLayout() {} + inline TAknWindowLineLayout(TInt /*aDummy*/) {} + + IMPORT_C TAknWindowLineLayout( const TAknWindowComponentLayout& aLine ); + IMPORT_C TAknWindowLineLayout operator=(const TAknWindowComponentLayout& aLine); + + /** + * Can this structure be used directly as a rectangle? + * @return ETrue when all of l,t,W,H are specified + */ + inline TBool IsRect() const; + + + /** + * Convert this structure to a rectangle + * This is only valid when IsRect() returns ETrue. + * It is intended that this is used when the caller knows that the LAF line encoded in + * this structure is written with l, t, W and H specified, as is the case with many + * LAF lines. + * + * THIS METHOD IS DEPRECATED, PLEASE DO NOT USE IT! USE OF THIS METHOD MAY RETURN UNEXPECTED VALUES IN SCALABLE UI. + * + * Here's CORRECT WAY to do the same thing: + * TRect parent = iAvkonAppUi->ClientRect(); // pick parent rectangle from existing control hierarchy. + * TAknLayoutRect rect; + * rect.LayoutRect(parent, AknLayout::xxxx() ); // TAknWindowLineLayout should go directly to LayoutRect/LayoutControl etc. methods + * ... use rect.Rect().... // This one is VALID rectangle, calculated based on parent rectangle. + * + * NOTE, the parent comes from _existing control hierarchy_ CCoeControl::Rect() or + * from TAknLayoutRect::Rect() method. + * + * BUT PLEASE, DO NOT USE TAknWindowLineLayout::Rect(), because it assumes invalid things + * about our layout data. (the parent rectangle _needs_ to be provided to get a valid rectangle!) + * + * THIS METHOD IS DEPRECATED, PLEASE DO NOT USE IT! USE OF THIS METHOD MAY RETURN UNEXPECTED VALUES IN SCALABLE UI. + * @return a rectangle made from l, t, W and H + */ + inline TRect Rect() const; + +public: + IMPORT_C static TAknWindowLineLayout CombineLines(TAknWindowLineLayout aLine, TAknWindowLineLayout aLine2); + +public: // Please DO NOT USE the data members below. Use of them breaks scalable ui. (only place that can use these is aknlayout2 module) + TInt16 iC; + TInt16 il; + TInt16 it; + TInt16 ir; + TInt16 ib; + TInt16 iW; + TInt16 iH; + }; + + +/** +* A text line structure from layout. +*/ +class TAknTextLineLayout + { +public: + inline TAknTextLineLayout() {} + inline TAknTextLineLayout(TInt /*aDummy*/) {} + + inline TInt FontId() const { return iFont; } + inline TInt BaselineSkip() const { return iBaselineSkip; } + inline TInt NumberOfLinesShown() const { return iNumberOfLinesShown; } + + IMPORT_C TAknTextLineLayout( const TAknTextComponentLayout& aLine ); + IMPORT_C TAknTextLineLayout operator=(const TAknTextComponentLayout& aLine); + +public: + // Please DO NOT USE the data members below. They may contain unexpected values with scalable UI. + TInt16 iC; + TInt16 il; + TInt16 ir; + TInt16 iB; + TInt16 iW; + TInt16 iJ; + TInt32 iFont; + + TInt iBaselineSkip; + TInt iNumberOfLinesShown; + }; + + +/** +* A multiline text line structure from layout. +* TAknMultiLineTextLayout is a specialisation of TAknTextLineLayout, but +* the current implementation does not need to add anything (previous versions did). +*/ +class TAknMultiLineTextLayout : public TAknTextLineLayout + { + }; + + + +inline TBool TAknWindowLineLayout::IsRect() const + { + return (il!=ELayoutEmpty && it!=ELayoutEmpty && iW!=ELayoutEmpty && iH!=ELayoutEmpty); + } + +inline TRect TAknWindowLineLayout::Rect() const + { // THIS METHOD IS DEPRECATED + ASSERT(IsRect()); + return TRect(TPoint(il, it), TSize(iW, iH)); + } + +#endif +// End of File