RAII applied. Memory leak fixed.
[framework/osp/vision.git] / src / FUixVision_QrCodeObjectImpl.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_QrCodeObjectImpl.h"
19
20 namespace Tizen { namespace Uix { namespace Vision
21 {
22
23 _QrCodeObjectImpl::_QrCodeObjectImpl(void)
24     : __qrCodeObject()
25     , __pRectangleList(null)
26     , __Matrix(null)
27 {
28     __pRectangleList = new Tizen::Base::Collection::ArrayListT<Tizen::Graphics::FloatPoint>();
29     __Matrix = new Tizen::Graphics::FloatMatrix4();
30
31 }
32
33 _QrCodeObjectImpl::~_QrCodeObjectImpl(void)
34 {
35     delete __pRectangleList;
36     delete __Matrix;
37 }
38
39 int
40 _QrCodeObjectImpl::GetId(void) const
41 {
42     return __qrCodeObject.id();
43 }
44
45 unsigned char
46 _QrCodeObjectImpl::GetVersion(void) const
47 {
48     return __qrCodeObject.version();
49 }
50
51 Tizen::Uix::Vision::QrCodeErrorCorrectionLevel
52 _QrCodeObjectImpl::GetErrorCorrectionLevel(void)
53 {
54     switch(__qrCodeObject.errorCorrectionLevel())
55     {
56     case sari2::QR_ECL_L:
57         __qrCodeErrorCorrectionLevel = Tizen::Uix::Vision::QR_CODE_ERROR_CORRECTION_LEVEL_L;
58         break;
59     case sari2::QR_ECL_M:
60         __qrCodeErrorCorrectionLevel = Tizen::Uix::Vision::QR_CODE_ERROR_CORRECTION_LEVEL_M;
61         break;
62     case sari2::QR_ECL_Q:
63         __qrCodeErrorCorrectionLevel = Tizen::Uix::Vision::QR_CODE_ERROR_CORRECTION_LEVEL_Q;
64         break;
65     case sari2::QR_ECL_H:
66         __qrCodeErrorCorrectionLevel = Tizen::Uix::Vision::QR_CODE_ERROR_CORRECTION_LEVEL_H;
67         break;
68     }
69
70     return __qrCodeErrorCorrectionLevel;
71 }
72
73 Tizen::Base::String
74 _QrCodeObjectImpl::GetText(void) const
75 {
76     return Tizen::Base::String(__qrCodeObject.text());
77 }
78
79 const Tizen::Graphics::FloatMatrix4*
80 _QrCodeObjectImpl::GetTransformMatrix(void) const
81 {
82     float* dst = (float*)__Matrix->matrix;
83     const float* src = __qrCodeObject.transform();
84     memcpy(dst, src, 16*sizeof(float));
85     return __Matrix;
86 }
87
88 const Tizen::Base::Collection::ArrayListT<Tizen::Graphics::FloatPoint>*
89 _QrCodeObjectImpl::GetRectangle(void) const
90 {
91     static float coordinates[8] = {0.f};
92     __qrCodeObject.rectangle(coordinates);
93
94     for (int i = 0; i < 4; ++i)
95         __pRectangleList->Add(Tizen::Graphics::FloatPoint(coordinates[2 * i], coordinates[(2 * i) + 1]));
96
97     return __pRectangleList;
98
99 }
100
101 void
102 _QrCodeObjectImpl::SetSariPointer(const sari2::QRCodeRecognitionInfo& sari)
103 {
104     __qrCodeObject = sari;
105 }
106
107 _QrCodeObjectImpl*
108 _QrCodeObjectImpl::GetInstance(QrCodeObject* pQrObject)
109 {
110     return pQrObject->__pQrCodeObjectImpl;
111 }
112
113 const _QrCodeObjectImpl*
114 _QrCodeObjectImpl::GetInstance(const QrCodeObject* pQrObject)
115 {
116     return pQrObject->__pQrCodeObjectImpl;
117 }
118
119 void
120 _QrCodeObjectImpl::ReleaseQrCodeObject(QrCodeObject* pQrCodeObject)
121 {
122     delete pQrCodeObject;
123 }
124
125 void
126 _QrCodeObjectImpl::ReleaseQrCodeObjectArray(QrCodeObject* pQrCodeObject)
127 {
128     delete[] pQrCodeObject;
129 }
130
131 Tizen::Uix::Vision::QrCodeObject*
132 _QrCodeObjectImpl::CreateQRCodeObjectStorageN(const unsigned int size)
133 {
134     Tizen::Uix::Vision::QrCodeObject* objectStorage = new Tizen::Uix::Vision::QrCodeObject[size];
135     return objectStorage;
136 }
137
138 Tizen::Uix::Vision::QrCodeObject*
139 _QrCodeObjectImpl::CreateQRCodeObjectN()
140 {
141     Tizen::Uix::Vision::QrCodeObject* object = new Tizen::Uix::Vision::QrCodeObject;
142     return object;
143 }
144
145 } } } //Tizen::Uix::Vision