os/graphics/graphicsutils/commongraphicsheaders/inc/displayconfiguration.inl
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
     1 // Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
     2 // All rights reserved.
     3 // This component and the accompanying materials are made available
     4 // under the terms of "Eclipse Public License v1.0"
     5 // which accompanies this distribution, and is available
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 //
     8 // Initial Contributors:
     9 // Nokia Corporation - initial contribution.
    10 //
    11 // Contributors:
    12 //
    13 // Description:
    14 //
    15 
    16 /**
    17  @file
    18  @publishedPartner
    19  @prototype
    20 */
    21 
    22 #ifndef _DISPLAYCONFIGURATION_INL__INCLUDED_
    23 #define _DISPLAYCONFIGURATION_INL__INCLUDED_
    24 
    25 //
    26 //
    27 // Complete implementation of Base class
    28 //
    29 //
    30 inline TInt TDisplayConfigurationBase::Version() const
    31 	{
    32 	return iVersion;
    33 	}
    34 
    35 inline void TDisplayConfigurationBase::Clear(TAttribute aAttribute)
    36 	{
    37 	iDefined.Clear(+aAttribute);
    38 	}
    39 
    40 inline void TDisplayConfigurationBase::ClearAll()
    41 	{
    42 	iDefined.ClearAll();
    43 	}
    44 
    45 inline void TDisplayConfigurationBase::Panic(TInt aPanicCode)
    46 	{
    47 	_LIT(KCategory,"DISPLAYCONFIG");
    48 	User::Panic(KCategory,aPanicCode);
    49 	}
    50 
    51 inline TBool TDisplayConfigurationBase::IsDefined(TAttribute aAttribute) const
    52 	{
    53 	//If we have more than 32 attributes then this code may need a rewrite.
    54 	__ASSERT_COMPILE(EAttributeMax<=32);
    55 	return  iDefined.IsSet(+aAttribute);
    56 	}
    57 
    58 inline TDisplayConfigurationBase::TDisplayConfigurationBase(TInt aVersion)
    59 	{
    60 	if (aVersion < sizeof(*this))
    61 		{
    62 		Panic(EPanicConfigInvalid);
    63 		}
    64 	iVersion=aVersion;
    65 	//default constructor for iDefined sets all-zero.
    66 	//Members do not need zapping to zero because they are disabled in iDefined
    67 	}
    68 
    69 
    70 inline TBool TDisplayConfigurationBase::operator == (const TDisplayConfigurationBase& aRhs) const
    71 	{
    72 	return (aRhs.Version()== Version()) && (const_cast<TBitFlags32&>(aRhs.iDefined) == iDefined );
    73 	}
    74 //
    75 //
    76 // Complete implementation of V1 class
    77 //
    78 //
    79 inline TDisplayConfiguration1::TDisplayConfiguration1():TDisplayConfigurationBase(sizeof(*this))
    80 		,iResolution(TSize::EUninitialized)
    81 	{}
    82 
    83 inline TDisplayConfiguration1::TDisplayConfiguration1(TInt aVersion):TDisplayConfigurationBase(aVersion)
    84 		,iResolution(TSize::EUninitialized)
    85 	{
    86 	if (aVersion > sizeof(TDisplayConfigurationBase) &&
    87 			aVersion < sizeof(*this))
    88 		{
    89 		Panic(EPanicConfigInvalid);
    90 		}
    91 	}
    92 
    93 inline void TDisplayConfiguration1::SetResolution(const TSize& aSize)
    94 	{
    95 	if (MemberAccessible(iResolution))
    96 		{
    97 		if (aSize.iWidth<0 || aSize.iHeight<0)
    98 			{
    99 			Panic(EPanicNegResolution);
   100 			}
   101 		if ((aSize.iWidth>0 && aSize.iHeight==0)||
   102 				(aSize.iWidth==0 && aSize.iHeight>0))
   103 			{
   104 			Panic(EPanicSemiZeroResolution);
   105 			}
   106 		iDefined.Set(+EResolution);
   107 		iResolution=aSize;
   108 		}
   109 	}
   110 
   111 inline TBool TDisplayConfiguration1::GetResolution(TSize& aSize) const
   112 	{
   113 	if (MemberAccessible(iResolution) && IsDefined(EResolution))
   114 		{
   115 		aSize=iResolution;
   116 		return ETrue;
   117 		}		
   118 	return  EFalse;
   119 	}
   120 
   121 //Accessor for rotation member (index)
   122 inline void TDisplayConfiguration1::SetRotation(TRotation aOrientation)
   123 	{
   124 	if (MemberAccessible(iRotation))
   125 		{
   126 		if ((TUint)aOrientation>=(TUint)ERotationIllegal)
   127 			{
   128 			Panic(EPanicIllegalRotation);
   129 			}
   130 		iDefined.Set(+ERotation);
   131 		iRotation=aOrientation;
   132 		}
   133 	
   134 	}
   135 //Accessor for rotation member (index)
   136 inline TBool TDisplayConfiguration1::GetRotation(TRotation& aOrientation)const
   137 	{
   138 	if (MemberAccessible(iRotation) && IsDefined(ERotation))
   139 		{
   140 		aOrientation=static_cast<TRotation>(iRotation);
   141 		return ETrue;
   142 		}
   143 	return EFalse;
   144 	}
   145 //Accessor for resolution value
   146 inline void TDisplayConfiguration1::SetResolutionTwips(const TSize& aSize)
   147 	{
   148 	if (MemberAccessible(iTwipsSize))
   149 		{
   150 		if (aSize.iWidth<0 || aSize.iHeight<0)
   151 			{
   152 			Panic(EPanicNegTwips);
   153 			}
   154 		if ((aSize.iWidth>0 && aSize.iHeight==0)||
   155 				(aSize.iWidth==0 && aSize.iHeight>0))
   156 			{
   157 			Panic(EPanicSemiZeroTwips);
   158 			}
   159 		iDefined.Set(+EResolutionTwips);
   160 		iTwipsSize=aSize;
   161 		}
   162 	}
   163 //Accessor for resolution value
   164 inline TBool TDisplayConfiguration1::GetResolutionTwips(TSize& aSize) const
   165 	{
   166 	if (MemberAccessible(iTwipsSize) && IsDefined(EResolutionTwips))
   167 		{
   168 		aSize=iTwipsSize;
   169 		return ETrue;
   170 		}
   171 	return EFalse;
   172 	}
   173 
   174 inline TBool TDisplayConfiguration1::operator == (const TDisplayConfiguration1& aRhs)const
   175 	{
   176 	if (!TDisplayConfigurationBase::operator ==(aRhs))
   177 		return EFalse;	//Check for earlier version compatability
   178 	if (Version()<sizeof(*this))
   179 		return ETrue;	//If the objects are smaller than this then the check is complete
   180 	
   181 	TBool isAttrEqual = ETrue;
   182 	if(IsDefined(EResolution))
   183 		{
   184 		isAttrEqual = isAttrEqual&(aRhs.iResolution == iResolution);
   185 		}
   186 	if(IsDefined(ERotation))
   187 		{
   188 		isAttrEqual = isAttrEqual&(aRhs.iRotation == iRotation);
   189 		}
   190 	if(IsDefined(EResolutionTwips))
   191 		{
   192 		isAttrEqual = isAttrEqual&(aRhs.iTwipsSize == iTwipsSize);
   193 		}
   194 	
   195 	return isAttrEqual;
   196 	}
   197 
   198 //
   199 //
   200 // Complete implementation of v2 class (goes here)
   201 //
   202 //
   203 
   204 
   205 //
   206 //
   207 // Complete implementation of Wrapper class
   208 //
   209 //
   210 inline TDisplayConfiguration::TDisplayConfiguration(const TDisplayConfiguration& aDisplayConfiguration):
   211 	TDisplayConfigurationTop(TDisplayConfiguration().Version())
   212 	{
   213 	TInt tempSize = aDisplayConfiguration.Version();
   214 	if (tempSize > TDisplayConfiguration().Version())
   215 		{
   216 		tempSize = TDisplayConfiguration().Version();
   217 		}
   218 	Mem::Copy(this, &aDisplayConfiguration, tempSize);
   219 	//This has copied size for higher version features...
   220 	iVersion = tempSize;
   221 	//This has copied set flags for higher version features...
   222 	TInt flags=iDefined.Value();
   223 	//If we have more than 32 attributes then this code will need a rewrite.
   224 	__ASSERT_COMPILE(EAttributeMax<=32);
   225 	flags&=(1<<EAttributeMax)-1;
   226 	iDefined.SetValue(flags);
   227 	}
   228 
   229 inline TDisplayConfiguration::TDisplayConfiguration(TInt aVersion):
   230 	TDisplayConfigurationTop(aVersion)
   231 	{
   232 	if (TDisplayConfiguration().Version() > aVersion)
   233 		{
   234 		iVersion = aVersion;
   235 		}
   236 	}
   237 
   238 #endif // _DISPLAYCONFIGURATION__INCLUDED_