cscore: Add properties support to VideoSink (#1228)

Refactor the Property internals into PropertyContainer.
This commit is contained in:
Peter Johnson
2018-07-27 22:12:30 -07:00
committed by GitHub
parent c9a75a119a
commit 9398278250
24 changed files with 695 additions and 389 deletions

View File

@@ -25,11 +25,6 @@ class CvSourceImpl : public SourceImpl {
void Start();
// Property functions
void SetProperty(int property, int value, CS_Status* status) override;
void SetStringProperty(int property, wpi::StringRef value,
CS_Status* status) override;
// Standard common camera properties
void SetBrightness(int brightness, CS_Status* status) override;
int GetBrightness(CS_Status* status) const override;
@@ -56,30 +51,6 @@ class CvSourceImpl : public SourceImpl {
void SetEnumPropertyChoices(int property, wpi::ArrayRef<std::string> choices,
CS_Status* status);
// Property data
class PropertyData : public PropertyImpl {
public:
PropertyData() = default;
explicit PropertyData(wpi::StringRef name_) : PropertyImpl{name_} {}
PropertyData(wpi::StringRef name_, CS_PropertyKind kind_, int minimum_,
int maximum_, int step_, int defaultValue_, int value_)
: PropertyImpl{name_, kind_, step_, defaultValue_, value_} {
hasMinimum = true;
minimum = minimum_;
hasMaximum = true;
maximum = maximum_;
}
~PropertyData() override = default;
std::function<void(CS_Property property)> onChange;
};
protected:
std::unique_ptr<PropertyImpl> CreateEmptyProperty(
wpi::StringRef name) const override;
bool CacheProperties(CS_Status* status) const override;
private:
std::atomic_bool m_connected{true};
};