--- /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 <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