os/graphics/graphicsdeviceinterface/screendriver/smomap/sccol16.cpp
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
sl@0
     1
// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
sl@0
     2
// All rights reserved.
sl@0
     3
// This component and the accompanying materials are made available
sl@0
     4
// under the terms of "Eclipse Public License v1.0"
sl@0
     5
// which accompanies this distribution, and is available
sl@0
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0
     7
//
sl@0
     8
// Initial Contributors:
sl@0
     9
// Nokia Corporation - initial contribution.
sl@0
    10
//
sl@0
    11
// Contributors:
sl@0
    12
//
sl@0
    13
// Description:
sl@0
    14
// This module implements the class for a 16 bpp color screen.
sl@0
    15
// Include files                                                   
sl@0
    16
// 
sl@0
    17
//
sl@0
    18
sl@0
    19
/**
sl@0
    20
 @file
sl@0
    21
*/
sl@0
    22
/********************************************************************/
sl@0
    23
#include <hal.h>
sl@0
    24
#include <e32std.h>
sl@0
    25
#include <bitdraw.h>
sl@0
    26
#include "scdraw.h"
sl@0
    27
sl@0
    28
/********************************************************************/
sl@0
    29
/*  Implementation of CDrawSixteenBppScreenBitmap class             */
sl@0
    30
/********************************************************************/
sl@0
    31
void CDrawSixteenBppScreenBitmap::SetSize(const TSize& aSize) 
sl@0
    32
	{
sl@0
    33
    CDrawBitmap::SetSize(aSize);
sl@0
    34
    __ASSERT_DEBUG(iSize == aSize, User::Invariant());
sl@0
    35
	iLongWidth = iScanLineWords *2;
sl@0
    36
	}
sl@0
    37
void CDrawSixteenBppScreenBitmap::SetDisplayMode(CFbsDrawDevice* aDrawDevice)
sl@0
    38
	{
sl@0
    39
	CopyOldSettings(aDrawDevice) ;
sl@0
    40
	InitScreen() ;
sl@0
    41
	}
sl@0
    42
sl@0
    43
TInt CDrawSixteenBppScreenBitmap::HorzTwipsPerThousandPixels() const
sl@0
    44
	{
sl@0
    45
	if (iSize.iWidth == 0)
sl@0
    46
		return 0 ;
sl@0
    47
	TMachineInfoV1Buf miBuf ;
sl@0
    48
	UserHal::MachineInfo(miBuf) ;
sl@0
    49
	return miBuf().iPhysicalScreenSize.iWidth * 1000 / iSize.iWidth ;
sl@0
    50
	}
sl@0
    51
sl@0
    52
TInt CDrawSixteenBppScreenBitmap::VertTwipsPerThousandPixels() const
sl@0
    53
	{
sl@0
    54
	if (iSize.iHeight == 0)
sl@0
    55
		return 0 ;
sl@0
    56
sl@0
    57
	TMachineInfoV1Buf miBuf ;
sl@0
    58
	UserHal::MachineInfo(miBuf) ;
sl@0
    59
	return miBuf().iPhysicalScreenSize.iHeight * 1000 / iSize.iHeight ;
sl@0
    60
	}
sl@0
    61
sl@0
    62
/**
sl@0
    63
This function initialize the palette. In this mode, there is no palette
sl@0
    64
defined
sl@0
    65
*/
sl@0
    66
TInt CDrawSixteenBppScreenBitmap::InitScreen()
sl@0
    67
	{
sl@0
    68
	return KErrNone ;
sl@0
    69
	}
sl@0
    70
sl@0
    71
/**
sl@0
    72
Constructs the CDrawSixteenBppScreenBitmap object.
sl@0
    73
@param aScreenNo Screen number. It will be used in HAL::Get() calls.
sl@0
    74
@param aBitmapAddress The screen memory address.
sl@0
    75
@param aSize Screen size
sl@0
    76
@return System-wide error codes, KErrNone if the construction was successfull.
sl@0
    77
*/
sl@0
    78
TInt CDrawSixteenBppScreenBitmap::ConstructScreenL(TInt aScreenNo, TAny* aBitmapAddress, TSize aSize)
sl@0
    79
	{
sl@0
    80
	iScreenNo = aScreenNo;
sl@0
    81
	TInt displayMode;
sl@0
    82
    
sl@0
    83
	TInt ret = HAL::Get(aScreenNo, HALData::EDisplayMode, displayMode);
sl@0
    84
	if (ret != KErrNone)
sl@0
    85
		return ret;
sl@0
    86
sl@0
    87
	TInt linepitchInBytes = displayMode;
sl@0
    88
	ret = HAL::Get(aScreenNo,HALData::EDisplayOffsetBetweenLines,linepitchInBytes);
sl@0
    89
	if (ret != KErrNone)
sl@0
    90
		return ret;
sl@0
    91
sl@0
    92
	CDrawBitmap::iScanLineWords = linepitchInBytes / 4;
sl@0
    93
	ret = CDrawSixteenBppBitmap::Construct(aSize);
sl@0
    94
	if (ret != KErrNone)
sl@0
    95
		return ret ;
sl@0
    96
sl@0
    97
	/* Set the pointer on the first pixel */
sl@0
    98
	TInt offsetToFirstPixel = displayMode;
sl@0
    99
	ret = HAL::Get(aScreenNo,HALData::EDisplayOffsetToFirstPixel, offsetToFirstPixel);
sl@0
   100
	if (ret != KErrNone)
sl@0
   101
		return ret;
sl@0
   102
	iBits = (TUint32*)((TUint32)aBitmapAddress + offsetToFirstPixel);
sl@0
   103
	
sl@0
   104
	return KErrNone ;
sl@0
   105
	}
sl@0
   106
sl@0
   107
/**
sl@0
   108
Define the screen orientation available
sl@0
   109
*/
sl@0
   110
void CDrawSixteenBppScreenBitmap::OrientationsAvailable(TBool aOrientation[4])
sl@0
   111
	{
sl@0
   112
	aOrientation[EOrientationNormal]     = ETrue ;
sl@0
   113
	aOrientation[EOrientationRotated90]  = ETrue ;
sl@0
   114
	aOrientation[EOrientationRotated180] = ETrue ;
sl@0
   115
	aOrientation[EOrientationRotated270] = ETrue ;
sl@0
   116
	}
sl@0
   117
sl@0
   118
/**
sl@0
   119
Set the current display orientation
sl@0
   120
*/
sl@0
   121
TBool CDrawSixteenBppScreenBitmap::SetOrientation(TOrientation aOrientation)
sl@0
   122
	{
sl@0
   123
	iOrientation = aOrientation ;
sl@0
   124
	return ETrue ;
sl@0
   125
	}