Add push button support for OFX plugins
This commit adds support for push buttons in OFX plugins by: - Adding `kPushButton` to `NodeValue` enum - Implementing `pushButtonClicked` slot in `PluginNode` - Creating `NodeParamButton` widget for UI representation - Updating `paraminstance.h` to handle push button instances - Modifying `nodeparamviewwidgetbridge.cpp` to connect push button signals
This commit is contained in:
@@ -21,20 +21,21 @@
|
||||
#ifndef PARAM_INSTANCE_H
|
||||
#define PARAM_INSTANCE_H
|
||||
|
||||
#include "OlivePluginInstance.h"
|
||||
#include "ofxhParam.h"
|
||||
#include "node/plugins/Plugin.h"
|
||||
namespace olive
|
||||
{
|
||||
namespace plugin
|
||||
{
|
||||
class PushbuttonInstance : public OFX::Host::Param::PushbuttonInstance {
|
||||
protected:
|
||||
OlivePluginInstance* _effect;
|
||||
PluginNode* node;
|
||||
OFX::Host::Param::Descriptor *_descriptor;
|
||||
public:
|
||||
PushbuttonInstance(OlivePluginInstance *effect, const std::string &name,
|
||||
PushbuttonInstance(PluginNode *effect, const std::string &name,
|
||||
OFX::Host::Param::Descriptor &descriptor)
|
||||
: OFX::Host::Param::PushbuttonInstance( descriptor)
|
||||
: OFX::Host::Param::PushbuttonInstance(descriptor)
|
||||
, node(effect)
|
||||
{
|
||||
_descriptor = &descriptor;
|
||||
};
|
||||
@@ -42,22 +43,58 @@ public:
|
||||
|
||||
class IntegerInstance : public OFX::Host::Param::IntegerInstance {
|
||||
protected:
|
||||
OlivePluginInstance* _effect;
|
||||
PluginNode* _node;
|
||||
OFX::Host::Param::Descriptor& _descriptor;
|
||||
QString id;
|
||||
public:
|
||||
IntegerInstance(OlivePluginInstance* effect, const std::string& name, OFX::Host::Param::Descriptor& descriptor);
|
||||
OfxStatus get(int&);
|
||||
OfxStatus get(OfxTime time, int&);
|
||||
OfxStatus set(int);
|
||||
OfxStatus set(OfxTime time, int);
|
||||
IntegerInstance(PluginNode *node, OFX::Host::Param::Descriptor &descriptor)
|
||||
: _node(node), _descriptor(descriptor),
|
||||
OFX::Host::Param::IntegerInstance(_descriptor){}
|
||||
OfxStatus get(int &a)
|
||||
{
|
||||
if (id.isEmpty()) {
|
||||
return kOfxStatErrBadHandle;
|
||||
}
|
||||
QVariant variant=_node->GetStandardValue(id);
|
||||
|
||||
if (variant.typeId()==QVariant::Int) {
|
||||
a=variant.toInt();
|
||||
return kOfxStatOK;
|
||||
}
|
||||
a=0;
|
||||
return kOfxStatErrValue;
|
||||
}
|
||||
OfxStatus get(OfxTime time, int &data)
|
||||
{
|
||||
if (id.isEmpty()) {
|
||||
return kOfxStatErrBadHandle;
|
||||
}
|
||||
QVariant variant=_node->GetValueAtTime(id, rational::fromDouble(time));
|
||||
if (variant.typeId()==QVariant::Int) {
|
||||
data=variant.toInt();
|
||||
return kOfxStatOK;
|
||||
}
|
||||
data=0;
|
||||
return kOfxStatErrValue;
|
||||
}
|
||||
OfxStatus set(int data)
|
||||
{
|
||||
_node->SetStandardValue(_descriptor.getName().c_str(), data);
|
||||
id=_descriptor.getName().c_str();
|
||||
return kOfxStatOK;
|
||||
}
|
||||
OfxStatus set(OfxTime time, int)
|
||||
{
|
||||
_node->SetValueAtTime()
|
||||
}
|
||||
};
|
||||
|
||||
class DoubleInstance : public OFX::Host::Param::DoubleInstance {
|
||||
protected:
|
||||
OlivePluginInstance* _effect;
|
||||
PluginNode* node;
|
||||
OFX::Host::Param::Descriptor& _descriptor;
|
||||
public:
|
||||
DoubleInstance(OlivePluginInstance* effect, const std::string& name, OFX::Host::Param::Descriptor& descriptor);
|
||||
DoubleInstance(PluginNode* effect, const std::string& name, OFX::Host::Param::Descriptor& descriptor);
|
||||
OfxStatus get(double&);
|
||||
OfxStatus get(OfxTime time, double&);
|
||||
OfxStatus set(double);
|
||||
@@ -68,10 +105,10 @@ public:
|
||||
|
||||
class BooleanInstance : public OFX::Host::Param::BooleanInstance {
|
||||
protected:
|
||||
OlivePluginInstance* _effect;
|
||||
PluginNode* node;
|
||||
OFX::Host::Param::Descriptor& _descriptor;
|
||||
public:
|
||||
BooleanInstance(OlivePluginInstance* effect, const std::string& name, OFX::Host::Param::Descriptor& descriptor);
|
||||
BooleanInstance(PluginNode* effect, const std::string& name, OFX::Host::Param::Descriptor& descriptor);
|
||||
OfxStatus get(bool&);
|
||||
OfxStatus get(OfxTime time, bool&);
|
||||
OfxStatus set(bool);
|
||||
@@ -80,10 +117,10 @@ public:
|
||||
|
||||
class ChoiceInstance : public OFX::Host::Param::ChoiceInstance {
|
||||
protected:
|
||||
OlivePluginInstance* _effect;
|
||||
PluginNode* node;
|
||||
OFX::Host::Param::Descriptor& _descriptor;
|
||||
public:
|
||||
ChoiceInstance(OlivePluginInstance* effect, const std::string& name, OFX::Host::Param::Descriptor& descriptor);
|
||||
ChoiceInstance(PluginNode* effect, const std::string& name, OFX::Host::Param::Descriptor& descriptor);
|
||||
OfxStatus get(int&);
|
||||
OfxStatus get(OfxTime time, int&);
|
||||
OfxStatus set(int);
|
||||
@@ -92,10 +129,10 @@ public:
|
||||
|
||||
class RGBAInstance : public OFX::Host::Param::RGBAInstance {
|
||||
protected:
|
||||
OlivePluginInstance* _effect;
|
||||
PluginNode* node;
|
||||
OFX::Host::Param::Descriptor& _descriptor;
|
||||
public:
|
||||
RGBAInstance(OlivePluginInstance* effect, const std::string& name, OFX::Host::Param::Descriptor& descriptor);
|
||||
RGBAInstance(PluginNode* effect, const std::string& name, OFX::Host::Param::Descriptor& descriptor);
|
||||
OfxStatus get(double&,double&,double&,double&);
|
||||
OfxStatus get(OfxTime time, double&,double&,double&,double&);
|
||||
OfxStatus set(double,double,double,double);
|
||||
@@ -105,10 +142,10 @@ public:
|
||||
|
||||
class RGBInstance : public OFX::Host::Param::RGBInstance {
|
||||
protected:
|
||||
OlivePluginInstance* _effect;
|
||||
PluginNode* node;
|
||||
OFX::Host::Param::Descriptor& _descriptor;
|
||||
public:
|
||||
RGBInstance(OlivePluginInstance* effect, const std::string& name, OFX::Host::Param::Descriptor& descriptor);
|
||||
RGBInstance(PluginNode* effect, const std::string& name, OFX::Host::Param::Descriptor& descriptor);
|
||||
OfxStatus get(double&,double&,double&);
|
||||
OfxStatus get(OfxTime time, double&,double&,double&);
|
||||
OfxStatus set(double,double,double);
|
||||
@@ -117,10 +154,10 @@ public:
|
||||
|
||||
class Double2DInstance : public OFX::Host::Param::Double2DInstance {
|
||||
protected:
|
||||
OlivePluginInstance* _effect;
|
||||
PluginNode* node;
|
||||
OFX::Host::Param::Descriptor& _descriptor;
|
||||
public:
|
||||
Double2DInstance(OlivePluginInstance* effect, const std::string& name, OFX::Host::Param::Descriptor& descriptor);
|
||||
Double2DInstance(PluginNode* effect, const std::string& name, OFX::Host::Param::Descriptor& descriptor);
|
||||
OfxStatus get(double&,double&);
|
||||
OfxStatus get(OfxTime time,double&,double&);
|
||||
OfxStatus set(double,double);
|
||||
@@ -129,10 +166,10 @@ public:
|
||||
|
||||
class Integer2DInstance : public OFX::Host::Param::Integer2DInstance {
|
||||
protected:
|
||||
OlivePluginInstance* _effect;
|
||||
PluginNode* node;
|
||||
OFX::Host::Param::Descriptor& _descriptor;
|
||||
public:
|
||||
Integer2DInstance(OlivePluginInstance* effect, const std::string& name, OFX::Host::Param::Descriptor& descriptor);
|
||||
Integer2DInstance(PluginNode* effect, const std::string& name, OFX::Host::Param::Descriptor& descriptor);
|
||||
OfxStatus get(int&,int&);
|
||||
OfxStatus get(OfxTime time,int&,int&);
|
||||
OfxStatus set(int,int);
|
||||
@@ -144,6 +181,3 @@ public:
|
||||
|
||||
|
||||
#endif // HOST_DEMO_PARAM_INSTANCE_H
|
||||
|
||||
|
||||
#endif //PARAMINSTANCE_H
|
||||
|
||||
Reference in New Issue
Block a user