diff -r 000000000000 -r 5d03bc08d59c graphicsdeviceinterface/screendriver/smomap/sccol32ap.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graphicsdeviceinterface/screendriver/smomap/sccol32ap.cpp Tue Feb 02 01:47:50 2010 +0200 @@ -0,0 +1,126 @@ +// 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: +// This module implements the class for a 32ap bpp color screen with premultiplied +// alpha. +// +// + +/** + @file +*/ + +#include +#include +#include +#include "scdraw.h" + + +void CDrawThirtyTwoBppScreenBitmapAlphaPM::SetSize(const TSize& aSize) + { + CDrawBitmap::SetSize(aSize); + __ASSERT_DEBUG(iSize == aSize, User::Invariant()); + iLongWidth = iScanLineWords; + } + +void CDrawThirtyTwoBppScreenBitmapAlphaPM::SetDisplayMode(CFbsDrawDevice* aDrawDevice) + { + CopyOldSettings(aDrawDevice) ; + InitScreen() ; + } + +TInt CDrawThirtyTwoBppScreenBitmapAlphaPM::HorzTwipsPerThousandPixels() const + { + if (iSize.iWidth == 0) + return 0; + + TInt displayMode; + TInt r = HAL::Get(iScreenNo, HAL::EDisplayMode, displayMode); + if (r != KErrNone) + return 0; + + TInt width = displayMode; + r = HAL::Get(iScreenNo, HAL::EDisplayXTwips, width); + if (r != KErrNone) + return 0; + + return (width * 1000) / iSize.iWidth; + } + +TInt CDrawThirtyTwoBppScreenBitmapAlphaPM::VertTwipsPerThousandPixels() const + { + if (iSize.iHeight == 0) + return 0; + + TInt displayMode; + TInt r = HAL::Get(iScreenNo, HAL::EDisplayMode, displayMode); + if (r != KErrNone) + return 0; + TInt height = displayMode; + r = HAL::Get(iScreenNo, HAL::EDisplayYTwips, height); + if (r != KErrNone) + return 0; + + return (height * 1000) / iSize.iHeight; + } + +TInt CDrawThirtyTwoBppScreenBitmapAlphaPM::InitScreen() + { + return KErrNone ; + } + +TInt CDrawThirtyTwoBppScreenBitmapAlphaPM::ConstructScreenL(TInt aScreenNo, TAny* aBitmapAddress, TSize aSize) + { + iScreenNo = aScreenNo; + TInt displayMode; + TInt ret = HAL::Get(aScreenNo, HALData::EDisplayMode, displayMode); + if (ret != KErrNone) + return ret; + + TInt linepitchInBytes = displayMode; + ret = HAL::Get(aScreenNo,HALData::EDisplayOffsetBetweenLines,linepitchInBytes); + if (ret != KErrNone) + return ret; + + iScanLineWords = linepitchInBytes / 4; + ret = CDrawThirtyTwoBppBitmapAlphaPM::Construct(aSize); + if (ret != KErrNone) + return ret; + + TInt offsetToFirstPixel = displayMode; + ret = HAL::Get(aScreenNo,HALData::EDisplayOffsetToFirstPixel, offsetToFirstPixel); + if (ret != KErrNone) + return ret; + + iBits = (TUint32*)((TUint32)aBitmapAddress + offsetToFirstPixel); + return KErrNone; + } + +void CDrawThirtyTwoBppScreenBitmapAlphaPM::OrientationsAvailable(TBool aOrientation[4]) + { + aOrientation[EOrientationNormal] = ETrue ; + aOrientation[EOrientationRotated90] = ETrue ; + aOrientation[EOrientationRotated180] = ETrue ; + aOrientation[EOrientationRotated270] = ETrue ; + } + +TBool CDrawThirtyTwoBppScreenBitmapAlphaPM::SetOrientation(TOrientation aOrientation) + { + iOrientation = aOrientation ; + return ETrue ; + } + + + + +