node: make convenient input flag setter

This commit is contained in:
itsmattkc
2023-02-20 19:13:50 -08:00
parent 7348d28243
commit f9cd28a694
10 changed files with 63 additions and 38 deletions
+2 -1
View File
@@ -44,7 +44,8 @@ Block::Block() :
SetInputProperty(kLengthInput, QStringLiteral("view"), RationalSlider::kTime);
SetInputProperty(kLengthInput, QStringLiteral("viewlock"), true);
SetInputFlags(kEnabledInput, InputFlags(GetInputFlags(kEnabledInput) | kInputFlagNotConnectable | kInputFlagNotKeyframable));
SetInputFlag(kEnabledInput, kInputFlagNotConnectable);
SetInputFlag(kEnabledInput, kInputFlagNotKeyframable);
SetFlag(kDontShowInParamView);
}
+6 -6
View File
@@ -30,12 +30,12 @@ SubtitleBlock::SubtitleBlock()
{
AddInput(kTextIn, NodeValue::kText, InputFlags(kInputFlagNotConnectable | kInputFlagNotKeyframable));
SetInputFlags(kBufferIn, InputFlags(GetInputFlags(kBufferIn) | kInputFlagHidden));
SetInputFlags(kLengthInput, InputFlags(GetInputFlags(kLengthInput) | kInputFlagHidden));
SetInputFlags(kMediaInInput, InputFlags(GetInputFlags(kMediaInInput) | kInputFlagHidden));
SetInputFlags(kSpeedInput, InputFlags(GetInputFlags(kSpeedInput) | kInputFlagHidden));
SetInputFlags(kReverseInput, InputFlags(GetInputFlags(kReverseInput) | kInputFlagHidden));
SetInputFlags(kMaintainAudioPitchInput, InputFlags(GetInputFlags(kMaintainAudioPitchInput) | kInputFlagHidden));
SetInputFlag(kBufferIn, kInputFlagHidden);
SetInputFlag(kLengthInput, kInputFlagHidden);
SetInputFlag(kMediaInInput, kInputFlagHidden);
SetInputFlag(kSpeedInput, kInputFlagHidden);
SetInputFlag(kReverseInput, kInputFlagHidden);
SetInputFlag(kMaintainAudioPitchInput, kInputFlagHidden);
// Undo block flag that hides in param view
SetFlag(kDontShowInParamView, false);
+1 -1
View File
@@ -32,7 +32,7 @@ const QString MaskDistortNode::kInvertInput = QStringLiteral("invert_in");
MaskDistortNode::MaskDistortNode()
{
// Mask should always be (1.0, 1.0, 1.0) for multiply to work correctly
SetInputFlags(kColorInput, InputFlags(GetInputFlags(kColorInput) | kInputFlagHidden));
SetInputFlag(kColorInput, kInputFlagHidden);
AddInput(kInvertInput, NodeValue::kBoolean, false);
+4 -4
View File
@@ -209,10 +209,10 @@ void BlurFilterNode::InputValueChangedEvent(const QString &input, int element)
void BlurFilterNode::UpdateInputs(Method method)
{
SetInputFlags(kHorizInput, (method == kBox || method == kGaussian) ? InputFlags() : InputFlags(kInputFlagHidden));
SetInputFlags(kVertInput, (method == kBox || method == kGaussian) ? InputFlags() : InputFlags(kInputFlagHidden));
SetInputFlags(kDirectionalDegreesInput, (method == kDirectional) ? InputFlags() : InputFlags(kInputFlagHidden));
SetInputFlags(kRadialCenterInput, (method == kRadial) ? InputFlags() : InputFlags(kInputFlagHidden));
SetInputFlag(kHorizInput, kInputFlagHidden, !(method == kBox || method == kGaussian));
SetInputFlag(kVertInput, kInputFlagHidden, !(method == kBox || method == kGaussian));
SetInputFlag(kDirectionalDegreesInput, kInputFlagHidden, !(method == kDirectional));
SetInputFlag(kRadialCenterInput, kInputFlagHidden, !(method == kRadial));
}
}
+1 -7
View File
@@ -90,13 +90,7 @@ void ShapeNode::Value(const NodeValueRow &value, const NodeGlobals &globals, Nod
void ShapeNode::InputValueChangedEvent(const QString &input, int element)
{
if (input == kTypeInput) {
InputFlags i = GetInputFlags(kRadiusInput);
if (GetStandardValue(kTypeInput).toInt() == kRoundedRectangle) {
i &= InputFlag(~kInputFlagHidden);
} else {
i |= kInputFlagHidden;
}
SetInputFlags(kRadiusInput, i);
SetInputFlag(kRadiusInput, kInputFlagHidden, (GetStandardValue(kTypeInput).toInt() != kRoundedRectangle));
}
super::InputValueChangedEvent(input, element);
}
+2 -2
View File
@@ -103,7 +103,7 @@ void MultiCamNode::InputConnectedEvent(const QString &input, int element, Node *
{
if (input == kSequenceInput) {
if (Sequence *s = dynamic_cast<Sequence*>(output)) {
SetInputFlags(kSequenceTypeInput, GetInputFlags(kSequenceTypeInput) & InputFlag(~kInputFlagHidden));
SetInputFlag(kSequenceTypeInput, kInputFlagHidden, false);
sequence_ = s;
}
}
@@ -112,7 +112,7 @@ void MultiCamNode::InputConnectedEvent(const QString &input, int element, Node *
void MultiCamNode::InputDisconnectedEvent(const QString &input, int element, Node *output)
{
if (input == kSequenceInput) {
SetInputFlags(kSequenceTypeInput, GetInputFlags(kSequenceTypeInput) | kInputFlagHidden);
SetInputFlag(kSequenceTypeInput, kInputFlagHidden, true);
sequence_ = nullptr;
}
}
+6 -2
View File
@@ -903,12 +903,16 @@ InputFlags Node::GetInputFlags(const QString &input) const
}
}
void Node::SetInputFlags(const QString &input, const InputFlags &f)
void Node::SetInputFlag(const QString &input, InputFlag f, bool on)
{
Input* i = GetInternalInputData(input);
if (i) {
i->flags = f;
if (on) {
i->flags |= f;
} else {
i->flags &= ~f;
}
emit InputFlagsChanged(input, i->flags);
} else {
ReportInvalidInput("set flags of", input, -1);
+1 -1
View File
@@ -947,7 +947,7 @@ public:
}
InputFlags GetInputFlags(const QString& input) const;
void SetInputFlags(const QString &input, const InputFlags &f);
void SetInputFlag(const QString &input, InputFlag f, bool on = true);
virtual void LoadFinishedEvent(){}
virtual void ConnectedToPreviewEvent(){}
+39 -13
View File
@@ -30,7 +30,7 @@ namespace olive {
class Node;
class NodeKeyframe;
enum InputFlag {
enum InputFlag : uint64_t {
/// By default, inputs are keyframable, connectable, and NOT arrays
kInputFlagNormal = 0x0,
kInputFlagArray = 0x1,
@@ -61,12 +61,6 @@ public:
return i;
}
InputFlags &operator|=(const InputFlags &f)
{
f_ |= f.f_;
return *this;
}
InputFlags operator|(const InputFlag &f) const
{
InputFlags i = *this;
@@ -74,12 +68,31 @@ public:
return i;
}
InputFlags operator|(const uint64_t &f) const
{
InputFlags i = *this;
i |= f;
return i;
}
InputFlags &operator|=(const InputFlags &f)
{
f_ |= f.f_;
return *this;
}
InputFlags &operator|=(const InputFlag &f)
{
f_ |= f;
return *this;
}
InputFlags &operator|=(const uint64_t &f)
{
f_ |= f;
return *this;
}
InputFlags operator&(const InputFlags &f) const
{
InputFlags i = *this;
@@ -87,12 +100,6 @@ public:
return i;
}
InputFlags &operator&=(const InputFlags &f)
{
f_ &= f.f_;
return *this;
}
InputFlags operator&(const InputFlag &f) const
{
InputFlags i = *this;
@@ -100,12 +107,31 @@ public:
return i;
}
InputFlags operator&(const uint64_t &f) const
{
InputFlags i = *this;
i &= f;
return i;
}
InputFlags &operator&=(const InputFlags &f)
{
f_ &= f.f_;
return *this;
}
InputFlags &operator&=(const InputFlag &f)
{
f_ &= f;
return *this;
}
InputFlags &operator&=(const uint64_t &f)
{
f_ &= f;
return *this;
}
InputFlags operator~() const
{
InputFlags i = *this;
@@ -1003,7 +1003,7 @@ void ProjectSerializer220403::PostConnect(const XMLNodeData &xml_node_data) cons
l.group->AddInputPassthrough(resolved, l.passthrough_id);
l.group->SetInputFlags(l.passthrough_id, resolved.GetFlags() | l.custom_flags);
l.group->SetInputFlag(l.passthrough_id, InputFlag(l.custom_flags.value()));
if (!l.custom_name.isEmpty()) {
l.group->SetInputName(l.passthrough_id, l.custom_name);