mmplugins/cameraplugins/source/webcamera/ecamwebcameravfactive.cpp
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
#include "ecamwebcameravfactive.h"
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    19
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    20
const TInt KVfWidth     = 160;			// viewfinder image width
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    21
const TInt KVfHeight    = 120;			// viewfinder image height
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    22
const TInt KVfLineBytes = KVfWidth * 3;	// bytes of one line
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
//
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    25
// CWebCameraVfActive
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    26
//
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    27
CWebCameraVfActive* 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
    28
	{
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    29
	CWebCameraVfActive* self = new(ELeave) CWebCameraVfActive(aOwner, aDriver);
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    30
	CleanupStack::PushL(self);
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    31
	self->ConstructL();
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    32
	CleanupStack::Pop(self);
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    33
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    34
	return self;
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    35
	}
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::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
				   :CActive(CActive::EPriorityStandard),
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    39
				    iOwner(aOwner),
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    40
				    iDriver(aDriver),
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    41
				    iVfBufPtr(NULL, 0)
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
	CActiveScheduler::Add(this);
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    44
	}
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
CWebCameraVfActive::~CWebCameraVfActive()
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    47
	{
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    48
	delete iVfBitmap;
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    49
	delete iDSA;
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    50
	delete iVfBuf;
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    51
	}
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    52
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    53
void CWebCameraVfActive::ConstructL()
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    54
	{
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    55
	}
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    56
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    57
/**
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    58
* RunL.
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 CWebCameraVfActive::RunL()
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
	TInt wError = iStatus.Int();
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    63
	RDebug::Print(_L("CWebCameraVfActive::RunL wError = %d"), wError);
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
	if (iViewFinderActive)
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
		//The whole view finder start repeats screen update and the data acquisition.
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    68
		UpdateViewL();
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    69
		Start();
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    70
		}
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    71
	}
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
void CWebCameraVfActive::DoCancel()
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
	iDriver.StopViewFinder();
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
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
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
    80
direct screen access.
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
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
    83
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
    84
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    85
@param  aWs 
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    86
        Window server session.
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    87
@param  aScreenDevice 
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    88
        Screen device.
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    89
@param  aWindow 
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    90
        Displayable window.
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    91
@param  aScreenRect 
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    92
        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
    93
        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
    94
        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
    95
*/
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    96
void CWebCameraVfActive::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
    97
	{
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    98
	iScreenRect = aScreenRect;
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
    99
	iClipRect = aClipRect;
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
	// create buffer for view finder data
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   102
	iVfBuf = HBufC8::NewL(KMaxBufSize);
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
	// create DirectScreenAccess
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   105
	delete iDSA;
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   106
	iDSA = NULL;
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   107
	iViewFinderActive = EFalse;
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   108
	iDSA = CDirectScreenAccess::NewL(aWs, aScreenDevice, aWindow, *this);
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   109
	iDSA->StartL();
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   110
	iViewFinderActive = ETrue;
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   111
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   112
	iDSA->Gc()->SetOrigin();
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   113
	if (!iClipRect.IsEmpty())
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
		iDSA->Gc()->SetClippingRect(iClipRect);
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   116
		}
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   117
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   118
	// start view finder
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   119
	// The division transfer is going to support in the next version. 
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   120
	Start();
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   121
	}
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   122
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
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
   125
*/
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   126
void CWebCameraVfActive::StopViewFinder()
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
	if (!iViewFinderActive)
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
		return;
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
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   133
	iViewFinderActive = EFalse;
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   134
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   135
	delete iDSA;
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   136
	iDSA = NULL;
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   137
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   138
	delete iVfBuf;
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   139
	iVfBuf = NULL;
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   140
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   141
	//Stop view finder
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   142
	iDriver.StopViewFinder();
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   143
	Cancel();
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   144
	}
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   145
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   146
/** 
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   147
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
   148
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   149
@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
   150
         active. 
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   151
*/
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   152
TBool CWebCameraVfActive::ViewFinderActive()
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   153
	{
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   154
	return iViewFinderActive;
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   155
	}
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   156
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   157
/** 
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   158
Start viewfinder process.
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   159
*/
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   160
void CWebCameraVfActive::Start()
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   161
	{
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   162
	RDebug::Print(_L("CWebCameraVfActive::Start"));
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   163
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   164
	iVfBufPtr.Set(iVfBuf->Des());
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   165
	iVfBufPtr.SetLength(0);
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   166
	//Start view finder
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   167
	iDriver.StartViewFinder(iStatus, iVfBufPtr);
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   168
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   169
	SetActive();
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   170
	}
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   171
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   172
/** 
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   173
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
   174
*/
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   175
void CWebCameraVfActive::UpdateViewL()
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   176
	{
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   177
	RDebug::Print(_L("CWebCameraVfActive::UpdateViewL"));
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   178
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   179
	delete iVfBitmap;
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   180
	iVfBitmap = NULL;
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   181
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   182
	CFbsBitmap* image = new (ELeave) CFbsBitmap();
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   183
	CleanupStack::PushL(image);
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   184
	User::LeaveIfError(image->Create(TSize(KVfWidth, KVfHeight), EColor16M));
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   185
	CleanupStack::Pop(image);
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   186
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   187
	iVfBitmap = image;
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   188
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   189
// output received data log
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   190
//	RDebug::Print(_L("CWebCameraVfActive::UpdateView iVfBufLength[%d]"), iVfBufPtr.Length());
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   191
//	TBuf<256> hexBuf;
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   192
//	for (TInt i = 0; i < iVfBufPtr.Length(); i++)
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   193
//		{
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   194
//		hexBuf.AppendFormat(_L("%02X "), iVfBufPtr[i]);
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   195
//		if ((i % 16) == 15)
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   196
//			{
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   197
//			RDebug::Print(hexBuf);
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   198
//			hexBuf = KNullDesC;
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   199
//			}
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   200
//		}
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   201
//	RDebug::Print(hexBuf);
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   202
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   203
	// convert buffer data to Bitmap
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   204
	for (TInt height=0; height<KVfHeight; height++)
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   205
		{
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   206
		TInt pos = height * KVfLineBytes;
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   207
		TPtrC8 posptr = iVfBuf->Mid(pos, KVfLineBytes);
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   208
		TBuf8<KVfLineBytes>  buf;
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   209
		buf.Copy(posptr);
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   210
		iVfBitmap->SetScanLine(buf, (KVfHeight-1)-height);
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   211
		}
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   212
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   213
	// view position setting for test application
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   214
	iScreenRect.iTl.iY = 50;
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   215
	iScreenRect.iBr.iY = 169;
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   216
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   217
	// update view
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   218
	iDSA->Gc()->DrawBitmap(iScreenRect, iVfBitmap);
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   219
	iDSA->ScreenDevice()->Update();
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   220
	}
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   221
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   222
/** 
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   223
from MAbortDirectScreenAccess
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   224
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   225
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
   226
(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
   227
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   228
@param  aScreenDevice 
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   229
		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
   230
*/
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   231
void CWebCameraVfActive::AbortNow(RDirectScreenAccess::TTerminationReasons /*aReason*/)
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   232
	{
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   233
	}
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   234
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   235
/** 
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   236
from 	from MDirectScreenAccess
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   237
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   238
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
   239
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   240
@param  aScreenDevice 
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   241
		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
   242
*/
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   243
void CWebCameraVfActive::Restart(RDirectScreenAccess::TTerminationReasons /*aReason*/)
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   244
	{
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   245
	}
9ae0fe04e757 Add web camera plug-ins and test camera application.
Masaki Hosaka <hosaka@isb.co.jp>
parents:
diff changeset
   246