diff -r 000000000000 -r 5d03bc08d59c windowing/windowserver/inc/Graphics/surfaceconfiguration.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/windowing/windowserver/inc/Graphics/surfaceconfiguration.h Tue Feb 02 01:47:50 2010 +0200 @@ -0,0 +1,129 @@ +// 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 +#include +#include + +/** +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 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 +#endif // SURFACECONFIGURATION_H