CVB++ 15.0
rgba_converter.hpp
1#pragma once
2
3#include "../_cexports/c_webstreaming.h"
4#include "converter.hpp"
5
6namespace Cvb
7{
8
9 CVB_BEGIN_INLINE_NS
10
11 namespace WebStreaming
12 {
13
20 class RGBAConverter : public Converter
21 {
22 private:
23 struct PrivateTag
24 {
25 };
26
27 public:
29
34 {
35 return Internal::DoResCallShareOut<RGBAConverter>(
36 [&](void *&handle) { return CVB_CALL_CAPI(CVWSCreateConverter(CExports::CVWSCT_Rgba, handle)); });
37 }
38
39 template <class T>
40 static RGBAConverterPtr FromHandle(HandleGuard<Converter> &&guard)
41 {
42 static_assert(std::is_same<RGBAConverter, T>::value, "CVB: T must be RGBAConverter");
43 if (!guard.Handle())
44 throw std::runtime_error("converter handle invalid");
45 return std::make_shared<T>(std::move(guard), PrivateTag{});
46 }
47
48 RGBAConverter(HandleGuard<Converter> &&guard, PrivateTag) noexcept
49 : Converter(std::move(guard))
50 {
51 }
52 };
53
54 } // namespace WebStreaming
55
56 CVB_END_INLINE_NS
57
58} // namespace Cvb
static RGBAConverterPtr Create()
Creates a new RGBA converter.
Definition rgba_converter.hpp:33
T make_shared(T... args)
T move(T... args)
Namespace for streaming images via web sockets.
Definition converter.hpp:20
std::shared_ptr< RGBAConverter > RGBAConverterPtr
Convenience shared pointer for RGBAConverter.
Definition webstreaming.hpp:35
Root namespace for the Image Manager interface.
Definition c_bayer_to_rgb.h:17