// Copyright (c) 2012-2017 VideoStitch SAS // Copyright (c) 2018 stitchEm #pragma once #include "libvideostitch/overlayInputDef.hpp" #include "deferredUpdater.hpp" namespace VideoStitch { namespace Core { class OverlayInputDefinitionUpdater : public OverlayInputDefinition, public DeferredUpdater<OverlayInputDefinition> { public: explicit OverlayInputDefinitionUpdater(const OverlayInputDefinition &overlayInputDefinition); explicit OverlayInputDefinitionUpdater(OverlayInputDefinition *overlayInputDefinition); virtual OverlayInputDefinition *clone() const override; virtual Ptv::Value *serialize() const override; virtual bool operator==(const OverlayInputDefinition &other) const override; virtual bool validate(std::ostream &os) const override; virtual const Ptv::Value &getReaderConfig() const override; virtual int64_t getWidth() const override; virtual int64_t getHeight() const override; virtual void setWidth(int64_t int64) override; virtual void setHeight(int64_t int64) override; virtual frameid_t getFrameOffset() const override; virtual void setReaderConfig(Ptv::Value *config) override; virtual void setFrameOffset(int fo) override; virtual void setFilename(const std::string &fileName) override; virtual std::string getDisplayName() const override; virtual bool getGlobalOrientationApplied() const override; virtual void setGlobalOrientationApplied(const bool status) override; virtual const CurveTemplate<double> &getScaleCurve() const override; virtual CurveTemplate<double> *displaceScaleCurve(CurveTemplate<double> *newCurve) override; virtual void resetScaleCurve() override; virtual void replaceScaleCurve(CurveTemplate<double> *newCurve) override; virtual const CurveTemplate<double> &getTransXCurve() const override; virtual CurveTemplate<double> *displaceTransXCurve(CurveTemplate<double> *newCurve) override; virtual void resetTransXCurve() override; virtual void replaceTransXCurve(CurveTemplate<double> *newCurve) override; virtual const CurveTemplate<double> &getTransYCurve() const override; virtual CurveTemplate<double> *displaceTransYCurve(CurveTemplate<double> *newCurve) override; virtual void resetTransYCurve() override; virtual void replaceTransYCurve(CurveTemplate<double> *newCurve) override; virtual const CurveTemplate<double> &getTransZCurve() const override; virtual CurveTemplate<double> *displaceTransZCurve(CurveTemplate<double> *newCurve) override; virtual void resetTransZCurve() override; virtual void replaceTransZCurve(CurveTemplate<double> *newCurve) override; virtual const CurveTemplate<double> &getAlphaCurve() const override; virtual CurveTemplate<double> *displaceAlphaCurve(CurveTemplate<double> *newCurve) override; virtual void resetAlphaCurve() override; virtual void replaceAlphaCurve(CurveTemplate<double> *newCurve) override; virtual const CurveTemplate<Quaternion<double>> &getRotationCurve() const override; virtual CurveTemplate<Quaternion<double>> *displaceRotationCurve( CurveTemplate<Quaternion<double>> *newCurve) override; virtual void resetRotationCurve() override; virtual void replaceRotationCurve(CurveTemplate<Quaternion<double>> *newCurve) override; private: std::unique_ptr<OverlayInputDefinition> overlayInputDefinition; }; } // namespace Core } // namespace VideoStitch