Commit c03f1c90a42d99a945d4313118a4d5ae50cddd8f
1 parent
4c0fea7e
Preliminary support for accessing named events through a Transform method
Showing
4 changed files
with
65 additions
and
0 deletions
openbr/openbr_plugin.h
| ... | ... | @@ -1040,6 +1040,21 @@ private: |
| 1040 | 1040 | * @{ |
| 1041 | 1041 | */ |
| 1042 | 1042 | |
| 1043 | +class TemplateEvent : public QObject | |
| 1044 | +{ | |
| 1045 | + Q_OBJECT | |
| 1046 | + | |
| 1047 | +public: | |
| 1048 | + void pulseSignal(const Template & output) const | |
| 1049 | + { | |
| 1050 | + emit theSignal(output); | |
| 1051 | + } | |
| 1052 | + | |
| 1053 | +signals: | |
| 1054 | + void theSignal(const Template & output) const; | |
| 1055 | +}; | |
| 1056 | + | |
| 1057 | + | |
| 1043 | 1058 | /*! |
| 1044 | 1059 | * \brief Plugin base class for processing a template. |
| 1045 | 1060 | * |
| ... | ... | @@ -1144,6 +1159,15 @@ public: |
| 1144 | 1159 | */ |
| 1145 | 1160 | virtual Transform * smartCopy() { return this;} |
| 1146 | 1161 | |
| 1162 | + /*! | |
| 1163 | + * \brief Recursively retrieve a named event, returns NULL if an event is not found. | |
| 1164 | + */ | |
| 1165 | + virtual TemplateEvent * getEvent(const QString & name) | |
| 1166 | + { | |
| 1167 | + (void) name; | |
| 1168 | + return NULL; | |
| 1169 | + } | |
| 1170 | + | |
| 1147 | 1171 | protected: |
| 1148 | 1172 | Transform(bool independent = true, bool trainable = true); /*!< \brief Construct a transform. */ |
| 1149 | 1173 | inline Transform *make(const QString &description) { return make(description, this); } /*!< \brief Make a subtransform. */ | ... | ... |
openbr/plugins/meta.cpp
| ... | ... | @@ -615,6 +615,12 @@ public: |
| 615 | 615 | return output; |
| 616 | 616 | } |
| 617 | 617 | |
| 618 | + virtual TemplateEvent * getEvent(const QString & name) | |
| 619 | + { | |
| 620 | + return transform->getEvent(name); | |
| 621 | + } | |
| 622 | + | |
| 623 | + | |
| 618 | 624 | void train(const TemplateList &data) |
| 619 | 625 | { |
| 620 | 626 | transform->train(data); | ... | ... |
openbr/plugins/misc.cpp
| ... | ... | @@ -562,6 +562,28 @@ class ExpandRectTransform : public UntrainableTransform |
| 562 | 562 | |
| 563 | 563 | BR_REGISTER(Transform, ExpandRectTransform) |
| 564 | 564 | |
| 565 | + | |
| 566 | +class EventTransform : public UntrainableMetaTransform | |
| 567 | +{ | |
| 568 | + Q_OBJECT | |
| 569 | + Q_PROPERTY(QString eventName READ get_eventName WRITE set_eventName RESET reset_eventName STORED false) | |
| 570 | + BR_PROPERTY(QString, eventName, "") | |
| 571 | + | |
| 572 | + TemplateEvent event; | |
| 573 | + | |
| 574 | + void project(const Template &src, Template &dst) const | |
| 575 | + { | |
| 576 | + dst = src; | |
| 577 | + event.pulseSignal(dst); | |
| 578 | + } | |
| 579 | + | |
| 580 | + TemplateEvent * getEvent(const QString & name) | |
| 581 | + { | |
| 582 | + return name == eventName ? &event : NULL; | |
| 583 | + } | |
| 584 | +}; | |
| 585 | +BR_REGISTER(Transform, EventTransform) | |
| 586 | + | |
| 565 | 587 | } |
| 566 | 588 | |
| 567 | 589 | #include "misc.moc" | ... | ... |
openbr/plugins/openbr_internal.h
| ... | ... | @@ -234,6 +234,19 @@ public: |
| 234 | 234 | return output; |
| 235 | 235 | } |
| 236 | 236 | |
| 237 | + virtual TemplateEvent * getEvent(const QString & name) | |
| 238 | + { | |
| 239 | + foreach(Transform* t, transforms ) | |
| 240 | + { | |
| 241 | + TemplateEvent * probe = t->getEvent(name); | |
| 242 | + if (probe) | |
| 243 | + return probe; | |
| 244 | + } | |
| 245 | + | |
| 246 | + return NULL; | |
| 247 | + } | |
| 248 | + | |
| 249 | + | |
| 237 | 250 | protected: |
| 238 | 251 | bool isTimeVarying; |
| 239 | 252 | ... | ... |