diff -r 000000000000 -r 5d03bc08d59c graphicsdeviceinterface/screendriver/smomap/sccol16.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graphicsdeviceinterface/screendriver/smomap/sccol16.cpp Tue Feb 02 01:47:50 2010 +0200 @@ -0,0 +1,125 @@ +// Copyright (c) 2003-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 16 bpp color screen. +// Include files +// +// + +/** + @file +*/ +/********************************************************************/ +#include +#include +#include +#include "scdraw.h" + +/********************************************************************/ +/* Implementation of CDrawSixteenBppScreenBitmap class */ +/********************************************************************/ +void CDrawSixteenBppScreenBitmap::SetSize(const TSize& aSize) + { + CDrawBitmap::SetSize(aSize); + __ASSERT_DEBUG(iSize == aSize, User::Invariant()); + iLongWidth = iScanLineWords *2; + } +void CDrawSixteenBppScreenBitmap::SetDisplayMode(CFbsDrawDevice* aDrawDevice) + { + CopyOldSettings(aDrawDevice) ; + InitScreen() ; + } + +TInt CDrawSixteenBppScreenBitmap::HorzTwipsPerThousandPixels() const + { + if (iSize.iWidth == 0) + return 0 ; + TMachineInfoV1Buf miBuf ; + UserHal::MachineInfo(miBuf) ; + return miBuf().iPhysicalScreenSize.iWidth * 1000 / iSize.iWidth ; + } + +TInt CDrawSixteenBppScreenBitmap::VertTwipsPerThousandPixels() const + { + if (iSize.iHeight == 0) + return 0 ; + + TMachineInfoV1Buf miBuf ; + UserHal::MachineInfo(miBuf) ; + return miBuf().iPhysicalScreenSize.iHeight * 1000 / iSize.iHeight ; + } + +/** +This function initialize the palette. In this mode, there is no palette +defined +*/ +TInt CDrawSixteenBppScreenBitmap::InitScreen() + { + return KErrNone ; + } + +/** +Constructs the CDrawSixteenBppScreenBitmap object. +@param aScreenNo Screen number. It will be used in HAL::Get() calls. +@param aBitmapAddress The screen memory address. +@param aSize Screen size +@return System-wide error codes, KErrNone if the construction was successfull. +*/ +TInt CDrawSixteenBppScreenBitmap::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; + + CDrawBitmap::iScanLineWords = linepitchInBytes / 4; + ret = CDrawSixteenBppBitmap::Construct(aSize); + if (ret != KErrNone) + return ret ; + + /* Set the pointer on the first pixel */ + TInt offsetToFirstPixel = displayMode; + ret = HAL::Get(aScreenNo,HALData::EDisplayOffsetToFirstPixel, offsetToFirstPixel); + if (ret != KErrNone) + return ret; + iBits = (TUint32*)((TUint32)aBitmapAddress + offsetToFirstPixel); + + return KErrNone ; + } + +/** +Define the screen orientation available +*/ +void CDrawSixteenBppScreenBitmap::OrientationsAvailable(TBool aOrientation[4]) + { + aOrientation[EOrientationNormal] = ETrue ; + aOrientation[EOrientationRotated90] = ETrue ; + aOrientation[EOrientationRotated180] = ETrue ; + aOrientation[EOrientationRotated270] = ETrue ; + } + +/** +Set the current display orientation +*/ +TBool CDrawSixteenBppScreenBitmap::SetOrientation(TOrientation aOrientation) + { + iOrientation = aOrientation ; + return ETrue ; + }