Logo
ApraPipes 1.0
Loading...
Searching...
No Matches
TextOverlayXForm.h
1#pragma once
2
3#include "Module.h"
4#include "declarative/PropertyMacros.h"
5
7{
8public:
9 TextOverlayXFormProps(double _alpha, std::string _text, std::string _position, bool _isDateTime, int _fontSize, std::string _fontColor, std::string _backgroundColor) : alpha(_alpha), text(_text), position(_position), isDateTime(_isDateTime), fontSize(_fontSize), fontColor(_fontColor), backgroundColor(_backgroundColor)
10 {
11 }
12
13 TextOverlayXFormProps() : alpha(1.0), text(""), position("top-left"), isDateTime(false), fontSize(24), fontColor("white"), backgroundColor("transparent")
14 {
15 }
16
18 double alpha;
21
23 {
24 return ModuleProps::getSerializeSize() + sizeof(fontSize) + sizeof(text) + sizeof(fontColor) + sizeof(position) + sizeof(backgroundColor) + sizeof(isDateTime) + sizeof(alpha) + text.length() + fontColor.length() + position.length() + backgroundColor.length();
25 }
26
27 // ============================================================
28 // Property Binding for Declarative Pipeline
29 // ============================================================
30 template<typename PropsT>
31 static void applyProperties(
32 PropsT& props,
33 const std::map<std::string, apra::ScalarPropertyValue>& values,
34 std::vector<std::string>& missingRequired
35 ) {
36 apra::applyProp(props.text, "text", values, false, missingRequired);
37 apra::applyProp(props.position, "position", values, false, missingRequired);
38 apra::applyProp(props.fontColor, "fontColor", values, false, missingRequired);
39 apra::applyProp(props.backgroundColor, "backgroundColor", values, false, missingRequired);
40 apra::applyProp(props.alpha, "alpha", values, false, missingRequired);
41 apra::applyProp(props.isDateTime, "isDateTime", values, false, missingRequired);
42 apra::applyProp(props.fontSize, "fontSize", values, false, missingRequired);
43 }
44
45 apra::ScalarPropertyValue getProperty(const std::string& propName) const {
46 if (propName == "text") return text;
47 if (propName == "position") return position;
48 if (propName == "fontColor") return fontColor;
49 if (propName == "backgroundColor") return backgroundColor;
50 if (propName == "alpha") return alpha;
51 if (propName == "isDateTime") return isDateTime;
52 if (propName == "fontSize") return static_cast<int64_t>(fontSize);
53 throw std::runtime_error("Unknown property: " + propName);
54 }
55
56 bool setProperty(const std::string& propName, const apra::ScalarPropertyValue& value) {
57 if (propName == "text") { text = std::get<std::string>(value); return true; }
58 if (propName == "position") { position = std::get<std::string>(value); return true; }
59 if (propName == "fontColor") { fontColor = std::get<std::string>(value); return true; }
60 if (propName == "backgroundColor") { backgroundColor = std::get<std::string>(value); return true; }
61 if (propName == "alpha") { alpha = std::get<double>(value); return true; }
62 if (propName == "isDateTime") { isDateTime = std::get<bool>(value); return true; }
63 if (propName == "fontSize") { fontSize = static_cast<int>(std::get<int64_t>(value)); return true; }
64 throw std::runtime_error("Unknown property: " + propName);
65 }
66
67 static std::vector<std::string> dynamicPropertyNames() {
68 return {"text", "position", "fontColor", "backgroundColor", "alpha", "isDateTime", "fontSize"};
69 }
70
71private:
73
74 template <class Archive>
75 void serialize(Archive &ar, const unsigned int version)
76 {
77 ar &boost::serialization::base_object<ModuleProps>(*this);
79 }
80};
81
83{
84
85public:
87 virtual ~TextOverlayXForm();
88 bool init();
89 bool term();
92
93protected:
94 bool process(frame_container &frames);
95 bool processSOS(frame_sp &frame);
96 bool validateInputPins();
97 bool validateOutputPins();
98 void addInputPin(framemetadata_sp &metadata, string &pinId);
99 bool handlePropsChange(frame_sp &frame);
100
101private:
102 void setMetadata(framemetadata_sp &metadata);
103 class Detail;
104 boost::shared_ptr<Detail> mDetail;
105};
Definition Module.h:33
virtual size_t getSerializeSize()
Definition Module.h:101
Definition Module.h:151
Definition TextOverlayXForm.h:7
std::string fontColor
Definition TextOverlayXForm.h:17
bool isDateTime
Definition TextOverlayXForm.h:19
std::string text
Definition TextOverlayXForm.h:17
size_t getSerializeSize()
Definition TextOverlayXForm.h:22
double alpha
Definition TextOverlayXForm.h:18
static std::vector< std::string > dynamicPropertyNames()
Definition TextOverlayXForm.h:67
std::string position
Definition TextOverlayXForm.h:17
static void applyProperties(PropsT &props, const std::map< std::string, apra::ScalarPropertyValue > &values, std::vector< std::string > &missingRequired)
Definition TextOverlayXForm.h:31
TextOverlayXFormProps()
Definition TextOverlayXForm.h:13
void serialize(Archive &ar, const unsigned int version)
Definition TextOverlayXForm.h:75
TextOverlayXFormProps(double _alpha, std::string _text, std::string _position, bool _isDateTime, int _fontSize, std::string _fontColor, std::string _backgroundColor)
Definition TextOverlayXForm.h:9
friend class boost::serialization::access
Definition TextOverlayXForm.h:72
int fontSize
Definition TextOverlayXForm.h:20
std::string backgroundColor
Definition TextOverlayXForm.h:17
bool setProperty(const std::string &propName, const apra::ScalarPropertyValue &value)
Definition TextOverlayXForm.h:56
apra::ScalarPropertyValue getProperty(const std::string &propName) const
Definition TextOverlayXForm.h:45
Definition TextOverlayXForm.cpp:15
Definition TextOverlayXForm.h:83
void setMetadata(framemetadata_sp &metadata)
Definition TextOverlayXForm.cpp:192
bool process(frame_container &frames)
Definition TextOverlayXForm.cpp:106
bool processSOS(frame_sp &frame)
Definition TextOverlayXForm.cpp:238
bool term()
Definition TextOverlayXForm.cpp:101
bool validateOutputPins()
Definition TextOverlayXForm.cpp:69
TextOverlayXForm(TextOverlayXFormProps _props)
Definition TextOverlayXForm.cpp:43
TextOverlayXFormProps getProps()
Definition TextOverlayXForm.cpp:220
void addInputPin(framemetadata_sp &metadata, string &pinId)
Definition TextOverlayXForm.cpp:88
virtual ~TextOverlayXForm()
Definition TextOverlayXForm.cpp:48
bool validateInputPins()
Definition TextOverlayXForm.cpp:50
bool init()
Definition TextOverlayXForm.cpp:96
void setProps(TextOverlayXFormProps &props)
Definition TextOverlayXForm.cpp:225
bool handlePropsChange(frame_sp &frame)
Definition TextOverlayXForm.cpp:230
boost::shared_ptr< Detail > mDetail
Definition TextOverlayXForm.h:104
void applyProp(T &member, const char *propName, const std::map< std::string, ScalarPropertyValue > &values, bool isRequired, std::vector< std::string > &missingRequired)
Definition PropertyMacros.h:36
std::variant< int64_t, double, bool, std::string > ScalarPropertyValue
Definition ModuleRegistry.h:30