mmplugins/cameraplugins/source/webcamera/ecamwebcameravfactive.h
author Masaki Hosaka <hosaka@isb.co.jp>
Thu, 25 Mar 2010 11:21:36 +0900
branchRCL_3
changeset 9 9ae0fe04e757
child 64 92a82bc706f7
permissions -rw-r--r--
Add web camera plug-ins and test camera application.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
     1
/*
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
     2
* Copyright (c) 2010 ISB.
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
     3
* All rights reserved.
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
     4
* This component and the accompanying materials are made available
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
     5
* under the terms of the "Symbian Foundation License v1.0"
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
     6
* which accompanies this distribution, and is available
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
     7
* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
     8
*
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
     9
* Initial Contributors:
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    10
* ISB - Initial contribution
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    11
*
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    12
* Contributors:
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    13
*
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    14
* Description:
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    15
*
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    16
*/
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    17
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    18
#ifndef ECAMWEBCAMERAVFACTIVE_H
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    19
#define ECAMWEBCAMERAVFACTIVE_H
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    20
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    21
#include "ecamwebcameraplugin.h"
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    22
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    23
/**
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    24
 *  Perform a viewfinder function.
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    25
 */
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    26
class CWebCameraVfActive : public CActive
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    27
						 , public MDirectScreenAccess
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    28
	{
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    29
public:
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    30
	 /**
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    31
     * Two-phased constructor.
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    32
     * @param aOwner pointer to callback object.
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    33
     * @param aDriver reference to driver.
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    34
     */
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    35
	static CWebCameraVfActive* NewL(MWebCameraVfActiveCallBack* aOwner, RWebcameraDevice& aDriver);
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    36
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    37
	CWebCameraVfActive(MWebCameraVfActiveCallBack* aOwner, RWebcameraDevice& aDriver);
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    38
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    39
	/**> Destructor */
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    40
	~CWebCameraVfActive();
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    41
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    42
	/** 
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    43
	Starts transfer of view finder data to the given portion of the screen using
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    44
	direct screen access.
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    45
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    46
	The aScreenRect parameter is in screen co-ordinates and may be modified if,
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    47
	eg, the camera requires the destination to have a certain byte alignment, etc.
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    48
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    49
    @param  aWs 
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    50
	        Window server session.
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    51
	@param  aScreenDevice 
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    52
	        Screen device.
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    53
	@param  aWindow 
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    54
	        Displayable window.
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    55
	@param  aScreenRect 
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    56
	        Portion of the screen to which view finder data is to be
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    57
	        transferred. This is in screen co-ordinates and may be modified if, for example,
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    58
	        the camera requires the destination to have a certain byte alignment.
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    59
	*/
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    60
	void StartViewFinderDirectL(RWsSession& aWs, CWsScreenDevice& aScreenDevice, RWindowBase& aWindow, TRect& aScreenRect, TRect& aClipRect);
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    61
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    62
	/** 
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    63
	Stops transfer of view finder data to the screen. 
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    64
	*/
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    65
	void StopViewFinder();
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    66
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    67
	/** 
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    68
	Queries whether the view finder is active.
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    69
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    70
	@return  ETrue if the view finder is active. EFalse if the view finder is not
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    71
	         active. 
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    72
	*/
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    73
	TBool ViewFinderActive();
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    74
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    75
private:
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    76
	/** 
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    77
	from MAbortDirectScreenAccess
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    78
	
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    79
	This function is called by the window server when direct screen access must stop
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    80
	(for example because a dialogue is moved in front of the area where direct screen access is taking place).
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    81
	
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    82
	@param  aScreenDevice 
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    83
			The reason why direct screen access was terminated. 
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    84
	*/
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    85
	virtual void AbortNow(RDirectScreenAccess::TTerminationReasons aReason);
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    86
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    87
private: 
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    88
	/** 
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    89
	from 	from MDirectScreenAccess
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    90
	
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    91
	This function is called by the window server as soon as direct screen access can resume.
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    92
	
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    93
	@param  aScreenDevice 
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    94
			Provides the reason why direct screen access was terminated. 
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    95
	*/
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    96
	virtual void Restart(RDirectScreenAccess::TTerminationReasons aReason);
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    97
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    98
private:
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    99
	void ConstructL();
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   100
	
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   101
	/** 
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   102
	Start viewfinder process.
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   103
	*/
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   104
	void Start();
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   105
	
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   106
	/** 
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   107
	Draw the image of the view finder on screen.
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   108
	*/
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   109
	void UpdateViewL();
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   110
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   111
private:
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   112
	void RunL();
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   113
	void DoCancel();
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   114
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   115
private:
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   116
	MWebCameraVfActiveCallBack*		iOwner;				///< origin of start.
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   117
	TBool							iViewFinderActive;	///< Status of viewfinder
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   118
	RWebcameraDevice				iDriver;			///< Camera driver
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   119
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   120
	CFbsBitmap*						iVfBitmap;			///< Bitmap data of viewfinder.
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   121
	HBufC8*							iVfBuf;				///< Data buffer of viewfinder.
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   122
	TPtr8							iVfBufPtr;			///< Pointer to data buffer of viewfinder.
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   123
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   124
	CDirectScreenAccess*			iDSA;				///< DirectScreenAccess object.
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   125
	TRect							iScreenRect;		///< The region to draw.
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   126
	TRect							iClipRect;			///< The clipping region to draw.
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   127
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   128
	TBool							iTestFlug;			///< for test
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   129
	};
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   130
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   131
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   132
#endif // ECAMWEBCAMERAPLUGIN_H