CVB++ 15.0
Loading...
Searching...
No Matches
global.hpp
1#pragma once
2
3#include <array>
4#include <functional>
5#include <iterator>
6#include <list>
7#include <memory>
8#include <mutex>
9#include <vector>
10
11#include "namespace.hpp"
12
13#include "_cexports/c_core.h"
14#include "_cexports/c_driver.h"
15
16#ifdef _DEBUG
17# define CVB_FORCE_INLINE inline
18#else // _DEBUG
19# ifdef _MSC_VER
20
21# define CVB_FORCE_INLINE __forceinline
22
23# elif __GNUC__ && __cplusplus
24
25# define CVB_FORCE_INLINE inline __attribute__((always_inline))
26
27# else
28
29# endif
30#endif // _DEBUG
31
33
48namespace Cvb
49{
50
51 CVB_BEGIN_INLINE_NS
52
53 class IArray;
54 class DataType;
55 class DeviceFactory;
56 class ImagePlane;
57 class LinearAccessData;
58 class Vpat;
59
60 class Buffer;
63
64 class BufferBase;
67
68 class PFNCBuffer;
71
75
76 class Plane;
79
80 class PlaneEnumerator;
83
84 class Image;
87
88 class WrappedImage;
91
95
96 class Device;
99
100 class Composite;
103
104 class HandleOnly;
107
108 class CancellationToken;
111
115
119
120 const double CVB_M_PI = 3.14159265358979323846;
121
123
124 template <class T>
126
127 template <class T>
129
132 {
136 Unknown = CExports::CVCCT_Unknown,
140 JPEG = CExports::CVCCT_JPEG,
144 JPEG2000 = CExports::CVCCT_JPEG2000,
145 };
146
173
175 enum class ColorModel
176 {
180 RGBGuess = CExports::CM_Guess_RGB,
184 MonoGuess = CExports::CM_Guess_Mono,
188 Unknown = CExports::CM_Unknown,
192 Mono = CExports::CM_Mono,
193
194#ifdef RGB
195# undef RGB
196#endif
200 RGB = CExports::CM_RGB,
204 YUV = CExports::CM_YUV,
208 HSI = CExports::CM_HSI,
212 YCbCr = CExports::CM_YCbCr,
216 CieLUV = CExports::CM_LUV,
220 CieLab = CExports::CM_Lab,
224 HLS = CExports::CM_HLS,
228 YCC = CExports::CM_YCC,
232 HSV = CExports::CM_HSV,
236 CieXYZ = CExports::CM_XYZ
237 };
238
240
274
287
309
311 enum class SubPixelMode
312 {
318 ParabolicFast = CExports::TSubPixelMode::SP_Parabolic_Fast,
319
323 ParabolicAccurate = CExports::TSubPixelMode::SP_Parabolic_Accurate,
324
328 Gaussian = CExports::TSubPixelMode::SP_Gauss
329 };
330
332
336 enum class Neighborhood
337 {
342
347
352
357 };
358
360 enum class MappingOption
361 {
366
373 };
374
376 enum class RotationMap
377 {
381 By90Degrees = CExports::VPATROT_90,
382
386 By180Degrees = CExports::VPATROT_180,
387
391 By270Degrees = CExports::VPATROT_270
392 };
393
395 enum class WaitStatus
396 {
398 Ok = CExports::CVDWS_Ok,
400 Timeout = CExports::CVDWS_Timeout,
402 Abort = CExports::CVDWS_Canceled
403 };
404
406
410 enum class PlaneRole
411 {
413 Undefined = CExports::CVCPR_Undefined,
414
416 PixMono = CExports::CVCPR_PixMono,
418 PixRGB_R = CExports::CVCPR_PixRGB_R,
420 PixRGB_G = CExports::CVCPR_PixRGB_G,
422 PixRGB_B = CExports::CVCPR_PixRGB_B,
424 PixYUV_Y = CExports::CVCPR_PixYUV_Y,
426 PixYUV_U = CExports::CVCPR_PixYUV_U,
428 PixYUV_V = CExports::CVCPR_PixYUV_V,
430 PixHSV_H = CExports::CVCPR_PixHSV_H,
431 // Saturation channel value.
432 PixHSV_S = CExports::CVCPR_PixHSV_S,
434 PixHSV_V = CExports::CVCPR_PixHSV_V,
436 PixLAB_L = CExports::CVCPR_PixLAB_L,
438 PixLAB_A = CExports::CVCPR_PixLAB_A,
440 PixLAB_B = CExports::CVCPR_PixLAB_B,
442 PixConfidence = CExports::CVCPR_PixConfidence,
444 PixRGB_RGB = CExports::CVCPR_PixRGB_RGB,
445
447 CoordCartesian_X = CExports::CVCPR_CoordCartesian_X,
449 CoordCartesian_Y = CExports::CVCPR_CoordCartesian_Y,
451 CoordCartesian_Z = CExports::CVCPR_CoordCartesian_Z,
453 CoordCartesian_W = CExports::CVCPR_CoordCartesian_W,
455 CoordPolar_Rho = CExports::CVCPR_CoordPolar_Rho,
457 CoordPolar_Phi = CExports::CVCPR_CoordPolar_Phi,
459 CoordCylindrical_Rho = CExports::CVCPR_CoordCylindrical_Rho,
461 CoordCylindrical_Phi = CExports::CVCPR_CoordCylindrical_Phi,
463 CoordCylindrical_Z = CExports::CVCPR_CoordCylindrical_Z,
465 CoordSpherical_Rho = CExports::CVCPR_CoordSpherical_Rho,
467 CoordSpherical_Phi = CExports::CVCPR_CoordSpherical_Phi,
469 CoordSpherical_Theta = CExports::CVCPR_CoordSpherical_Theta,
471 Normal_X = CExports::CVCPR_Normal_X,
473 Normal_Y = CExports::CVCPR_Normal_Y,
475 Normal_Z = CExports::CVCPR_Normal_Z,
477 PointPlanarity = CExports::CVCPR_Point_Planarity,
479 PointVariation = CExports::CVCPR_Point_Variation,
481 PointSphericity = CExports::CVCPR_Point_Sphericity,
483 PointLinearity = CExports::CVCPR_Point_Linearity,
485 PointCurvature = CExports::CVCPR_Point_Curvature,
486
488 Custom = CExports::CVCPR_Custom
489 };
490
493 {
495 Horizontal = CExports::PM_Horizontal,
497 Vertical = CExports::PM_Vertical
498 };
499
510
511 enum class CompositePurpose
512 {
513 Custom = -1,
514 Image = 0,
515 ImageList,
516 MultiAoi,
517 RangeMap,
518 PointCloud,
519 ImageCube
520 };
521
523 enum class ConversionMode
524 {
529 };
530
531 namespace Internal
532 {
533
534 template <class T>
535 class AsyncRef
536 {
537 public:
538 AsyncRef() = default;
539
540 std::shared_ptr<T> AtomicGet(std::function<std::shared_ptr<T>()> create = nullptr)
541 {
542 std::unique_lock<std::mutex> guard(mutex_);
543 auto ref = weakRef_.lock();
544 if (!ref && create)
545 {
546 ref = create();
547 weakRef_ = ref;
548 }
549 return ref;
550 }
551
552 void Reset() noexcept
553 {
554 weakRef_.reset();
555 }
556
557 private:
558 std::mutex mutex_;
559
560 std::weak_ptr<T> weakRef_;
561 };
562
563 class HandlerCarrier
564 {
565 public:
566 HandlerCarrier() noexcept = default;
567 HandlerCarrier(const HandlerCarrier &other) noexcept = default;
568 HandlerCarrier &operator=(const HandlerCarrier &other) noexcept = default;
569 HandlerCarrier(HandlerCarrier &&other) noexcept = default;
570 HandlerCarrier &operator=(HandlerCarrier &&other) noexcept = default;
571 virtual ~HandlerCarrier() = default;
572 };
573
574 typedef std::shared_ptr<HandlerCarrier> HandlerCarrierPtr;
575 typedef std::weak_ptr<HandlerCarrier> HandlerCarrierWPtr;
576
577 class CarrierContainer;
578
579 } // namespace Internal
580
582
591 {
593 friend Internal::CarrierContainer;
595
596 public:
598
601 EventCookie() noexcept = default;
602
604
607 explicit operator bool() const noexcept
608 {
609 return !handlerCarrier_.expired();
610 }
611
612 private:
613 explicit EventCookie(const Internal::HandlerCarrierPtr &handlerCarrier) noexcept
614 : handlerCarrier_(handlerCarrier)
615 {
616 }
617
618 Internal::HandlerCarrierWPtr handlerCarrier_;
619 };
620
621 namespace Internal
622 {
623
624 typedef void(REL_CB)(void *handle);
625
626 }
627
628 template <class T, Internal::REL_CB CB>
629 class SharedHandleGuard;
630
631 template <class T, Internal::REL_CB CB = nullptr>
632 class HandleGuard
633 {
634
635 public:
636 explicit HandleGuard(void *handle) noexcept
637 : handle_(handle, CB)
638 {
639 static_assert(std::is_same<T, void>::value,
640 "CVB: HandleGuard need specialization, or type void with release callback!");
641 }
642
643 HandleGuard(void *handle, std::function<void(void *)> deleter) noexcept
644 : handle_(handle, deleter)
645 {
646 }
647
648 void *Handle() const noexcept
649 {
650 return handle_.get();
651 }
652
653 void Reset(void *handle = nullptr) noexcept
654 {
655 handle_.reset(handle);
656 }
657
658 void *Release() noexcept
659 {
660 return handle_.release();
661 }
662
663 private:
664 std::unique_ptr<void, std::function<void(void *)>> handle_;
665
666 friend class SharedHandleGuard<T, CB>;
667 };
668
669 typedef HandleGuard<void, CVB_CALL_CAPI(ReleaseObjectVoid)> ReleaseObjectGuard;
670
671 template <class T, Internal::REL_CB CB = nullptr>
672 class SharedHandleGuard
673 {
674 public:
675 explicit SharedHandleGuard(HandleGuard<T, CB> &&uniqueGuard)
676 : shandle_(std::move(uniqueGuard.handle_))
677 {
678 }
679
680 SharedHandleGuard(const SharedHandleGuard &other) noexcept = default;
681 SharedHandleGuard &operator=(const SharedHandleGuard &) noexcept = default;
682 SharedHandleGuard(SharedHandleGuard &&other) noexcept = default;
683 SharedHandleGuard &operator=(SharedHandleGuard &&other) noexcept = default;
684 ~SharedHandleGuard() = default;
685
686 void *Handle() const noexcept
687 {
688 return shandle_.get();
689 }
690
691 private:
692 std::shared_ptr<void> shandle_;
693 };
694
695 typedef SharedHandleGuard<void, CVB_CALL_CAPI(ReleaseObjectVoid)> SharedReleaseObjectGuard;
696
697 // forward declaration needed for gcc
698 namespace Utilities
699 {
700
701 namespace SystemInfo
702 {
703 void ThrowLastError();
704 void ThrowLastError(int errorCode);
705
706 } // namespace SystemInfo
707
708 } // namespace Utilities
709
710 namespace Internal
711 {
712
713 template <class T>
714 class CbCarrier : public HandlerCarrier
715 {
716
717 public:
718 static std::shared_ptr<CbCarrier> Create(std::function<T> cb)
719 {
720 return std::make_shared<CbCarrier<T>>(cb);
721 }
722
723 explicit CbCarrier(std::function<T> cb) noexcept
724 : cb_(cb)
725 {
726 }
727
728 std::function<T> CB() const noexcept
729 {
730 return cb_;
731 }
732
733 private:
734 std::function<T> cb_;
735 };
736
737 class CarrierContainer
738 {
739 public:
740 CarrierContainer() noexcept {}
741
742 CarrierContainer(const CarrierContainer &other) = delete;
743 CarrierContainer &operator=(const CarrierContainer &other) = delete;
744 CarrierContainer(CarrierContainer &&other) noexcept
745 {
746 try
747 {
748 carrierList_ = std::move(other.carrierList_);
749 }
750 catch (...)
751 {
752 // does not realy throw - catch required for static anlysis
753 }
754 }
755 CarrierContainer &operator=(CarrierContainer &&other) = delete;
756 ~CarrierContainer() = default;
757
758 EventCookie Register(const HandlerCarrierPtr &handlerBase)
759 {
760 std::unique_lock<std::mutex> guard(carrierListMutex_);
761 carrierList_.push_back(handlerBase);
762 return EventCookie{handlerBase};
763 }
764
765 void Unregister(EventCookie eventCookie) noexcept
766 {
767
768 auto handlerBase = eventCookie.handlerCarrier_.lock();
769 if (!handlerBase)
770 return;
771
772 std::unique_lock<std::mutex> guard(carrierListMutex_);
773 carrierList_.remove(handlerBase);
774 }
775
776 template <class T, class... Args>
777 void Call(Args &&...args) const
778 {
779 std::list<HandlerCarrierPtr> carrierList;
780 {
781 std::unique_lock<std::mutex> guard(carrierListMutex_);
782 carrierList.insert(carrierList.end(), carrierList_.begin(), carrierList_.end());
783 }
784 for (auto &carrier : carrierList)
785 {
786 auto holder = std::dynamic_pointer_cast<CbCarrier<T>>(carrier);
787 holder->CB()(std::forward<Args>(args)...);
788 }
789 }
790
791 private:
792 mutable std::mutex carrierListMutex_;
793 std::list<HandlerCarrierPtr> carrierList_;
794 };
795
796 template <class OBJ, class RES, class... ARGS>
797 inline std::unique_ptr<OBJ> DoCallObjectOut(std::function<RES(void *&handle)> call, ARGS &&...args)
798 {
799 void *handle = nullptr;
800 auto code = CExports::MakeErrorCode(call(handle));
801 if (code < 0)
802 {
803 Utilities::SystemInfo::ThrowLastError(code);
804 }
805 return OBJ::FromHandle(HandleGuard<OBJ>(handle), std::forward<ARGS>(args)...);
806 }
807
808 template <class OBJ, class... ARGS>
809 inline std::unique_ptr<OBJ> DoBoolCallObjectOut(std::function<CExports::cvbbool_t(void *&handle)> call,
810 ARGS &&...args)
811 {
812 return DoCallObjectOut<OBJ, CExports::cvbbool_t, ARGS...>(call, std::forward<ARGS>(args)...);
813 }
814
815 template <class OBJ, class... ARGS>
816 inline std::unique_ptr<OBJ> DoResCallObjectOut(std::function<CExports::cvbres_t(void *&handle)> call,
817 ARGS &&...args)
818 {
819 return DoCallObjectOut<OBJ, CExports::cvbres_t, ARGS...>(call, std::forward<ARGS>(args)...);
820 }
821
822 template <class OBJ>
823 inline std::unique_ptr<OBJ> DoHandleCallObjectOut(void *result)
824 {
825 return DoCallObjectOut<OBJ, void *>([=](void *&handle) { return (handle = result); });
826 }
827
828 template <class OBJ, class RES, class... ARGS>
829 inline std::shared_ptr<OBJ> DoCallShareOut(std::function<RES(void *&handle)> call, ARGS &&...args)
830 {
831 void *handle = nullptr;
832 auto code = CExports::MakeErrorCode(call(handle));
833 if (code < 0)
834 {
835 Utilities::SystemInfo::ThrowLastError(code);
836 }
837 return OBJ::template FromHandle<OBJ>(typename OBJ::GuardType(handle), std::forward<ARGS>(args)...);
838 }
839
840 template <class OBJ, class... ARGS>
841 inline std::shared_ptr<OBJ> DoBoolCallShareOut(std::function<CExports::cvbbool_t(void *&handle)> call,
842 ARGS &&...args)
843 {
844 return DoCallShareOut<OBJ, CExports::cvbbool_t, ARGS...>(call, std::forward<ARGS>(args)...);
845 }
846
847 template <class OBJ, class... ARGS>
848 inline std::shared_ptr<OBJ> DoResCallShareOut(std::function<CExports::cvbres_t(void *&handle)> call, ARGS &&...args)
849 {
850 return DoCallShareOut<OBJ, CExports::cvbres_t, ARGS...>(call, std::forward<ARGS>(args)...);
851 }
852
853 template <class T, class RES>
854 inline T DoCallValueOut(std::function<RES(T &handle)> call)
855 {
856 T value;
857 auto code = CExports::MakeErrorCode(call(value));
858 if (code < 0)
859 {
860 Utilities::SystemInfo::ThrowLastError(code);
861 }
862 return value;
863 }
864
865 template <class T>
866 inline T DoBoolCallValueOut(std::function<CExports::cvbbool_t(T &handle)> call)
867 {
868 return DoCallValueOut<T, CExports::cvbbool_t>(call);
869 }
870
871 template <class T>
872 inline T DoResCallValueOut(std::function<CExports::cvbres_t(T &value)> call)
873 {
874 return DoCallValueOut<T, CExports::cvbres_t>(call);
875 }
876
877 template <class RES>
878 inline void DoCall(std::function<RES()> call)
879 {
880 auto code = CExports::MakeErrorCode(call());
881 if (code < 0)
882 Utilities::SystemInfo::ThrowLastError(code);
883 }
884
885 inline void DoBoolCall(std::function<CExports::cvbbool_t()> call)
886 {
887 DoCall<CExports::cvbbool_t>(call);
888 }
889
890 inline void DoResCall(std::function<CExports::cvbres_t()> call)
891 {
892 DoCall<CExports::cvbres_t>(call);
893 }
894 } // namespace Internal
895
896 template <class T>
897 using IsNumeric =
898 std::integral_constant<bool, std::is_same<double, T>::value || std::is_same<float, T>::value
899 || std::is_same<std::int64_t, T>::value || std::is_same<std::int32_t, T>::value
900 || std::is_same<std::int16_t, T>::value || std::is_same<std::int8_t, T>::value>;
901
902 template <class T>
903 using EnableIfNumeric = std::enable_if<IsNumeric<T>::value>;
904
905 template <class T>
906 using EnableIfArithmetic = std::enable_if<std::is_arithmetic<T>::value>;
907
908 template <class T, class... ARGS>
909 struct AllOfType;
910
911 template <class T, class ARG>
912 struct AllOfType<T, ARG>
913 {
914 static constexpr bool Value =
915 std::is_same<typename std::remove_const<typename std::remove_reference<T>::type>::type, ARG>::value
916 || std::is_base_of<typename std::remove_const<typename std::remove_reference<T>::type>::type, ARG>::value;
917 };
918
919 template <class T, class ARG, class... ARGS>
920 struct AllOfType<T, ARG, ARGS...>
921 {
922 static constexpr bool Value =
923 (std::is_same<typename std::remove_const<typename std::remove_reference<T>::type>::type, ARG>::value
924 || std::is_base_of<typename std::remove_const<typename std::remove_reference<T>::type>::type, ARG>::value)
925 && AllOfType<T, ARGS...>::Value;
926 };
927
928 template <typename RET, typename TYPE, class RANGE>
929 using TypedRange =
930 std::enable_if<std::is_same<TYPE, typename std::remove_const<typename std::remove_reference<decltype(*std::begin(
931 std::declval<RANGE &>()))>::type>::type>::value,
932 RET>;
933
934 template <class RET, class TYPE, class... ARGS>
935 using VarArgRange = typename std::enable_if<AllOfType<TYPE, ARGS...>::Value, RET>;
936
937 template <class TYPE, class RANGE>
938 class RangeAdapter
939 {
940 public:
941 /* The constructor only stores the reference and compile-time-checks the value type.
942 * All operations are performed only when needed. */
943 explicit RangeAdapter(const RANGE &range)
944 : inputRef_(range)
945 {
946 static_assert(
947 std::is_same<typename std::remove_const<
948 typename std::remove_reference<decltype(*std::begin(std::declval<RANGE &>()))>::type>::type,
949 TYPE>::value,
950 "Unexpected range value type");
951 }
952
953 /* Returns pointer to the range values in a contiguous memory block. */
954 TYPE *Data() const
955 {
956 return const_cast<TYPE *>(Data(inputRef_.get())); // NOLINT(cppcoreguidelines-pro-type-const-cast)
957 }
958
959 /* Returns size of the range. */
960 std::size_t Size() const
961 {
962 return std::distance(std::begin(inputRef_.get()), std::end(inputRef_.get()));
963 }
964
965 private:
966 /* Actual input-range dependent workers for the contiguous data query. */
967 template <size_t N>
968 const TYPE *Data(const TYPE (&carray)[N]) const
969 {
970 return carray;
971 } // NOLINT(cppcoreguidelines-avoid-c-arrays)
972
973 template <size_t N>
974 const TYPE *Data(const std::array<TYPE, N> &stdarray) const
975 {
976 return stdarray.data();
977 }
978
979 const TYPE *Data(const std::vector<TYPE> &stdvec) const
980 {
981 return stdvec.data();
982 }
983
984 template <class LIST>
985 const TYPE *Data(const LIST &list) const
986 {
987 if (convertedRange_.empty())
988 {
989 convertedRange_.assign(std::begin(list), std::end(list));
990 }
991 return convertedRange_.data();
992 }
993
994 private:
995 const std::reference_wrapper<const RANGE> inputRef_;
996 mutable std::vector<TYPE> convertedRange_;
997 };
998
999 template <class TYPE, class RANGE>
1000 RangeAdapter<TYPE, RANGE> MakeRangeAdapter(const RANGE &range, std::size_t minSize = 1)
1001 {
1002 RangeAdapter<TYPE, RANGE> rangeAdapter(range);
1003 if (minSize != 0 && rangeAdapter.Size() < minSize)
1004 throw std::runtime_error("insufficient number of input range values");
1005 return rangeAdapter;
1006 }
1007
1008 template <class...>
1009 struct DispatchableTypeList
1010 {
1011 };
1012
1013 template <class DT, class... DTS>
1014 struct DispatchableTypeList<DT, DTS...>
1015 {
1016 using DefaultType = DT;
1017 };
1018
1048 template <class PLANE_T>
1050
1051 CVB_END_INLINE_NS
1052
1053} // namespace Cvb
Base class of all buffers.
Definition buffer_base.hpp:21
Buffer class implementing a buffer.
Definition buffer.hpp:13
A token to enable cancellation on wait operations.
Definition cancellation_token.hpp:20
Provides tokens and signals tokens cancellation.
Definition cancellation_token_source.hpp:20
Point components of the point cloud.
Definition components_pointers_3d.hpp:18
Component class is a container for CVB objects.
Definition decl_composite.hpp:49
PFNC buffer class implementing a compressed pfnc buffer.
Definition compressed_pfnc_buffer.hpp:13
Data type description for an image plane.
Definition data_type.hpp:23
Point components of a dense point cloud.
Definition dense_components_pointers_3d.hpp:15
Factory object for creating device objects.
Definition decl_device_factory.hpp:39
Generic CVB physical device.
Definition decl_device.hpp:78
HandleOnly class is as it says a handle only.
Definition handle_only.hpp:21
Array interface.
Definition iarray.hpp:16
The Common Vision Blox image.
Definition decl_image.hpp:50
Image plane information container.
Definition decl_image_plane.hpp:29
Linear access properties.
Definition decl_linear_access.hpp:25
PFNC buffer class implementing a pfnc buffer.
Definition pfnc_buffer.hpp:15
Mapped image of two merged source images.
Definition panoramic_mapped_image.hpp:19
Helper class that takes care of pixel format conversion.
Definition pixel_format_converter.hpp:37
Lazy enumeration of planes.
Definition decl_plane_enumerator.hpp:27
Plane information container.
Definition decl_plane.hpp:25
Point components of a sparse point cloud.
Definition sparse_components_pointers_3d.hpp:14
Virtual Pixel Access Table.
Definition decl_vpat.hpp:24
A wrapped image wraps another pixel buffer without owning it.
Definition decl_wrapped_image.hpp:28
void * OBJ
T move(T... args)
@ Size
Area of the blob in pixels.
Definition blob.hpp:56
@ Value
Gets the value for an info key name.
Definition genapi.hpp:263
Root namespace for the Image Manager interface.
Definition version.hpp:11
std::shared_ptr< HandleOnly > HandleOnlyPtr
Convenience shared pointer for HandleOnly.
Definition global.hpp:106
std::shared_ptr< PFNCBuffer > PFNCBufferPtr
Convenience shared pointer for PFNCBuffer.
Definition global.hpp:70
RotationMap
Amount of rotation to apply when mapping an image.
Definition global.hpp:377
@ By180Degrees
Definition global.hpp:386
@ By270Degrees
Definition global.hpp:391
@ By90Degrees
Definition global.hpp:381
@ Float
Definition core_3d.hpp:94
std::shared_ptr< Buffer > BufferPtr
Convenience shared pointer for Buffer.
Definition global.hpp:62
PanoramaDirection
Defines the direction of the panoramic image.
Definition global.hpp:493
@ Vertical
Images are stitched vertically.
Definition global.hpp:497
@ Horizontal
Images are stitched horizontally.
Definition global.hpp:495
SubPixelMode
Method for determining sub pixel accuracy when working with the FindLocalMaxima functions.
Definition global.hpp:312
@ ParabolicFast
Definition global.hpp:318
@ ParabolicAccurate
Definition global.hpp:323
@ Gaussian
Definition global.hpp:328
ConversionMode
Mode used by conversion to dense point cloud.
Definition global.hpp:524
@ Automatic
Definition global.hpp:528
MappingOption
Mapping options when creating a (potentially) mapped image.
Definition global.hpp:361
@ LinkPixels
Definition global.hpp:372
@ CopyPixels
Definition global.hpp:365
WaitStatus
Status after waiting for an image to be returned.
Definition global.hpp:396
@ Abort
The acquisition has been stopped asynchronously, there is no image buffer.
Definition global.hpp:402
@ Ok
Everything is fine, a new image arrived.
Definition global.hpp:398
@ Timeout
A timeout occurred, no image buffer has been returned.
Definition global.hpp:400
std::shared_ptr< Image > ImagePtr
Convenience shared pointer for Image.
Definition global.hpp:86
std::shared_ptr< CancellationToken > CancellationTokenPtr
Convenience shared pointer for CancellationToken.
Definition global.hpp:110
PixelDataType
Defines the numeric data type of one pixel.
Definition global.hpp:149
@ UInt
Definition global.hpp:159
@ Int
Definition global.hpp:163
@ ComplexPackedFloat
Definition global.hpp:171
@ Undefined
Definition global.hpp:155
std::shared_ptr< PlaneEnumerator > PlaneEnumeratorPtr
Convenience shared pointer for PlaneEnumerator.
Definition global.hpp:82
ColorModel
Color model that this image is using.
Definition global.hpp:176
@ CieLUV
Definition global.hpp:216
@ HLS
Definition global.hpp:224
@ CieLab
Definition global.hpp:220
@ MonoGuess
Definition global.hpp:184
@ HSI
Definition global.hpp:208
@ Mono
Definition global.hpp:192
@ HSV
Definition global.hpp:232
@ CieXYZ
Definition global.hpp:236
@ RGB
Definition global.hpp:200
@ YUV
Definition global.hpp:204
@ YCC
Definition global.hpp:228
@ YCbCr
Definition global.hpp:212
@ RGBGuess
Definition global.hpp:180
std::shared_ptr< CancellationTokenSource > CancellationTokenSourcePtr
Convenience shared pointer for CancellationTokenSource.
Definition global.hpp:114
CoordinateSystemType
Enumeration of the different available coordinate systems that an Area of interest may be defined in.
Definition global.hpp:290
@ PixelCoordinates
Definition global.hpp:298
@ ImageCoordinates
Definition global.hpp:307
std::shared_ptr< WrappedImage > WrappedImagePtr
Convenience shared pointer for WrappedImage.
Definition global.hpp:90
ConnectionState
Current connection state of the Device.
Definition global.hpp:502
@ Connected
The Device object is currently connected to the remote hardware.
Definition global.hpp:506
@ NotSupported
Connection state handling is not supported by the Device.
Definition global.hpp:504
@ Disconnected
The Device object is currently disconnected from the remote hardware.
Definition global.hpp:508
std::shared_ptr< Device > DevicePtr
Convenience shared pointer for Device.
Definition global.hpp:98
Neighborhood
Neighborhood to use in sub pixel calculation of local maxima.
Definition global.hpp:337
@ Use3x3
Definition global.hpp:341
@ Use7x7
Definition global.hpp:351
@ Use5x5
Definition global.hpp:346
@ Use9x9
Definition global.hpp:356
std::shared_ptr< CompressedPFNCBuffer > CompressedPFNCBufferPtr
Convenience shared pointer for a compressed PFNCBuffer.
Definition global.hpp:74
CompressedBufferType
The possible image compression types a CVB buffer can transport within GenDC.
Definition global.hpp:132
@ Unknown
Definition global.hpp:136
@ JPEG
Definition global.hpp:140
@ JPEG2000
Definition global.hpp:144
DeviceUpdateMode
Defines how to treat the optional device image, when the device itself is updated.
Definition global.hpp:252
@ NewDeviceImage
Definition global.hpp:272
@ UpdateDeviceImage
Definition global.hpp:261
PlaneNormalization
Plane handling for normalization.
Definition global.hpp:277
@ Individual
Definition global.hpp:281
@ Identical
Definition global.hpp:285
std::shared_ptr< BufferBase > BufferBasePtr
Convenience shared pointer for BufferBase.
Definition global.hpp:66
std::shared_ptr< PixelFormatConverter > PixelFormatConverterPtr
Convenience shared pointer for PixelFormatConverter.
Definition global.hpp:118
PlaneRole
A plane role describes the components of the plane. They can coarsely be separated in two sets.
Definition global.hpp:411
@ PixYUV_Y
Same as PixMono, but to distinguish YUV model.
Definition global.hpp:424
@ PixLAB_A
Green-red chrominance channel.
Definition global.hpp:438
@ PixRGB_R
Red channel value.
Definition global.hpp:418
@ PointVariation
Variation of points in cloud.
Definition global.hpp:479
@ CoordCartesian_W
Cartesian W axis component (homogeneous coordinates).
Definition global.hpp:453
@ CoordCartesian_Y
Cartesian Y axis component.
Definition global.hpp:449
@ PointPlanarity
Planarity of points in cloud.
Definition global.hpp:477
@ CoordCartesian_X
Cartesian X axis component.
Definition global.hpp:447
@ CoordPolar_Phi
Polar azimuth angle component.
Definition global.hpp:457
@ PixConfidence
Confidence(probability density / percentage) or consistency(Boolean) value.
Definition global.hpp:442
@ Normal_Z
Normal in Z.
Definition global.hpp:475
@ PixLAB_B
Blue-yellow chrominance channel.
Definition global.hpp:440
@ PointSphericity
Sphericity of points in cloud.
Definition global.hpp:481
@ PointCurvature
Curvature of points in cloud.
Definition global.hpp:485
@ PixRGB_B
Blue channel value.
Definition global.hpp:422
@ CoordCylindrical_Phi
Cylindrical azimuth angle component.
Definition global.hpp:461
@ CoordCylindrical_Rho
Cylindrical radius component.
Definition global.hpp:459
@ Normal_X
Normal in X.
Definition global.hpp:471
@ Custom
Custom roles.
Definition global.hpp:488
@ CoordCartesian_Z
Cartesian Z axis component.
Definition global.hpp:451
@ CoordSpherical_Phi
Spherical azimuth angle component.
Definition global.hpp:467
@ PointLinearity
Linearity of points in cloud.
Definition global.hpp:483
@ PixRGB_RGB
Red-green-blue channel value.
Definition global.hpp:444
@ PixYUV_V
Red chrominance channel.
Definition global.hpp:428
@ CoordPolar_Rho
Polar radius component.
Definition global.hpp:455
@ PixHSV_V
Value(luminance) channel value.
Definition global.hpp:434
@ PixYUV_U
Blue chrominance channel.
Definition global.hpp:426
@ Normal_Y
Normal in Y.
Definition global.hpp:473
@ PixLAB_L
Lightness channel value.
Definition global.hpp:436
@ CoordCylindrical_Z
Cylindrical Z axis component.
Definition global.hpp:463
@ PixRGB_G
Green channel value.
Definition global.hpp:420
@ PixHSV_H
Hue channel value.
Definition global.hpp:430
@ CoordSpherical_Theta
Spherical inclination/polar angle component.
Definition global.hpp:469
@ PixMono
Monochromatic, linear luminance value.
Definition global.hpp:416
@ CoordSpherical_Rho
Spherical radius component.
Definition global.hpp:465
std::shared_ptr< Composite > CompositePtr
Convenience shared pointer for Composite.
Definition global.hpp:102
std::shared_ptr< Plane > PlanePtr
Convenience shared pointer for Plane.
Definition global.hpp:78
std::shared_ptr< PanoramicMappedImage > PanoramicMappedImagePtr
Convenience shared pointer for PanoramicMappedImageImage.
Definition global.hpp:94
Definition global.hpp:1049