mmplugins/mmfwplugins/src/Plugin/subtitle/common/mmfsubtitlegraphicmessage.h
author William Roberts <williamr@symbian.org>
Thu, 22 Jul 2010 16:47:59 +0100
branchGCC_SURGE
changeset 36 6320e299b97a
parent 0 40261b775718
permissions -rw-r--r--
Catchup to latest Symbian^4

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

/**
 @file
 @internalComponent
*/

#ifndef MMFSUBTITLEGRAPHICMESSAGE_H
#define MMFSUBTITLEGRAPHICMESSAGE_H

#include <e32std.h>
#include <s32strm.h>

/*
Defines the message classes for communication between the MMF CRP 
subtitle rendering client and the WSERV CRP graphic plug-in
*/


enum TSubtitleGraphicMessage
	{
	ESubtitleCrpMessageInit 		= 10,
	ESubtitleCrpMessageInitSimple 	= 20,
	ESubtitleCrpMessageClear 		= 30,
	ESubtitleCrpMessageDrawFrame 	= 40,	
	ESubtitleCrpMessageSwapFrame 	= 50
	};

/**
Base class for all CRP messages
*/
class TSubtitleGraphicMessageBase
{
public:
	TSubtitleGraphicMessageBase(TSubtitleGraphicMessage aMsgType);

protected:
	TInt8 iMsgType;
};

/**
Initialise the CRP
Passes two bitmap handles to the CRP
@see CMMFSubtitleGraphic::Initialize(TInt aBuffer1, TInt aBuffer2);
*/
class TSubtitleCrpMsgInit : public TSubtitleGraphicMessageBase
	{
public:
	TSubtitleCrpMsgInit();
	TSubtitleCrpMsgInit(TInt aBitmapHandle1, TInt aBitmapHandle2);

public:
	TInt iBitmapHandle1;
	TInt iBitmapHandle2;
	};

/**
Initialise the CRP
@see CMMFSubtitleGraphic::Initialize()
*/
class TSubtitleCrpMsgInitSimple : public TSubtitleGraphicMessageBase
	{
public:
	TSubtitleCrpMsgInitSimple();
	};

/**
Request that the CRP clears all content from the window
@see CMMFSubtitleGraphic::Clear()
*/
class TSubtitleCrpMsgClear : public TSubtitleGraphicMessageBase
	{
public: 
	TSubtitleCrpMsgClear();
	};

/**
Requests that the CRP draws a frame indicated by the CFBSBitmap handle provided
@see CMMFSubtitleGraphic::DrawFrame(TInt aFrameHandle, TRect& aDirtyRegion,
     TTimeIntervalMicroSeconds& aDisplayDuration)
*/
class TSubtitleCrpMsgDrawFrame : public TSubtitleGraphicMessageBase
	{
public:
	TSubtitleCrpMsgDrawFrame();
	TSubtitleCrpMsgDrawFrame(TInt aBitmapHandle, const TRect& aDirtyRegion, const TTimeIntervalMicroSeconds& aDisplayDuration);

public:	
	TInt iBitmapHandle;
	TRect iDirtyRegion;
	TTimeIntervalMicroSeconds iDisplayDuration;
	};

/**
Request that the CRP draw the content in the current back buffer.  Assumes that the CRP
has been intialized with TSubtitleCrpMsgInit
@see CMMFSubtitleGraphic::SwapFrame(TInt aExpectedBuffer, 
 	TTimeIntervalMicroSeconds& aDisplayDuration, const TRect& aDirtyRegion)
*/
class TSubtitleCrpMsgRenderSwapFrame : public TSubtitleGraphicMessageBase
	{
public:
	TSubtitleCrpMsgRenderSwapFrame();
	TSubtitleCrpMsgRenderSwapFrame(TInt aExpectedFrame, const TRect& aDirtyRegion, const TTimeIntervalMicroSeconds& aDisplayDuration);
	
public:
	TInt iExpectedFrame;
	TTimeIntervalMicroSeconds iDisplayDuration;
	TRect iDirtyRegion;
	};
	
#endif