author | Masaki Hosaka <hosaka@isb.co.jp> |
Thu, 25 Mar 2010 11:21:36 +0900 | |
branch | RCL_3 |
changeset 9 | 9ae0fe04e757 |
child 64 | 92a82bc706f7 |
permissions | -rw-r--r-- |
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 |