ImageBuffer.cpp
Go to the documentation of this file.
1 #include "ImageBuffer.h"
2 
4 
7 
8 namespace 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
visionx::ImageBuffer::images
CByteImage ** images
Definition: ImageBuffer.h:54
visionx::ImageProviderInfo::numberImages
int numberImages
Number of images.
Definition: ImageProcessor.h:519
visionx::ImageBuffer::update
void update(std::function< void(CByteImage **)> setImagesFn)
Definition: ImageBuffer.cpp:52
visionx
ArmarX headers.
Definition: OpenPoseStressTest.h:38
ARMARX_CHECK_NOT_NULL
#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...
Definition: ExpressionException.h:206
visionx::ImageBuffer::~ImageBuffer
~ImageBuffer()
Definition: ImageBuffer.cpp:11
visionx::ImageBuffer::mutex
std::mutex mutex
Definition: ImageBuffer.h:52
visionx::tools::createByteImage
CByteImage * createByteImage(const ImageFormatInfo &imageFormat, const ImageType imageType)
Creates a ByteImage for the destination type specified in the given imageProviderInfo.
visionx::ImageProviderInfo
Definition: ImageProcessor.h:479
ImageProcessor.h
ImageBuffer.h
ExpressionException.h
visionx::ImageBuffer::imagesSeq
long imagesSeq
Update this each time you update images.
Definition: ImageBuffer.h:56
ImageUtil.h
ARMARX_CHECK_NULL
#define ARMARX_CHECK_NULL(ptr)
Definition: ExpressionException.h:212
visionx::ImageBuffer::allocate
void allocate(const visionx::ImageProviderInfo &providerInfo)
Definition: ImageBuffer.cpp:20
visionx::ImageBuffer::deallocate
void deallocate()
Definition: ImageBuffer.cpp:36