diff --git a/app/node/block/transition/crossdissolve/crossdissolvetransition.cpp b/app/node/block/transition/crossdissolve/crossdissolvetransition.cpp index bf50e7486..bc7466785 100644 --- a/app/node/block/transition/crossdissolve/crossdissolvetransition.cpp +++ b/app/node/block/transition/crossdissolve/crossdissolvetransition.cpp @@ -46,9 +46,9 @@ QString CrossDissolveTransition::Description() const return tr("Smoothly transition between two clips."); } -ShaderCode CrossDissolveTransition::GetShaderCode(const QString &shader_id) const +ShaderCode CrossDissolveTransition::GetShaderCode(const ShaderRequest &request) const { - Q_UNUSED(shader_id) + Q_UNUSED(request) return ShaderCode(FileFunctions::ReadFileAsString(":/shaders/crossdissolve.frag"), QString()); } diff --git a/app/node/block/transition/crossdissolve/crossdissolvetransition.h b/app/node/block/transition/crossdissolve/crossdissolvetransition.h index bd6f7ca9e..b1787dbf2 100644 --- a/app/node/block/transition/crossdissolve/crossdissolvetransition.h +++ b/app/node/block/transition/crossdissolve/crossdissolvetransition.h @@ -40,7 +40,7 @@ public: //virtual void Retranslate() override; - virtual ShaderCode GetShaderCode(const QString& shader_id) const override; + virtual ShaderCode GetShaderCode(const ShaderRequest &request) const override; protected: virtual void ShaderJobEvent(const NodeValueRow &value, ShaderJob& job) const override; diff --git a/app/node/block/transition/diptocolor/diptocolortransition.cpp b/app/node/block/transition/diptocolor/diptocolortransition.cpp index 5a64ed3de..dd49ea8b3 100644 --- a/app/node/block/transition/diptocolor/diptocolortransition.cpp +++ b/app/node/block/transition/diptocolor/diptocolortransition.cpp @@ -49,9 +49,9 @@ QString DipToColorTransition::Description() const return tr("Transition between clips by dipping to a color."); } -ShaderCode DipToColorTransition::GetShaderCode(const QString &shader_id) const +ShaderCode DipToColorTransition::GetShaderCode(const ShaderRequest &request) const { - Q_UNUSED(shader_id) + Q_UNUSED(request) return ShaderCode(FileFunctions::ReadFileAsString(":/shaders/diptoblack.frag"), QString()); } diff --git a/app/node/block/transition/diptocolor/diptocolortransition.h b/app/node/block/transition/diptocolor/diptocolortransition.h index 66164d559..b32918555 100644 --- a/app/node/block/transition/diptocolor/diptocolortransition.h +++ b/app/node/block/transition/diptocolor/diptocolortransition.h @@ -38,7 +38,7 @@ public: virtual QVector Category() const override; virtual QString Description() const override; - virtual ShaderCode GetShaderCode(const QString& shader_id) const override; + virtual ShaderCode GetShaderCode(const ShaderRequest &request) const override; static const QString kColorInput; diff --git a/app/node/distort/cornerpin/cornerpindistortnode.cpp b/app/node/distort/cornerpin/cornerpindistortnode.cpp index 57129bf3f..aa3d0e97d 100644 --- a/app/node/distort/cornerpin/cornerpindistortnode.cpp +++ b/app/node/distort/cornerpin/cornerpindistortnode.cpp @@ -108,9 +108,9 @@ void CornerPinDistortNode::Value(const NodeValueRow &value, const NodeGlobals &g } } -ShaderCode CornerPinDistortNode::GetShaderCode(const QString &shader_id) const +ShaderCode CornerPinDistortNode::GetShaderCode(const ShaderRequest &request) const { - Q_UNUSED(shader_id) + Q_UNUSED(request) return ShaderCode(FileFunctions::ReadFileAsString(QStringLiteral(":/shaders/cornerpin.frag")), FileFunctions::ReadFileAsString(QStringLiteral(":/shaders/cornerpin.vert"))); diff --git a/app/node/distort/cornerpin/cornerpindistortnode.h b/app/node/distort/cornerpin/cornerpindistortnode.h index 8c5cae8cb..41a82ca88 100644 --- a/app/node/distort/cornerpin/cornerpindistortnode.h +++ b/app/node/distort/cornerpin/cornerpindistortnode.h @@ -61,7 +61,7 @@ public: virtual void Value(const NodeValueRow& value, const NodeGlobals &globals, NodeValueTable *table) const override; - virtual ShaderCode GetShaderCode(const QString &shader_id) const override; + virtual ShaderCode GetShaderCode(const ShaderRequest &request) const override; virtual void UpdateGizmoPositions(const NodeValueRow &row, const NodeGlobals &globals) override; diff --git a/app/node/distort/crop/cropdistortnode.cpp b/app/node/distort/crop/cropdistortnode.cpp index 5fc6dd56a..847a4a139 100644 --- a/app/node/distort/crop/cropdistortnode.cpp +++ b/app/node/distort/crop/cropdistortnode.cpp @@ -94,9 +94,9 @@ void CropDistortNode::Value(const NodeValueRow &value, const NodeGlobals &global } } -ShaderCode CropDistortNode::GetShaderCode(const QString &shader_id) const +ShaderCode CropDistortNode::GetShaderCode(const ShaderRequest &request) const { - Q_UNUSED(shader_id) + Q_UNUSED(request) return ShaderCode(FileFunctions::ReadFileAsString(QStringLiteral(":/shaders/crop.frag"))); } diff --git a/app/node/distort/crop/cropdistortnode.h b/app/node/distort/crop/cropdistortnode.h index 402719281..697f5540a 100644 --- a/app/node/distort/crop/cropdistortnode.h +++ b/app/node/distort/crop/cropdistortnode.h @@ -62,7 +62,7 @@ public: virtual void Value(const NodeValueRow& value, const NodeGlobals &globals, NodeValueTable *table) const override; - virtual ShaderCode GetShaderCode(const QString &shader_id) const override; + virtual ShaderCode GetShaderCode(const ShaderRequest &request) const override; virtual void UpdateGizmoPositions(const NodeValueRow &row, const NodeGlobals &globals) override; diff --git a/app/node/distort/flip/flipdistortnode.cpp b/app/node/distort/flip/flipdistortnode.cpp index 53fbcfb84..10b90e0ac 100644 --- a/app/node/distort/flip/flipdistortnode.cpp +++ b/app/node/distort/flip/flipdistortnode.cpp @@ -69,9 +69,9 @@ void FlipDistortNode::Retranslate() SetInputName(kVerticalInput, tr("Vertical")); } -ShaderCode FlipDistortNode::GetShaderCode(const QString& shader_id) const +ShaderCode FlipDistortNode::GetShaderCode(const ShaderRequest &request) const { - Q_UNUSED(shader_id) + Q_UNUSED(request) return ShaderCode(FileFunctions::ReadFileAsString(":/shaders/flip.frag")); } diff --git a/app/node/distort/flip/flipdistortnode.h b/app/node/distort/flip/flipdistortnode.h index 3bb53bb0c..2d607ffd3 100644 --- a/app/node/distort/flip/flipdistortnode.h +++ b/app/node/distort/flip/flipdistortnode.h @@ -40,7 +40,7 @@ public: virtual void Retranslate() override; - virtual ShaderCode GetShaderCode(const QString &shader_id) const override; + virtual ShaderCode GetShaderCode(const ShaderRequest &request) const override; virtual void Value(const NodeValueRow& value, const NodeGlobals &globals, NodeValueTable *table) const override; static const QString kTextureInput; diff --git a/app/node/distort/transform/transformdistortnode.cpp b/app/node/distort/transform/transformdistortnode.cpp index 1b5cad90f..9987e1526 100644 --- a/app/node/distort/transform/transformdistortnode.cpp +++ b/app/node/distort/transform/transformdistortnode.cpp @@ -119,9 +119,9 @@ void TransformDistortNode::Value(const NodeValueRow &value, const NodeGlobals &g } } -ShaderCode TransformDistortNode::GetShaderCode(const QString &shader_id) const +ShaderCode TransformDistortNode::GetShaderCode(const ShaderRequest &request) const { - Q_UNUSED(shader_id); + Q_UNUSED(request); // Returns default frag and vert shader return ShaderCode(); diff --git a/app/node/distort/transform/transformdistortnode.h b/app/node/distort/transform/transformdistortnode.h index 68e71d8a5..9738c7e68 100644 --- a/app/node/distort/transform/transformdistortnode.h +++ b/app/node/distort/transform/transformdistortnode.h @@ -65,7 +65,7 @@ public: virtual void Value(const NodeValueRow& value, const NodeGlobals &globals, NodeValueTable *table) const override; - virtual ShaderCode GetShaderCode(const QString& shader_id) const override; + virtual ShaderCode GetShaderCode(const ShaderRequest &request) const override; enum AutoScaleType { kAutoScaleNone, diff --git a/app/node/effect/opacity/opacityeffect.cpp b/app/node/effect/opacity/opacityeffect.cpp index 6027c2ab3..4fe76014f 100644 --- a/app/node/effect/opacity/opacityeffect.cpp +++ b/app/node/effect/opacity/opacityeffect.cpp @@ -37,9 +37,9 @@ void OpacityEffect::Retranslate() SetInputName(kValueInput, tr("Opacity")); } -ShaderCode OpacityEffect::GetShaderCode(const QString &shader_id) const +ShaderCode OpacityEffect::GetShaderCode(const ShaderRequest &request) const { - Q_UNUSED(shader_id) + Q_UNUSED(request) return ShaderCode(FileFunctions::ReadFileAsString(":/shaders/opacity.frag")); } diff --git a/app/node/effect/opacity/opacityeffect.h b/app/node/effect/opacity/opacityeffect.h index a7c8f7f0a..36e284274 100644 --- a/app/node/effect/opacity/opacityeffect.h +++ b/app/node/effect/opacity/opacityeffect.h @@ -34,7 +34,7 @@ public: virtual void Retranslate() override; - virtual ShaderCode GetShaderCode(const QString &shader_id) const override; + virtual ShaderCode GetShaderCode(const ShaderRequest &request) const override; virtual void Value(const NodeValueRow& value, const NodeGlobals &globals, NodeValueTable *table) const override; static const QString kTextureInput; diff --git a/app/node/filter/blur/blur.cpp b/app/node/filter/blur/blur.cpp index 86d277ce1..123443aea 100644 --- a/app/node/filter/blur/blur.cpp +++ b/app/node/filter/blur/blur.cpp @@ -83,9 +83,9 @@ void BlurFilterNode::Retranslate() SetInputName(kRepeatEdgePixelsInput, tr("Repeat Edge Pixels")); } -ShaderCode BlurFilterNode::GetShaderCode(const QString &shader_id) const +ShaderCode BlurFilterNode::GetShaderCode(const ShaderRequest &request) const { - Q_UNUSED(shader_id) + Q_UNUSED(request) return ShaderCode(FileFunctions::ReadFileAsString(":/shaders/blur.frag")); } diff --git a/app/node/filter/blur/blur.h b/app/node/filter/blur/blur.h index da70956a4..5e85dc079 100644 --- a/app/node/filter/blur/blur.h +++ b/app/node/filter/blur/blur.h @@ -40,7 +40,7 @@ public: virtual void Retranslate() override; - virtual ShaderCode GetShaderCode(const QString &shader_id) const override; + virtual ShaderCode GetShaderCode(const ShaderRequest &request) const override; virtual void Value(const NodeValueRow& value, const NodeGlobals &globals, NodeValueTable *table) const override; static const QString kTextureInput; diff --git a/app/node/filter/mosaic/mosaicfilternode.cpp b/app/node/filter/mosaic/mosaicfilternode.cpp index c198868c5..4e77a524d 100644 --- a/app/node/filter/mosaic/mosaicfilternode.cpp +++ b/app/node/filter/mosaic/mosaicfilternode.cpp @@ -73,9 +73,9 @@ void MosaicFilterNode::Value(const NodeValueRow &value, const NodeGlobals &globa } } -ShaderCode MosaicFilterNode::GetShaderCode(const QString &shader_id) const +ShaderCode MosaicFilterNode::GetShaderCode(const ShaderRequest &request) const { - Q_UNUSED(shader_id) + Q_UNUSED(request) return ShaderCode(FileFunctions::ReadFileAsString(":/shaders/mosaic.frag")); } diff --git a/app/node/filter/mosaic/mosaicfilternode.h b/app/node/filter/mosaic/mosaicfilternode.h index f1dea64e4..fed3f3168 100644 --- a/app/node/filter/mosaic/mosaicfilternode.h +++ b/app/node/filter/mosaic/mosaicfilternode.h @@ -56,7 +56,7 @@ public: virtual void Retranslate() override; virtual void Value(const NodeValueRow& value, const NodeGlobals &globals, NodeValueTable *table) const override; - virtual ShaderCode GetShaderCode(const QString &shader_id) const override; + virtual ShaderCode GetShaderCode(const ShaderRequest &request) const override; static const QString kTextureInput; static const QString kHorizInput; diff --git a/app/node/filter/stroke/stroke.cpp b/app/node/filter/stroke/stroke.cpp index 6f05f61fa..5a8ac7da7 100644 --- a/app/node/filter/stroke/stroke.cpp +++ b/app/node/filter/stroke/stroke.cpp @@ -101,9 +101,9 @@ void StrokeFilterNode::Value(const NodeValueRow &value, const NodeGlobals &globa } } -ShaderCode StrokeFilterNode::GetShaderCode(const QString &shader_id) const +ShaderCode StrokeFilterNode::GetShaderCode(const ShaderRequest &request) const { - Q_UNUSED(shader_id) + Q_UNUSED(request) return ShaderCode(FileFunctions::ReadFileAsString(":/shaders/stroke.frag")); } diff --git a/app/node/filter/stroke/stroke.h b/app/node/filter/stroke/stroke.h index d762b3923..48a442ace 100644 --- a/app/node/filter/stroke/stroke.h +++ b/app/node/filter/stroke/stroke.h @@ -41,7 +41,7 @@ public: virtual void Retranslate() override; virtual void Value(const NodeValueRow& value, const NodeGlobals &globals, NodeValueTable *table) const override; - virtual ShaderCode GetShaderCode(const QString &shader_id) const override; + virtual ShaderCode GetShaderCode(const ShaderRequest &request) const override; static const QString kTextureInput; static const QString kColorInput; diff --git a/app/node/generator/noise/noise.cpp b/app/node/generator/noise/noise.cpp index 0d4e3c832..09dfaabd3 100644 --- a/app/node/generator/noise/noise.cpp +++ b/app/node/generator/noise/noise.cpp @@ -73,7 +73,7 @@ void NoiseGeneratorNode::Retranslate() SetInputName(kColorInput, tr("Color")); } -ShaderCode NoiseGeneratorNode::GetShaderCode(const QString& shader_id) const +ShaderCode NoiseGeneratorNode::GetShaderCode(const ShaderRequest &request) const { return ShaderCode(FileFunctions::ReadFileAsString(":/shaders/noise.frag")); } diff --git a/app/node/generator/noise/noise.h b/app/node/generator/noise/noise.h index 7b8ea005c..73a3a0c0b 100644 --- a/app/node/generator/noise/noise.h +++ b/app/node/generator/noise/noise.h @@ -39,7 +39,7 @@ class NoiseGeneratorNode : public Node { virtual void Retranslate() override; - virtual ShaderCode GetShaderCode(const QString &shader_id) const override; + virtual ShaderCode GetShaderCode(const ShaderRequest &request) const override; virtual void Value(const NodeValueRow &value, const NodeGlobals &globals, NodeValueTable *table) const override; static const QString kBaseIn; diff --git a/app/node/generator/shape/generatorwithmerge.cpp b/app/node/generator/shape/generatorwithmerge.cpp index 363ba4d12..fac36b0ff 100644 --- a/app/node/generator/shape/generatorwithmerge.cpp +++ b/app/node/generator/shape/generatorwithmerge.cpp @@ -42,9 +42,9 @@ void GeneratorWithMerge::Retranslate() SetInputName(kBaseInput, tr("Base")); } -ShaderCode GeneratorWithMerge::GetShaderCode(const QString &shader_id) const +ShaderCode GeneratorWithMerge::GetShaderCode(const ShaderRequest &request) const { - if (shader_id == QStringLiteral("mrg")) { + if (request.id == QStringLiteral("mrg")) { return ShaderCode(FileFunctions::ReadFileAsString(":/shaders/alphaover.frag")); } diff --git a/app/node/generator/shape/generatorwithmerge.h b/app/node/generator/shape/generatorwithmerge.h index af69e1ed4..de3e3bc04 100644 --- a/app/node/generator/shape/generatorwithmerge.h +++ b/app/node/generator/shape/generatorwithmerge.h @@ -33,7 +33,7 @@ public: virtual void Retranslate() override; - virtual ShaderCode GetShaderCode(const QString &shader_id) const override; + virtual ShaderCode GetShaderCode(const ShaderRequest &request) const override; static const QString kBaseInput; diff --git a/app/node/generator/shape/shapenode.cpp b/app/node/generator/shape/shapenode.cpp index 34db8dfcb..9f77939ad 100644 --- a/app/node/generator/shape/shapenode.cpp +++ b/app/node/generator/shape/shapenode.cpp @@ -61,12 +61,12 @@ void ShapeNode::Retranslate() SetComboBoxStrings(kTypeInput, {tr("Rectangle"), tr("Ellipse")}); } -ShaderCode ShapeNode::GetShaderCode(const QString &shader_id) const +ShaderCode ShapeNode::GetShaderCode(const ShaderRequest &request) const { - if (shader_id == QStringLiteral("shape")) { + if (request.id == QStringLiteral("shape")) { return ShaderCode(FileFunctions::ReadFileAsString(QStringLiteral(":/shaders/shape.frag"))); } else { - return super::GetShaderCode(shader_id); + return super::GetShaderCode(request); } } diff --git a/app/node/generator/shape/shapenode.h b/app/node/generator/shape/shapenode.h index 7ae7d5469..5b69209a7 100644 --- a/app/node/generator/shape/shapenode.h +++ b/app/node/generator/shape/shapenode.h @@ -45,7 +45,7 @@ public: virtual void Retranslate() override; - virtual ShaderCode GetShaderCode(const QString& shader_id) const override; + virtual ShaderCode GetShaderCode(const ShaderRequest &request) const override; virtual void Value(const NodeValueRow& value, const NodeGlobals &globals, NodeValueTable *table) const override; static QString kTypeInput; diff --git a/app/node/generator/solid/solid.cpp b/app/node/generator/solid/solid.cpp index 0bfe93f9c..d06076666 100644 --- a/app/node/generator/solid/solid.cpp +++ b/app/node/generator/solid/solid.cpp @@ -68,9 +68,9 @@ void SolidGenerator::Value(const NodeValueRow &value, const NodeGlobals &globals table->Push(NodeValue::kTexture, QVariant::fromValue(job), this); } -ShaderCode SolidGenerator::GetShaderCode(const QString &shader_id) const +ShaderCode SolidGenerator::GetShaderCode(const ShaderRequest &request) const { - Q_UNUSED(shader_id) + Q_UNUSED(request) return ShaderCode(FileFunctions::ReadFileAsString(":/shaders/solid.frag")); } diff --git a/app/node/generator/solid/solid.h b/app/node/generator/solid/solid.h index 55f5bdb50..4b40a7fc4 100644 --- a/app/node/generator/solid/solid.h +++ b/app/node/generator/solid/solid.h @@ -41,7 +41,7 @@ public: virtual void Retranslate() override; virtual void Value(const NodeValueRow& value, const NodeGlobals &globals, NodeValueTable *table) const override; - virtual ShaderCode GetShaderCode(const QString &shader_id) const override; + virtual ShaderCode GetShaderCode(const ShaderRequest &request) const override; static const QString kColorInput; diff --git a/app/node/keying/colordifferencekey/colordifferencekey.cpp b/app/node/keying/colordifferencekey/colordifferencekey.cpp index 534d06a78..6039c1c03 100644 --- a/app/node/keying/colordifferencekey/colordifferencekey.cpp +++ b/app/node/keying/colordifferencekey/colordifferencekey.cpp @@ -83,9 +83,9 @@ void ColorDifferenceKeyNode::Retranslate() SetInputName(kMaskOnlyInput, tr("Show Mask Only")); } -ShaderCode ColorDifferenceKeyNode::GetShaderCode(const QString &shader_id) const +ShaderCode ColorDifferenceKeyNode::GetShaderCode(const ShaderRequest &request) const { - Q_UNUSED(shader_id) + Q_UNUSED(request) return ShaderCode(FileFunctions::ReadFileAsString(":/shaders/colordifferencekey.frag")); } diff --git a/app/node/keying/colordifferencekey/colordifferencekey.h b/app/node/keying/colordifferencekey/colordifferencekey.h index 3b4809256..31cb106a6 100644 --- a/app/node/keying/colordifferencekey/colordifferencekey.h +++ b/app/node/keying/colordifferencekey/colordifferencekey.h @@ -33,7 +33,7 @@ class ColorDifferenceKeyNode : public Node { virtual void Retranslate() override; - virtual ShaderCode GetShaderCode(const QString& shader_id) const override; + virtual ShaderCode GetShaderCode(const ShaderRequest &request) const override; virtual void Value(const NodeValueRow& value, const NodeGlobals& globals, NodeValueTable* table) const override; static const QString kTextureInput; diff --git a/app/node/keying/despill/despill.cpp b/app/node/keying/despill/despill.cpp index 17ea0a5ca..364e04a1f 100644 --- a/app/node/keying/despill/despill.cpp +++ b/app/node/keying/despill/despill.cpp @@ -75,8 +75,8 @@ void DespillNode::Retranslate() SetInputName(kPreserveLuminanceInput, tr("Preserve Luminance")); } -ShaderCode DespillNode::GetShaderCode(const QString& shader_id) const { - Q_UNUSED(shader_id) +ShaderCode DespillNode::GetShaderCode(const ShaderRequest &request) const { + Q_UNUSED(request) return ShaderCode(FileFunctions::ReadFileAsString(":/shaders/despill.frag")); } diff --git a/app/node/keying/despill/despill.h b/app/node/keying/despill/despill.h index 098cb3132..936402427 100644 --- a/app/node/keying/despill/despill.h +++ b/app/node/keying/despill/despill.h @@ -34,7 +34,7 @@ class DespillNode : public Node { virtual void Retranslate() override; - virtual ShaderCode GetShaderCode(const QString& shader_id) const override; + virtual ShaderCode GetShaderCode(const ShaderRequest &request) const override; virtual void Value(const NodeValueRow& value, const NodeGlobals& globals, NodeValueTable* table) const override; static const QString kTextureInput; diff --git a/app/node/math/math/math.cpp b/app/node/math/math/math.cpp index 123f768fa..babe0b9a5 100644 --- a/app/node/math/math/math.cpp +++ b/app/node/math/math/math.cpp @@ -80,9 +80,9 @@ void MathNode::Retranslate() SetComboBoxStrings(kMethodIn, operations); } -ShaderCode MathNode::GetShaderCode(const QString &shader_id) const +ShaderCode MathNode::GetShaderCode(const ShaderRequest &request) const { - return GetShaderCodeInternal(shader_id, kParamAIn, kParamBIn); + return GetShaderCodeInternal(request.id, kParamAIn, kParamBIn); } void MathNode::Value(const NodeValueRow &value, const NodeGlobals &globals, NodeValueTable *table) const diff --git a/app/node/math/math/math.h b/app/node/math/math/math.h index 6001db776..60c910140 100644 --- a/app/node/math/math/math.h +++ b/app/node/math/math/math.h @@ -40,7 +40,7 @@ public: virtual void Retranslate() override; - virtual ShaderCode GetShaderCode(const QString &shader_id) const override; + virtual ShaderCode GetShaderCode(const ShaderRequest &request) const override; Operation GetOperation() const { diff --git a/app/node/math/math/mathbase.cpp b/app/node/math/math/mathbase.cpp index 51ef80060..00c0b7ce4 100644 --- a/app/node/math/math/mathbase.cpp +++ b/app/node/math/math/mathbase.cpp @@ -416,8 +416,6 @@ void MathNodeBase::ValueInternal(Operation operation, Pairing pairing, const QSt } else { output->Push(NodeValue::kSamples, QVariant::fromValue(job), this); } - } else { - output->Push(NodeValue::kSamples, QVariant::fromValue(job), this); } break; } diff --git a/app/node/math/merge/merge.cpp b/app/node/math/merge/merge.cpp index 5a911e8a2..335cb9e74 100644 --- a/app/node/math/merge/merge.cpp +++ b/app/node/math/merge/merge.cpp @@ -67,9 +67,9 @@ void MergeNode::Retranslate() SetInputName(kBlendIn, tr("Blend")); } -ShaderCode MergeNode::GetShaderCode(const QString &shader_id) const +ShaderCode MergeNode::GetShaderCode(const ShaderRequest &request) const { - Q_UNUSED(shader_id) + Q_UNUSED(request) return ShaderCode(FileFunctions::ReadFileAsString(":/shaders/alphaover.frag")); } diff --git a/app/node/math/merge/merge.h b/app/node/math/merge/merge.h index f73994a3f..814b2a93b 100644 --- a/app/node/math/merge/merge.h +++ b/app/node/math/merge/merge.h @@ -40,7 +40,7 @@ public: virtual void Retranslate() override; - virtual ShaderCode GetShaderCode(const QString &shader_id) const override; + virtual ShaderCode GetShaderCode(const ShaderRequest &request) const override; virtual void Value(const NodeValueRow& value, const NodeGlobals &globals, NodeValueTable *table) const override; static const QString kBaseIn; diff --git a/app/node/node.cpp b/app/node/node.cpp index 62580f280..b76f27d83 100644 --- a/app/node/node.cpp +++ b/app/node/node.cpp @@ -1519,10 +1519,8 @@ QVector Node::GetImmediateDependencies() const return GetDependenciesInternal(false, false); } -ShaderCode Node::GetShaderCode(const QString &shader_id) const +ShaderCode Node::GetShaderCode(const ShaderRequest &request) const { - Q_UNUSED(shader_id) - return ShaderCode(QString(), QString()); } diff --git a/app/node/node.h b/app/node/node.h index dccd13f9c..72c171249 100644 --- a/app/node/node.h +++ b/app/node/node.h @@ -665,10 +665,21 @@ public: */ QVector GetImmediateDependencies() const; + struct ShaderRequest + { + ShaderRequest(const QString &shader_id) + { + id = shader_id; + } + + QString id; + QString stub; + }; + /** * @brief Generate hardware accelerated code for this Node */ - virtual ShaderCode GetShaderCode(const QString& shader_id) const; + virtual ShaderCode GetShaderCode(const ShaderRequest &request) const; /** * @brief If Value() pushes a ShaderJob, this is the function that will process them. diff --git a/app/ui/style/olive-dark/png/text-edit.128.disabled.png b/app/ui/style/olive-dark/png/text-edit.128.disabled.png new file mode 100644 index 000000000..f64c27582 Binary files /dev/null and b/app/ui/style/olive-dark/png/text-edit.128.disabled.png differ diff --git a/app/ui/style/olive-dark/png/text-edit.128.png b/app/ui/style/olive-dark/png/text-edit.128.png new file mode 100644 index 000000000..a5da296fa Binary files /dev/null and b/app/ui/style/olive-dark/png/text-edit.128.png differ diff --git a/app/ui/style/olive-dark/png/text-edit.16.disabled.png b/app/ui/style/olive-dark/png/text-edit.16.disabled.png new file mode 100644 index 000000000..0ebeb13f7 Binary files /dev/null and b/app/ui/style/olive-dark/png/text-edit.16.disabled.png differ diff --git a/app/ui/style/olive-dark/png/text-edit.16.png b/app/ui/style/olive-dark/png/text-edit.16.png new file mode 100644 index 000000000..c34850025 Binary files /dev/null and b/app/ui/style/olive-dark/png/text-edit.16.png differ diff --git a/app/ui/style/olive-dark/png/text-edit.32.disabled.png b/app/ui/style/olive-dark/png/text-edit.32.disabled.png new file mode 100644 index 000000000..336da94d0 Binary files /dev/null and b/app/ui/style/olive-dark/png/text-edit.32.disabled.png differ diff --git a/app/ui/style/olive-dark/png/text-edit.32.png b/app/ui/style/olive-dark/png/text-edit.32.png new file mode 100644 index 000000000..37cfb6059 Binary files /dev/null and b/app/ui/style/olive-dark/png/text-edit.32.png differ diff --git a/app/ui/style/olive-dark/png/text-edit.64.disabled.png b/app/ui/style/olive-dark/png/text-edit.64.disabled.png new file mode 100644 index 000000000..b4cb5b566 Binary files /dev/null and b/app/ui/style/olive-dark/png/text-edit.64.disabled.png differ diff --git a/app/ui/style/olive-dark/png/text-edit.64.png b/app/ui/style/olive-dark/png/text-edit.64.png new file mode 100644 index 000000000..24693b751 Binary files /dev/null and b/app/ui/style/olive-dark/png/text-edit.64.png differ diff --git a/app/ui/style/olive-dark/svg/text-edit.svg b/app/ui/style/olive-dark/svg/text-edit.svg new file mode 100644 index 000000000..a63d30511 --- /dev/null +++ b/app/ui/style/olive-dark/svg/text-edit.svg @@ -0,0 +1,276 @@ + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + diff --git a/app/ui/style/olive-light/png/text-edit.128.disabled.png b/app/ui/style/olive-light/png/text-edit.128.disabled.png new file mode 100644 index 000000000..725316db9 Binary files /dev/null and b/app/ui/style/olive-light/png/text-edit.128.disabled.png differ diff --git a/app/ui/style/olive-light/png/text-edit.128.png b/app/ui/style/olive-light/png/text-edit.128.png new file mode 100644 index 000000000..075fb7fd5 Binary files /dev/null and b/app/ui/style/olive-light/png/text-edit.128.png differ diff --git a/app/ui/style/olive-light/png/text-edit.16.disabled.png b/app/ui/style/olive-light/png/text-edit.16.disabled.png new file mode 100644 index 000000000..edaaf4c9d Binary files /dev/null and b/app/ui/style/olive-light/png/text-edit.16.disabled.png differ diff --git a/app/ui/style/olive-light/png/text-edit.16.png b/app/ui/style/olive-light/png/text-edit.16.png new file mode 100644 index 000000000..083099b6d Binary files /dev/null and b/app/ui/style/olive-light/png/text-edit.16.png differ diff --git a/app/ui/style/olive-light/png/text-edit.32.disabled.png b/app/ui/style/olive-light/png/text-edit.32.disabled.png new file mode 100644 index 000000000..71cad0b10 Binary files /dev/null and b/app/ui/style/olive-light/png/text-edit.32.disabled.png differ diff --git a/app/ui/style/olive-light/png/text-edit.32.png b/app/ui/style/olive-light/png/text-edit.32.png new file mode 100644 index 000000000..772eb2ebf Binary files /dev/null and b/app/ui/style/olive-light/png/text-edit.32.png differ diff --git a/app/ui/style/olive-light/png/text-edit.64.disabled.png b/app/ui/style/olive-light/png/text-edit.64.disabled.png new file mode 100644 index 000000000..b066cd6c0 Binary files /dev/null and b/app/ui/style/olive-light/png/text-edit.64.disabled.png differ diff --git a/app/ui/style/olive-light/png/text-edit.64.png b/app/ui/style/olive-light/png/text-edit.64.png new file mode 100644 index 000000000..84f1caa08 Binary files /dev/null and b/app/ui/style/olive-light/png/text-edit.64.png differ diff --git a/app/ui/style/olive-light/svg/text-edit.svg b/app/ui/style/olive-light/svg/text-edit.svg new file mode 100644 index 000000000..fcc472610 --- /dev/null +++ b/app/ui/style/olive-light/svg/text-edit.svg @@ -0,0 +1,276 @@ + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + diff --git a/app/widget/audiomonitor/audiomonitor.cpp b/app/widget/audiomonitor/audiomonitor.cpp index 6a196e095..10777ba00 100644 --- a/app/widget/audiomonitor/audiomonitor.cpp +++ b/app/widget/audiomonitor/audiomonitor.cpp @@ -37,7 +37,6 @@ QVector AudioMonitor::instances_; AudioMonitor::AudioMonitor(QWidget *parent) : QOpenGLWidget(parent), - file_(nullptr), waveform_(nullptr), cached_channels_(0) { @@ -70,15 +69,13 @@ void AudioMonitor::SetParams(const AudioParams ¶ms) void AudioMonitor::Stop() { - delete file_; - file_ = nullptr; waveform_ = nullptr; // We don't stop the update loop here so that the monitor can show a smooth fade out. The update // loop will stop itself since file_ and waveform_ are null. } -void AudioMonitor::PushBytes(const QByteArray &d) +void AudioMonitor::PushSampleBuffer(SampleBufferPtr d) { if (!params_.channel_count()) { return; @@ -86,9 +83,12 @@ void AudioMonitor::PushBytes(const QByteArray &d) QVector v(params_.channel_count(), 0); - BytesToSampleSummary(d, v); + AudioVisualWaveform::Sample summed = AudioVisualWaveform::SumSamples(d, 0, d->sample_count()); - PushValue(v); + AudioVisualWaveformSampleToInternalValues(summed, v); + + // Fill values because they get averaged out for smoothing + values_.fill(v); SetUpdateLoop(true); } @@ -236,13 +236,7 @@ void AudioMonitor::paintGL() delta_time *= abs_speed; } - if (file_) { - UpdateValuesFromFile(v, delta_time); - - if (file_->atEnd()) { - Stop(); - } - } else if (waveform_) { + if (waveform_) { UpdateValuesFromWaveform(v, delta_time); if (waveform_time_ >= waveform_->length()) { @@ -304,30 +298,6 @@ void AudioMonitor::mousePressEvent(QMouseEvent *) update(); } -void AudioMonitor::UpdateValuesFromFile(QVector& v, qint64 delta_time) -{ - // Convert ms to float seconds and determine how many bytes that is - qint64 bytes_to_read = params_.time_to_bytes(static_cast(delta_time) * 0.001); - - if (playback_speed_ < 0) { - // If reversing, jump back by the amount of bytes we're going to read - bytes_to_read = qMin(bytes_to_read, file_->pos()); - - file_->seek(file_->pos() - bytes_to_read); - } - - // Read bytes in from file - QByteArray b = file_->read(bytes_to_read); - - if (playback_speed_ < 0) { - // If reversing, head back to where we were before the read so that the next read starts - // from where we left off - file_->seek(file_->pos() - bytes_to_read); - } - - BytesToSampleSummary(b, v); -} - void AudioMonitor::UpdateValuesFromWaveform(QVector &v, qint64 delta_time) { // Delta time is provided in milliseconds, so we convert to seconds in rational @@ -335,18 +305,23 @@ void AudioMonitor::UpdateValuesFromWaveform(QVector &v, qint64 delta_tim AudioVisualWaveform::Sample sum = waveform_->GetSummaryFromTime(waveform_time_, length); - for (int i=0; i v.at(output_index)) { - v[output_index] = max; - } - } + AudioVisualWaveformSampleToInternalValues(sum, v); waveform_time_ += length; } +void AudioMonitor::AudioVisualWaveformSampleToInternalValues(const AudioVisualWaveform::Sample &in, QVector &out) +{ + for (int i=0; i out.at(output_index)) { + out[output_index] = max; + } + } +} + void AudioMonitor::PushValue(const QVector &v) { int lim = values_.size()-1; diff --git a/app/widget/audiomonitor/audiomonitor.h b/app/widget/audiomonitor/audiomonitor.h index e9bdf05b3..f532aa206 100644 --- a/app/widget/audiomonitor/audiomonitor.h +++ b/app/widget/audiomonitor/audiomonitor.h @@ -42,7 +42,7 @@ public: bool IsPlaying() const { - return file_ || waveform_; + return waveform_; } static void StartWaveformOnAll(const AudioVisualWaveform *waveform, const rational& start, int playback_speed) @@ -59,10 +59,10 @@ public: } } - static void PushBytesOnAll(const QByteArray &d) + static void PushSampleBufferOnAll(SampleBufferPtr d) { foreach (AudioMonitor *m, instances_) { - m->PushBytes(d); + m->PushSampleBuffer(d); } } @@ -71,7 +71,7 @@ public slots: void Stop(); - void PushBytes(const QByteArray& d); + void PushSampleBuffer(SampleBufferPtr samples); void StartWaveform(const AudioVisualWaveform *waveform, const rational& start, int playback_speed); @@ -83,10 +83,10 @@ protected: private: void SetUpdateLoop(bool e); - void UpdateValuesFromFile(QVector &v, qint64 delta_time); - void UpdateValuesFromWaveform(QVector &v, qint64 delta_time); + void AudioVisualWaveformSampleToInternalValues(const AudioVisualWaveform::Sample &in, QVector &out); + void PushValue(const QVector& v); void BytesToSampleSummary(const QByteArray& bytes, QVector& v); @@ -95,7 +95,6 @@ private: AudioParams params_; - QIODevice* file_; qint64 last_time_; const AudioVisualWaveform* waveform_; diff --git a/app/widget/nodeview/nodeview.cpp b/app/widget/nodeview/nodeview.cpp index 220a040bf..69af099fa 100644 --- a/app/widget/nodeview/nodeview.cpp +++ b/app/widget/nodeview/nodeview.cpp @@ -571,6 +571,11 @@ void NodeView::mouseMoveEvent(QMouseEvent *event) } else { // Otherwise, we may have to iterate to find a valid one for (const QString& input : attached_node->inputs()) { + if (input == Node::kEnabledInput) { + // Ignore enabled input + continue; + } + NodeInput i(attached_node, input); if (attached_node->IsInputConnectable(input)) { diff --git a/app/widget/viewer/viewer.cpp b/app/widget/viewer/viewer.cpp index 3cac18a5e..92b92eead 100644 --- a/app/widget/viewer/viewer.cpp +++ b/app/widget/viewer/viewer.cpp @@ -98,6 +98,11 @@ ViewerWidget::ViewerWidget(QWidget *parent) : connect(display_widget_, &ViewerDisplayWidget::HandDragMoved, sizer_, &ViewerSizer::HandDragMove); sizer_->SetWidget(display_widget_); + // Make the display widget the first tabbable widget. While the viewer display cannot actually + // be interacted with by tabbing, it prevents the actual first tabbable widget (the playhead + // slider in `controls_`) from getting auto-focused any time the panel is maximized (with `) + display_widget_->setFocusPolicy(Qt::TabFocus); + // Create waveform view when audio is connected and video isn't waveform_view_ = new AudioWaveformView(); ConnectTimelineView(waveform_view_, true); @@ -571,7 +576,7 @@ void ViewerWidget::ReceivedAudioBufferForScrubbing() if (!AudioManager::instance()->PushToOutput(audio_processor_.to(), packed, &error)) { Core::instance()->ShowStatusBarMessage(tr("Audio scrubbing failed: %1").arg(error)); } - AudioMonitor::PushBytesOnAll(packed); + AudioMonitor::PushSampleBufferOnAll(samples); } } else { qCritical() << "Failed to process audio for scrubbing:" << r; @@ -704,11 +709,11 @@ void ViewerWidget::PlayInternal(int speed, bool in_to_out_only) AudioParams ap = GetConnectedNode()->GetAudioParams(); if (ap.is_valid()) { - AudioManager::instance()->SetOutputNotifyInterval(ap.time_to_bytes(kAudioPlaybackInterval)); - connect(AudioManager::instance(), &AudioManager::OutputNotify, this, &ViewerWidget::QueueNextAudioBuffer); - UpdateAudioProcessor(); + AudioManager::instance()->SetOutputNotifyInterval(audio_processor_.to().time_to_bytes(kAudioPlaybackInterval)); + connect(AudioManager::instance(), &AudioManager::OutputNotify, this, &ViewerWidget::QueueNextAudioBuffer); + static const int prequeue_count = 2; prequeuing_audio_ = prequeue_count; // Queue two buffers ahead of time audio_playback_queue_time_ = GetTime();