graphicsutils/commongraphicsheaders/inc/surface.h
author Faisal Memon <faisal.memon@nokia.com>
Fri, 13 Aug 2010 15:11:40 +0100
branchbug235_bringup_0
changeset 146 4d1fe4a7ce83
parent 0 5d03bc08d59c
permissions -rw-r--r--
Support bug 235 by providing interface layers in graphics. First is the surface manager API, to be implemented in graphics.nokia, second is the adptation-to-adaption interface for the guestvideodriver and virtual video hardware. This allows graphics.nokia to provide a syborg version of surface manager driver based upon the guestvideodriver, implemented in the graphics.simulator package. This submission includes a version 2 syntax package definition file purely for those components of interest to bug 235. This makes selective compilation of the graphics package easier. A further submission will prune down the surface manager component in the graphics package.

// Copyright (c) 2006-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:
// surface
// 
//

/**
 @file
 @publishedPartner
 @released
*/
#ifndef __SURFACE_H__
#define __SURFACE_H__

#include <e32def.h>

class TSurfaceId
	{
	public:
	enum
		{
		EInvalidSurface = 0,
		EScreenSurface = 1,
		EStreamHandle = 2,
		EAdaptationSurfaceBase = 33,
		};
	struct TSurfaceUsage 			 //TSurfaceId::TSurfaceUsage::
		{
		enum	
			{
			//screen usage
			EScreenField=0,
			EHalField=1,
			EHalFlippedFlag=0x80000000,
			ETypeGuidField=2,
			//stream handle usage
			EObjectRefField=0,
			//general class usage
			ETypeClassField=3,
			ETypeClassShift=24
			};
		};
	typedef TSurfaceUsage TScreenSurfaceUsage; 			 //Backward compatibility
	
	
	inline static TSurfaceId CreateNullId(void) 
		{
		TSurfaceId id = TSurfaceId();
		for (TInt i = 0; i < 4; ++i) id.iInternal[i] = 0; 
		return id;
		};
	inline TBool IsNull() const 
		{
		return ((iInternal[0] == 0) &&
				(iInternal[1] == 0) &&
				(iInternal[2] == 0) &&
				(iInternal[3] == 0));
			
		};
	inline TInt Type() const {return (TInt)(iInternal[3] >> 24);}
	public:
	TUint32 iInternal[4];
	};


inline bool operator == (const TSurfaceId& lhs, const TSurfaceId& rhs)
	{
	return ((lhs.iInternal[0] == rhs.iInternal[0]) &&
			(lhs.iInternal[1] == rhs.iInternal[1]) &&
			(lhs.iInternal[2] == rhs.iInternal[2]) &&
			(lhs.iInternal[3] == rhs.iInternal[3]));
	}

inline bool operator != (const TSurfaceId& lhs, const TSurfaceId& rhs)
	{
	return !(lhs == rhs);
	}

#endif