ImageBuffer.cpp
Go to the documentation of this file.
1#include "ImageBuffer.h"
2
4
7
8namespace visionx
9{
10
12 {
13 if (images)
14 {
15 deallocate();
16 }
17 }
18
19 void
21 {
22 ARMARX_CHECK_NULL(images) << "Images have already been allocated.";
23
24 std::scoped_lock lock(mutex);
25
26 numImages = providerInfo.numberImages;
27
28 images = new CByteImage*[numImages];
29 for (size_t i = 0; i < numImages; i++)
30 {
31 images[i] = visionx::tools::createByteImage(providerInfo);
32 }
33 }
34
35 void
37 {
39 << "Images have not yet been allocated and thus cannot be deallocated.";
40
41 std::scoped_lock lock(mutex);
42 for (size_t i = 0; i < numImages; i++)
43 {
44 delete images[i];
45 }
46 delete[] images;
47
48 images = nullptr;
49 }
50
51 void
52 ImageBuffer::update(std::function<void(CByteImage**)> setImagesFn)
53 {
54 std::scoped_lock lock(mutex);
55 ARMARX_CHECK_NOT_NULL(images) << "Images must be allocated before calling update().";
56 setImagesFn(images);
57 imagesSeq++;
58 }
59} // namespace visionx
#define ARMARX_CHECK_NULL(ptr)
void update(std::function< void(CByteImage **)> setImagesFn)
long imagesSeq
Update this each time you update images.
Definition ImageBuffer.h:56
void allocate(const visionx::ImageProviderInfo &providerInfo)
CByteImage ** images
Definition ImageBuffer.h:54
int numberImages
Number of images.
#define ARMARX_CHECK_NOT_NULL(ptr)
This macro evaluates whether ptr is not null and if it turns out to be false it will throw an Express...
CByteImage * createByteImage(const ImageFormatInfo &imageFormat, const ImageType imageType)
Creates a ByteImage for the destination type specified in the given imageProviderInfo.
ArmarX headers.