Visual Servoing Platform version 3.7.0
Loading...
Searching...
No Matches
testImageOwnership.cpp
1/*
2 * ViSP, open source Visual Servoing Platform software.
3 * Copyright (C) 2005 - 2024 by Inria. All rights reserved.
4 *
5 * This software is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 * See the file LICENSE.txt at the root directory of this source
10 * distribution for additional information about the GNU GPL.
11 *
12 * For using ViSP with software that can not be combined with the GNU
13 * GPL, please contact Inria about acquiring a ViSP Professional
14 * Edition License.
15 *
16 * See https://visp.inria.fr for more information.
17 *
18 * This software was developed at:
19 * Inria Rennes - Bretagne Atlantique
20 * Campus Universitaire de Beaulieu
21 * 35042 Rennes Cedex
22 * France
23 *
24 * If you have questions regarding the use of this file, please contact
25 * Inria at visp@inria.fr
26 *
27 * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
28 * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
29 *
30 * Description:
31 * Test vpImage ownership
32 */
33
34#include <visp3/core/vpImage.h>
35
41
42int main(int /* argc */, const char ** /* argv */)
43{
44#ifdef ENABLE_VISP_NAMESPACE
45 using namespace VISP_NAMESPACE_NAME;
46#endif
47 try {
48 {
49 unsigned char bitmap[4];
50 bitmap[0] = 0;
51 bitmap[1] = 1;
52 bitmap[2] = 2;
53 bitmap[3] = 3;
54
55 vpImage<unsigned char> I(bitmap, 2, 2, true);
56 std::cout << "I:\n" << I << std::endl;
57 I.destroy();
58 }
59 {
60 unsigned char bitmap[4];
61 bitmap[0] = 0;
62 bitmap[1] = 1;
63 bitmap[2] = 2;
64 bitmap[3] = 3;
65
66 vpImage<unsigned char> I(bitmap, 2, 2, false);
67 std::cout << "\nI:\n" << I << std::endl;
68 }
69 {
70 unsigned char bitmap[4];
71 bitmap[0] = 0;
72 bitmap[1] = 1;
73 bitmap[2] = 2;
74 bitmap[3] = 3;
75
76 vpImage<unsigned char> I(bitmap, 2, 2, false);
77 {
79 std::cout << "\nI2:\n" << I2 << std::endl;
80 }
81 {
83 std::cout << "I2:\n" << I2 << std::endl;
84 }
85 }
86 {
87 unsigned char bitmap[12];
88 for (unsigned char i = 0; i < 12; i++) {
89 bitmap[i] = i;
90 }
91
92 vpImage<unsigned char> I(bitmap, 3, 4, false);
93 std::cout << "\nI:\n" << I << std::endl;
94 I.init(2, 2, 0);
95 std::cout << "I:\n" << I << std::endl;
96 }
97 {
98 unsigned char bitmap[12];
99 for (unsigned char i = 0; i < 12; i++) {
100 bitmap[i] = i;
101 }
102 vpImage<unsigned char> I(bitmap, 3, 4, false);
103 std::cout << "\nI:\n" << I << std::endl;
104 I.init(bitmap, 4, 3, true);
105 std::cout << "I:\n" << I << std::endl;
106 }
107 {
108 unsigned char *bitmap = new unsigned char[12];
109 {
110 vpImage<unsigned char> I(bitmap, 3, 4, true);
111 }
112 delete[] bitmap;
113 }
114 {
115 unsigned char *bitmap = new unsigned char[12];
116 {
117 vpImage<unsigned char> I(bitmap, 3, 4, false);
118 }
119 vpImage<unsigned char> I(bitmap, 3, 4, false);
120
121 delete[] bitmap;
122
123 bitmap = new unsigned char[16];
124 I.init(bitmap, 4, 4, false);
125
126 delete[] bitmap;
127 }
128 {
129 unsigned char *bitmap = new unsigned char[12];
130 vpImage<unsigned char> I(bitmap, 3, 4, false);
131 I.destroy();
132 I.init(bitmap, 3, 4, false);
133
134 delete[] bitmap;
135
136 I.destroy();
137 bitmap = new unsigned char[16];
138 I.init(bitmap, 4, 4, false);
139
140 delete[] bitmap;
141 }
142
143#if (VISP_CXX_STANDARD >= VISP_CXX_STANDARD_11)
144 {
145 unsigned char *bitmap = new unsigned char[12];
146 vpImage<unsigned char> I = vpImage<unsigned char>(bitmap, 3, 4, false);
147 if (bitmap != I.bitmap) {
148 std::cout << "std::move(vpImage) failed" << std::endl;
149 return EXIT_FAILURE;
150 }
151 delete[] bitmap;
152 }
153 {
154 unsigned char *bitmap = new unsigned char[12];
155 vpImage<unsigned char> I(vpImage<unsigned char>(bitmap, 3, 4, false));
156 if (bitmap != I.bitmap) {
157 std::cout << "vpImage(td::move(vpImage)) failed" << std::endl;
158 return EXIT_FAILURE;
159 }
160 delete[] bitmap;
161 }
162#endif
163 }
164 catch (const std::exception &e) {
165 std::cerr << "Exception: " << e.what() << std::endl;
166 return EXIT_FAILURE;
167 }
168
169 std::cout << "Test succeed" << std::endl;
170 return EXIT_SUCCESS;
171}
Definition of the vpImage class member functions.
Definition vpImage.h:131