RAII applied. Memory leak fixed.
[framework/osp/vision.git] / src / FUixVision_QrCodeRecognizerImpl.cpp
1 //
2 // Open Service Platform
3 // Copyright (c) 2013 Samsung Electronics Co., Ltd.
4 //
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 //     http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17
18 #include "FUixVision_QrCodeRecognizerImpl.h"
19 #include "FUixVision_QrCodeObjectImpl.h"
20
21 namespace Tizen { namespace Uix { namespace Vision
22 {
23
24 _QrCodeRecognizerImpl::_QrCodeRecognizerImpl(void)
25     : __objectStorage(0)
26 {
27     __objectStorage = _QrCodeObjectImpl::CreateQRCodeObjectStorageN(MAX_TRACKABLE_OBJECTS);
28 }
29
30 _QrCodeRecognizerImpl::~_QrCodeRecognizerImpl(void)
31 {
32         _QrCodeObjectImpl::ReleaseQrCodeObjectArray(__objectStorage);
33 }
34
35 bool
36 _QrCodeRecognizerImpl::SetFrameSize(unsigned int width, unsigned int height)
37 {
38     return __qrCodeRecognizer.setFrameSize(width, height);
39 }
40
41 bool
42 _QrCodeRecognizerImpl::ProcessFrame(const unsigned char* raw)
43 {
44     return __qrCodeRecognizer.processFrame(raw);
45 }
46
47 bool
48 _QrCodeRecognizerImpl::GetROI(float* roi)
49 {
50     return __qrCodeRecognizer.getROI(roi);
51 }
52
53 void
54 _QrCodeRecognizerImpl::SetSceneTransform(const float* left, const float* right)
55 {
56     __qrCodeRecognizer.setSceneTransform(left, right);
57 }
58
59 void
60 _QrCodeRecognizerImpl::FillObjectStorage(void)
61 {
62     __objectStorageSize = 0;
63     for (const sari2::QRCodeRecognitionInfo *o = __qrCodeRecognizer.objectsBegin(), *e = __qrCodeRecognizer.objectsEnd(); o != e; ++o)
64     {
65         Tizen::Uix::Vision::QrCodeObject& to = __objectStorage[__objectStorageSize++];
66         _QrCodeObjectImpl::GetInstance(&to)->SetSariPointer(*o);
67     }
68 }
69
70 const
71 QrCodeObject* _QrCodeRecognizerImpl::QRCodeObjectsBegin(void)
72 {
73     return __objectStorage;
74 }
75
76 const
77 QrCodeObject* _QrCodeRecognizerImpl::QRCodeObjectsEnd(void)
78 {
79     return __objectStorage + __objectStorageSize;
80 }
81
82 int _QrCodeRecognizerImpl::GetRecognizedObjectsCount(void)
83 {
84     return __objectStorageSize;
85 }
86
87 const QrCodeObject*
88 _QrCodeRecognizerImpl::GetQrCodeObject(int index)
89 {
90     ClearLastResult();
91     if (index < __objectStorageSize)
92     {
93         return &__objectStorage[index];
94     }
95     else
96     {
97         SetLastResult(E_INVALID_ARG);
98         return 0;
99     }
100 }
101
102 _QrCodeRecognizerImpl* _QrCodeRecognizerImpl::GetInstance(QrCodeRecognizer* pQrRecognizer)
103 {
104     return pQrRecognizer->__pQrCodeRecognizerImpl;
105 }
106
107 const _QrCodeRecognizerImpl* _QrCodeRecognizerImpl::GetInstance(const QrCodeRecognizer* pQrRecognizer)
108 {
109     return pQrRecognizer->__pQrCodeRecognizerImpl;
110 }
111
112 bool
113 _QrCodeRecognizerImpl::Init(void)
114 {
115     return __qrCodeRecognizer.init();
116 }
117
118 bool
119 _QrCodeRecognizerImpl::Destroy(void)
120 {
121     return __qrCodeRecognizer.destroy();
122 }
123
124 } } } //Tizen::Uix::Vision