author | Gareth Stockwell <gareth.stockwell@accenture.com> |
Fri, 22 Oct 2010 11:38:29 +0100 | |
branch | bug235_bringup_0 |
changeset 206 | c170e304623f |
parent 0 | 5d03bc08d59c |
permissions | -rw-r--r-- |
// Copyright (c) 2007-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 SURFACECONFIGURATION_H #define SURFACECONFIGURATION_H #include <e32base.h> #include <graphics/surface.h> #include <bitstd.h> /** The base class for the surface configuration containing the size of the surface configuration. Provides a Size function to help identify which attributes are available. @publishedPartner @prototype */ class TSurfaceConfigurationSize { public: inline TInt Size() const; protected: inline TSurfaceConfigurationSize(TInt aSize); template <class Member> TBool MemberAccessible (const Member& aMember) const { return iSize>=sizeof(Member)+TInt(&aMember)-TInt(this); } inline TBool operator == (const TSurfaceConfigurationSize& aRhs)const; private: inline TSurfaceConfigurationSize(); inline TSurfaceConfigurationSize(const TSurfaceConfigurationSize& /*aSurfaceConfigurationSize*/); inline TSurfaceConfigurationSize operator = (const TSurfaceConfigurationSize& /*aRhs*/)const; protected: TInt iSize; }; /** The first set of surface configuration attributes containing the surface id, viewport, extent and orientation of the surface, along with a SupportsAllMembers function to help identify which attributes are available. @publishedPartner @prototype */ class TSurfaceConfiguration1: public TSurfaceConfigurationSize { public: inline TSurfaceConfiguration1(); inline TInt SetSurfaceId (const TSurfaceId& aSurfaceId); inline void GetSurfaceId (TSurfaceId& aSurfaceId) const; inline TInt SetViewport (const TRect& aViewport); inline void GetViewport (TRect& aViewport) const; inline TInt SetOrientation (CFbsBitGc::TGraphicsOrientation aOrientation); inline CFbsBitGc::TGraphicsOrientation Orientation() const; inline TInt SetExtent(const TRect& aExtent); inline void GetExtent(TRect& aExtent) const; inline TBool SupportsAllMembers(); protected: inline TSurfaceConfiguration1(TInt aSize); inline TBool operator == (const TSurfaceConfiguration1& aRhs)const; private: inline TSurfaceConfiguration1(const TSurfaceConfiguration1& /*aSurfaceConfiguration1*/); inline TSurfaceConfiguration1 operator = (const TSurfaceConfiguration1& /*aRhs*/)const; private: TSurfaceId iSurfaceId; CFbsBitGc::TGraphicsOrientation iOrientation; TRect iExtent; TRect iViewport; }; /** The second set of surface configuration attributes containing the flip attribute of the surface, along with a SupportsAllMembers function to help identify which attributes are available. @publishedPartner @prototype */ class TSurfaceConfiguration2: public TSurfaceConfiguration1 { public: inline TSurfaceConfiguration2(); inline TInt SetFlip(TBool aFlip); inline TBool Flip()const; inline TBool SupportsAllMembers(); protected: inline TSurfaceConfiguration2(TInt aSize); inline TBool operator == (const TSurfaceConfiguration2& aRhs)const; private: inline TSurfaceConfiguration2(const TSurfaceConfiguration2& /*aSurfaceConfiguration2*/); inline TSurfaceConfiguration2 operator = (const TSurfaceConfiguration2& /*aRhs*/)const; //iFlip is a x-axis flip TBool iFlip; }; /** TSurfaceConfiguration is provided as a chain of derived classes representing the growing history of the class. @publishedPartner @prototype */ class TSurfaceConfiguration: public TSurfaceConfiguration2 { typedef TSurfaceConfiguration2 TBiggestConfiguration; public: inline TSurfaceConfiguration(); inline TSurfaceConfiguration(const TSurfaceConfiguration& aSurfaceConfiguration); inline TSurfaceConfiguration(TInt aPreferredMaxSize); inline TBool operator == (const TSurfaceConfiguration& aRhs)const { return TSurfaceConfiguration2::operator==(aRhs); } private: inline TSurfaceConfiguration operator = (const TSurfaceConfiguration& /*aRhs*/); }; #include <graphics/surfaceconfiguration.inl> #endif // SURFACECONFIGURATION_H