annotate DemoCube/src/DemoCubeAppView.cpp @ 5:f546bb5370c7 default tip

Added a readme and a TODO in the source code.
author Atul Varma <varmaa@toolness.com>
date Tue, 12 Feb 2008 19:09:21 -0600
parents 0a2b5a968ce7
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
1 /*=====================================================================
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
2
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
3 Copyright © 2007 Nokia Corporation. All rights reserved.
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
4
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
5 ======================================================================*/
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
6
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
7 /*
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
8 ============================================================================
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
9 Name : DemoCubeAppView.cpp
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
10 Author : Nokia Computer Vision Team in NRC Palo Alto
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
11 Copyright : Your copyright notice
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
12 Description : Application view implementation
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
13 ============================================================================
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
14 */
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
15
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
16 // INCLUDE FILES
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
17 #include <coemain.h>
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
18 #include "DemoCubeAppView.h"
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
19
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
20 #include "DemoCamera.h"
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
21 #include "ncvImage.h"
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
22 #include "ncvCamus.h"
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
23 #include "ncvOpticalFlow.h"
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
24 #include "ncvEgoMovement.h"
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
25 #include "DemoCube.h"
1
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
26 #include "ImageLoader.h"
0
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
27
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
28 #define PADDING_WIDTH 40
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
29 #define PADDING_HEIGHT 30
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
30
1
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
31 _LIT( KPicture, "firefox.png" );
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
32
0
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
33 // ============================ MEMBER FUNCTIONS ===============================
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
34
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
35 // -----------------------------------------------------------------------------
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
36 // CDemoCubeAppView::NewL()
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
37 // Two-phased constructor.
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
38 // -----------------------------------------------------------------------------
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
39 //
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
40 CDemoCubeAppView* CDemoCubeAppView::NewL(const TRect& aRect, CDemoCubeAppUi* aAppUi)
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
41 {
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
42 CDemoCubeAppView* self = new(ELeave) CDemoCubeAppView(aAppUi);
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
43 CleanupStack::PushL(self);
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
44 self->ConstructL(aRect);
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
45 CleanupStack::Pop();
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
46 return self;
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
47 }
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
48
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
49 // -----------------------------------------------------------------------------
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
50 // CDemoCubeAppView::ConstructL()
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
51 // Symbian 2nd phase constructor can leave.
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
52 // -----------------------------------------------------------------------------
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
53 //
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
54 void CDemoCubeAppView::ConstructL( const TRect& aRect )
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
55 {
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
56 Reset();
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
57
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
58 if ( CCamera::CamerasAvailable() ) //Yingen added for detecting camera
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
59 {//Yingen added for detecting camera
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
60 iCamera = CDemoCamera::NewL(aRect.Size() - TSize(PADDING_WIDTH, PADDING_HEIGHT), this);
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
61 iCamera->Acquire();
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
62
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
63 iCamusImage = CNokiaCVImage::NewL();
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
64 iCamusImage->CreateL(iBitmapSize, EColor16M);
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
65 }//Yingen added for detecting camera
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
66 iCube = CDemoCube::NewL(aRect);
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
67 iCubePoints = new(ELeave) CArrayFixFlat<TPoint>(5);
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
68 for(TInt i = 0; i < 5; i++)
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
69 {
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
70 TPoint tmp(0, 0);
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
71 iCubePoints->AppendL(tmp);
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
72 }
1
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
73
0
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
74 // Create a window for this application view
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
75 CreateWindowL();
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
76
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
77 // Set the windows size
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
78 SetRect( aRect );
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
79
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
80 // Activate the window, which makes it ready to be drawn
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
81 ActivateL();
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
82 }
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
83
1
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
84 void CDemoCubeAppView::StartImgLoader()
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
85 {
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
86 // was 50,50
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
87 TSize iSize(493, 305);
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
88 TInt color;
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
89 TInt gray;
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
90 TDisplayMode displayMode = CEikonEnv::Static()->WsSession().GetDefModeMaxNumColors( color, gray );
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
91
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
92 iPicture = new (ELeave) CFbsBitmap;
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
93 if (iPicture)
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
94 iPicture->Create(iSize, displayMode); //EColor16MA
5
f546bb5370c7 Added a readme and a TODO in the source code.
Atul Varma <varmaa@toolness.com>
parents: 1
diff changeset
95 // TODO: We're hard-coding the 'c' drive here, but the user
f546bb5370c7 Added a readme and a TODO in the source code.
Atul Varma <varmaa@toolness.com>
parents: 1
diff changeset
96 // could've installed the program to a different drive. Obtain
f546bb5370c7 Added a readme and a TODO in the source code.
Atul Varma <varmaa@toolness.com>
parents: 1
diff changeset
97 // the drive letter dynamically.
1
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
98 iLoader = CImageLoader::NewL( 'c' );
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
99 iLoader->LoadImage( KPicture, iPicture );
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
100 }
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
101
0
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
102 // -----------------------------------------------------------------------------
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
103 // CDemoCubeAppView::CDemoCubeAppView()
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
104 // C++ default constructor can NOT contain any code, that might leave.
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
105 // -----------------------------------------------------------------------------
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
106 //
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
107 CDemoCubeAppView::CDemoCubeAppView(CDemoCubeAppUi* aAppUi) :
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
108 iAppUi(aAppUi),
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
109 iCamera(NULL),
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
110 iCamusImage(NULL),
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
111 iBitmapSize(25, 18),
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
112 iCamus(NULL),
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
113 iOpticalFlow(NULL),
1
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
114 iCube(NULL),
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
115 iLoader(NULL),
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
116 iPicture(NULL)
0
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
117 {
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
118 }
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
119
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
120 void CDemoCubeAppView::Reset()
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
121 {
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
122 iCubeWidth = 10;
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
123 iMove.iX = 0.0;
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
124 iMove.iY = 0.0;
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
125 iAngle = 0.0;
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
126 }
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
127 // -----------------------------------------------------------------------------
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
128 // CDemoCubeAppView::~CDemoCubeAppView()
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
129 // Destructor.
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
130 // -----------------------------------------------------------------------------
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
131 //
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
132 CDemoCubeAppView::~CDemoCubeAppView()
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
133 {
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
134 // No implementation required
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
135 if(iCamera)
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
136 {
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
137 delete iCamera;
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
138 iCamera = NULL;
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
139 }
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
140 if(iCamusImage)
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
141 {
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
142 delete iCamusImage;
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
143 iCamusImage = NULL;
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
144 }
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
145 if(iCamus)
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
146 {
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
147 delete iCamus;
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
148 iCamus = NULL;
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
149 }
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
150 if(iOpticalFlow)
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
151 {
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
152 delete iOpticalFlow;
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
153 iOpticalFlow = NULL;
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
154 }
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
155 if(iCube)
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
156 {
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
157 delete iCube;
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
158 iCube = NULL;
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
159 }
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
160 if(iCubePoints)
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
161 {
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
162 delete iCubePoints;
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
163 iCubePoints = NULL;
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
164 }
1
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
165 if(iLoader)
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
166 {
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
167 delete iLoader;
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
168 iLoader = NULL;
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
169 }
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
170 if(iPicture)
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
171 {
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
172 delete iPicture;
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
173 iPicture = NULL;
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
174 }
0
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
175 }
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
176
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
177 // -----------------------------------------------------------------------------
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
178 // CDemoCubeAppView::Draw()
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
179 // Draws the display.
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
180 // -----------------------------------------------------------------------------
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
181 //
1
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
182 void CDemoCubeAppView::Draw(CFbsBitmap& aBitmap, CArrayFixFlat<TPoint>* aCube)
0
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
183 {
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
184 CWindowGc& gc = SystemGc();
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
185 gc.Activate(Window());
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
186 gc.Clear();
1
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
187 //gc.BitBlt(TPoint(PADDING_WIDTH / 2, PADDING_HEIGHT / 2), &aBitmap);
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
188
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
189
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
190 //gc.BitBlt(TPoint(PADDING_WIDTH / 2, PADDING_HEIGHT / 2), iPicture);
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
191 gc.BitBlt(TPoint( (TInt)iMove.iY.Real(), (TInt)iMove.iX.Real()), iPicture);
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
192 //gc.SetPenColor(TRgb(0xff, 0, 0));
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
193 //gc.DrawPolyLine(aCube);
0
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
194 gc.Deactivate();
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
195 iCoeEnv->WsSession().Flush();
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
196 }
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
197
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
198 void CDemoCubeAppView::CameraReady()
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
199 {
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
200 iCamera->StartFeedL();
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
201 }
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
202
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
203 void CDemoCubeAppView::SetCameraFrame(CFbsBitmap& aBitmap)
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
204 {
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
205 BitmapDownScale(aBitmap);
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
206
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
207 if(!iCamus)
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
208 {
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
209 iCamus = CCamus::NewL(*iCamusImage, 5);
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
210 iOpticalFlow = COpticalFlow::NewL(iCamusImage->Size());
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
211 }
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
212
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
213 iCamus->GetOpticalFlow(*iOpticalFlow, *iCamusImage, CAMUS_SETCAMUSOPTS(CCamus::EMedium, CCamus::EMedium, 3));
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
214 CEgoMovement mean = iOpticalFlow->Mean();
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
215 iMove.iX -= mean.iX * 6.3;
1
0a2b5a968ce7 Modifications that turn this Nokia-supplied DemoCube demo into a web-browser mockup that uses optical flow for panning operations.
Atul Varma <varmaa@toolness.com>
parents: 0
diff changeset
216 iMove.iY -= mean.iY * 6.3;
0
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
217 iAngle += iOpticalFlow->Rotation().Real() * 10.5;
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
218
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
219 //
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
220 iCubeWidth += (TInt)(iOpticalFlow->Depth().Real() * 5);
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
221 iCubeWidth = Max(2, iCubeWidth);
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
222 iCubeWidth = Min(iCubeWidth, 40);
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
223 //
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
224
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
225
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
226 iCube->Calculate(*iCubePoints, (TInt)iMove.iX.Real(), (TInt)iMove.iY.Real(), (TInt)iAngle, iCubeWidth);
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
227
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
228 Draw(aBitmap, iCubePoints);
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
229 }
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
230
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
231 void CDemoCubeAppView::BitmapDownScale(CFbsBitmap& aOriginal)
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
232 {
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
233 const TInt xBlockSize = aOriginal.SizeInPixels().iWidth / iBitmapSize.iWidth;
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
234 const TInt yBlockSize = aOriginal.SizeInPixels().iHeight / iBitmapSize.iHeight;
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
235
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
236 TRgb color;
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
237 TPoint pos(0, 0);
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
238
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
239 CPixelAccess* pa = CPixelAccess::NewLC(iCamusImage);
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
240
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
241
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
242 for(TInt y = 0; y < iBitmapSize.iHeight; y++)
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
243 {
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
244 for(TInt x = 0; x < iBitmapSize.iWidth; x++)
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
245 {
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
246 TInt red = 0;
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
247 TInt green = 0;
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
248 TInt blue = 0;
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
249
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
250 for(TInt j = 0; j < yBlockSize; j++)
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
251 {
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
252 for(TInt i = 0; i < xBlockSize; i++)
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
253 {
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
254 pos.SetXY(x * xBlockSize + i, y * yBlockSize + j);
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
255 aOriginal.GetPixel(color, pos);
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
256 red += color.Red();
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
257 green += color.Green();
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
258 blue += color.Blue();
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
259 }
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
260 }
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
261
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
262 pos.SetXY(x, y);
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
263 pa->SetPos(pos);
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
264 const TInt pixels = xBlockSize * yBlockSize;
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
265 color.SetBlue(blue / pixels);
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
266 color.SetGreen(green / pixels);
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
267 color.SetRed(red / pixels);
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
268 pa->SetRGB(color.Value());
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
269 }
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
270 }
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
271 CleanupStack::Pop(pa);
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
272 delete pa;
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
273 }
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
274
43361e733c66 Origination.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
275 // End of File