CVB++ 15.0
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
895 class SmartBool final
896 {
897 public:
898 SmartBool() noexcept = default;
899 SmartBool(bool val) noexcept
900 : cVal_(val ? 1 : 0)
901 {
902 } // NOLINT
903
904#if defined _WIN32
905 SmartBool(CExports::cvbbool_t val) noexcept
906 : cVal_(val)
907 {
908 } // NOLINT
909#endif
910
911 operator bool() const noexcept
912 {
913 return ((cVal_) ? true : false);
914 } // NOLINT
915
916 CExports::cvbbool_t *Ptr() noexcept
917 {
918 return &cVal_;
919 }
920
921 private:
922 CExports::cvbbool_t cVal_ = 0;
923 };
924
925 } // namespace Internal
926
927 template <class T>
928 using IsNumeric =
929 std::integral_constant<bool, std::is_same<double, T>::value || std::is_same<float, T>::value
930 || std::is_same<std::int64_t, T>::value || std::is_same<std::int32_t, T>::value
931 || std::is_same<std::int16_t, T>::value || std::is_same<std::int8_t, T>::value>;
932
933 template <class T>
934 using EnableIfNumeric = std::enable_if<IsNumeric<T>::value>;
935
936 template <class T>
937 using EnableIfArithmetic = std::enable_if<std::is_arithmetic<T>::value>;
938
939 template <class T, class... ARGS>
940 struct AllOfType;
941
942 template <class T, class ARG>
943 struct AllOfType<T, ARG>
944 {
945 static constexpr bool Value =
946 std::is_same<typename std::remove_const<typename std::remove_reference<T>::type>::type, ARG>::value
947 || std::is_base_of<typename std::remove_const<typename std::remove_reference<T>::type>::type, ARG>::value;
948 };
949
950 template <class T, class ARG, class... ARGS>
951 struct AllOfType<T, ARG, ARGS...>
952 {
953 static constexpr bool Value =
954 (std::is_same<typename std::remove_const<typename std::remove_reference<T>::type>::type, ARG>::value
955 || std::is_base_of<typename std::remove_const<typename std::remove_reference<T>::type>::type, ARG>::value)
956 && AllOfType<T, ARGS...>::Value;
957 };
958
959 template <typename RET, typename TYPE, class RANGE>
960 using TypedRange =
961 std::enable_if<std::is_same<TYPE, typename std::remove_const<typename std::remove_reference<decltype(*std::begin(
962 std::declval<RANGE &>()))>::type>::type>::value,
963 RET>;
964
965 template <class RET, class TYPE, class... ARGS>
966 using VarArgRange = typename std::enable_if<AllOfType<TYPE, ARGS...>::Value, RET>;
967
968 template <class TYPE, class RANGE>
969 class RangeAdapter
970 {
971 public:
972 /* The constructor only stores the reference and compile-time-checks the value type.
973 * All operations are performed only when needed. */
974 explicit RangeAdapter(const RANGE &range)
975 : inputRef_(range)
976 {
977 static_assert(
978 std::is_same<typename std::remove_const<
979 typename std::remove_reference<decltype(*std::begin(std::declval<RANGE &>()))>::type>::type,
980 TYPE>::value,
981 "Unexpected range value type");
982 }
983
984 /* Returns pointer to the range values in a contiguous memory block. */
985 TYPE *Data() const
986 {
987 return const_cast<TYPE *>(Data(inputRef_.get())); // NOLINT(cppcoreguidelines-pro-type-const-cast)
988 }
989
990 /* Returns size of the range. */
991 std::size_t Size() const
992 {
993 return std::distance(std::begin(inputRef_.get()), std::end(inputRef_.get()));
994 }
995
996 private:
997 /* Actual input-range dependent workers for the contiguous data query. */
998 template <size_t N>
999 const TYPE *Data(const TYPE (&carray)[N]) const
1000 {
1001 return carray;
1002 } // NOLINT(cppcoreguidelines-avoid-c-arrays)
1003
1004 template <size_t N>
1005 const TYPE *Data(const std::array<TYPE, N> &stdarray) const
1006 {
1007 return stdarray.data();
1008 }
1009
1010 const TYPE *Data(const std::vector<TYPE> &stdvec) const
1011 {
1012 return stdvec.data();
1013 }
1014
1015 template <class LIST>
1016 const TYPE *Data(const LIST &list) const
1017 {
1018 if (convertedRange_.empty())
1019 {
1020 convertedRange_.assign(std::begin(list), std::end(list));
1021 }
1022 return convertedRange_.data();
1023 }
1024
1025 private:
1026 const std::reference_wrapper<const RANGE> inputRef_;
1027 mutable std::vector<TYPE> convertedRange_;
1028 };
1029
1030 template <class TYPE, class RANGE>
1031 RangeAdapter<TYPE, RANGE> MakeRangeAdapter(const RANGE &range, std::size_t minSize = 1)
1032 {
1033 RangeAdapter<TYPE, RANGE> rangeAdapter(range);
1034 if (minSize != 0 && rangeAdapter.Size() < minSize)
1035 throw std::runtime_error("insufficient number of input range values");
1036 return rangeAdapter;
1037 }
1038
1039 template <class...>
1040 struct DispatchableTypeList
1041 {
1042 };
1043
1044 template <class DT, class... DTS>
1045 struct DispatchableTypeList<DT, DTS...>
1046 {
1047 using DefaultType = DT;
1048 };
1049
1079 template <class PLANE_T>
1081
1082 CVB_END_INLINE_NS
1083
1084} // namespace Cvb
1085
1090
1095
1111
1127
1148
1158
1169
1187
1198
1209
1214
1230
1235
1240
1245
1250
1255
1260
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:45
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:31
Generic CVB physical device.
Definition decl_device.hpp:39
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:45
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:25
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)
Root namespace for the Image Manager interface.
Definition c_bayer_to_rgb.h:17
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:1080