diff --git a/app/node/CMakeLists.txt b/app/node/CMakeLists.txt
index 415df32e0..cdd553e3f 100644
--- a/app/node/CMakeLists.txt
+++ b/app/node/CMakeLists.txt
@@ -17,7 +17,6 @@
add_subdirectory(blend)
add_subdirectory(block)
add_subdirectory(distort)
-add_subdirectory(generator)
add_subdirectory(input)
add_subdirectory(output)
diff --git a/app/node/factory.cpp b/app/node/factory.cpp
index 221056a50..c63603975 100644
--- a/app/node/factory.cpp
+++ b/app/node/factory.cpp
@@ -5,7 +5,6 @@
#include "block/gap/gap.h"
#include "block/transition/crossdissolve/crossdissolve.h"
#include "distort/transform/transform.h"
-#include "generator/solid/solid.h"
#include "input/media/video/video.h"
#include "input/media/audio/audio.h"
#include "output/timeline/timeline.h"
@@ -27,6 +26,7 @@ void NodeFactory::Initialize()
library_.append(new ExternalNode(":/shaders/gaussianblur.xml"));
library_.append(new ExternalNode(":/shaders/boxblur.xml"));
library_.append(new ExternalNode(":/shaders/opacity.xml"));
+ library_.append(new ExternalNode(":/shaders/solid.xml"));
}
void NodeFactory::Destroy()
@@ -98,6 +98,17 @@ Node* NodeFactory::CreateFromMenuAction(QAction *action)
return nullptr;
}
+Node *NodeFactory::CreateFromID(const QString &id)
+{
+ foreach (Node* n, library_) {
+ if (n->id() == id) {
+ return n->copy();
+ }
+ }
+
+ return nullptr;
+}
+
Node *NodeFactory::CreateInternal(const NodeFactory::InternalID &id)
{
switch (id) {
@@ -111,8 +122,6 @@ Node *NodeFactory::CreateInternal(const NodeFactory::InternalID &id)
return new CrossDissolveTransition();
case kTransformDistort:
return new TransformDistort();
- case kSolidGenerator:
- return new SolidGenerator();
case kVideoInput:
return new VideoInput();
case kAudioInput:
diff --git a/app/node/factory.h b/app/node/factory.h
index 6ea37bd9a..6ffb17585 100644
--- a/app/node/factory.h
+++ b/app/node/factory.h
@@ -14,7 +14,6 @@ public:
kClipBlock,
kGapBlock,
kAlphaOverBlend,
- kSolidGenerator,
kAudioInput,
kTransformDistort,
kTransitionBlock,
@@ -34,7 +33,9 @@ public:
static Menu* CreateMenu();
- static Node *CreateFromMenuAction(QAction* action);
+ static Node* CreateFromMenuAction(QAction* action);
+
+ static Node* CreateFromID(const QString& id);
private:
static Node* CreateInternal(const InternalID& id);
diff --git a/app/node/generator/CMakeLists.txt b/app/node/generator/CMakeLists.txt
deleted file mode 100644
index 2c5c9b40b..000000000
--- a/app/node/generator/CMakeLists.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-# Olive - Non-Linear Video Editor
-# Copyright (C) 2019 Olive Team
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see .
-
-add_subdirectory(solid)
-
-set(OLIVE_SOURCES
- ${OLIVE_SOURCES}
- PARENT_SCOPE
-)
diff --git a/app/node/generator/solid/CMakeLists.txt b/app/node/generator/solid/CMakeLists.txt
deleted file mode 100644
index df388a97d..000000000
--- a/app/node/generator/solid/CMakeLists.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-# Olive - Non-Linear Video Editor
-# Copyright (C) 2019 Olive Team
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see .
-
-set(OLIVE_SOURCES
- ${OLIVE_SOURCES}
- node/generator/solid/solid.h
- node/generator/solid/solid.cpp
- PARENT_SCOPE
-)
diff --git a/app/node/generator/solid/solid.cpp b/app/node/generator/solid/solid.cpp
deleted file mode 100644
index d19829ac4..000000000
--- a/app/node/generator/solid/solid.cpp
+++ /dev/null
@@ -1,69 +0,0 @@
-/***
-
- Olive - Non-Linear Video Editor
- Copyright (C) 2019 Olive Team
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-
-***/
-
-#include "solid.h"
-
-SolidGenerator::SolidGenerator() :
- texture_(nullptr)
-{
- color_input_ = new NodeInput("color_in");
- color_input_->set_data_type(NodeParam::kColor);
- AddInput(color_input_);
-}
-
-Node *SolidGenerator::copy() const
-{
- return new SolidGenerator();
-}
-
-QString SolidGenerator::Name() const
-{
- return tr("Solid");
-}
-
-QString SolidGenerator::id() const
-{
- return "org.olivevideoeditor.Olive.solidgenerator";
-}
-
-QString SolidGenerator::Category() const
-{
- return tr("Generator");
-}
-
-QString SolidGenerator::Description() const
-{
- return tr("Generate a solid color.");
-}
-
-bool SolidGenerator::IsAccelerated() const
-{
- return true;
-}
-
-QString SolidGenerator::AcceleratedCodeFragment() const
-{
- return ReadFileAsString(":/shaders/solid.frag");
-}
-
-void SolidGenerator::Retranslate()
-{
- color_input_->set_name(tr("Color"));
-}
diff --git a/app/node/generator/solid/solid.h b/app/node/generator/solid/solid.h
deleted file mode 100644
index d416d83eb..000000000
--- a/app/node/generator/solid/solid.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/***
-
- Olive - Non-Linear Video Editor
- Copyright (C) 2019 Olive Team
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-
-***/
-
-#ifndef SOLIDGENERATOR_H
-#define SOLIDGENERATOR_H
-
-#include
-
-#include "node/node.h"
-
-/**
- * @brief A node that generates a solid color
- */
-class SolidGenerator : public Node
-{
- Q_OBJECT
-public:
- SolidGenerator();
-
- virtual Node* copy() const override;
-
- virtual QString Name() const override;
- virtual QString id() const override;
- virtual QString Category() const override;
- virtual QString Description() const override;
-
- virtual bool IsAccelerated() const override;
- virtual QString AcceleratedCodeFragment() const override;
-
- virtual void Retranslate() override;
-
-private:
- NodeInput* color_input_;
-
- QOpenGLTexture* texture_;
-};
-
-#endif // SOLIDGENERATOR_H
diff --git a/app/shaders/shaders.qrc b/app/shaders/shaders.qrc
index 08e15ad53..5eb6cd753 100644
--- a/app/shaders/shaders.qrc
+++ b/app/shaders/shaders.qrc
@@ -10,6 +10,7 @@
opacity.frag
opacity.xml
solid.frag
+ solid.xml
videoinput.frag
videoinput.vert
diff --git a/app/shaders/solid.xml b/app/shaders/solid.xml
new file mode 100644
index 000000000..262902d49
--- /dev/null
+++ b/app/shaders/solid.xml
@@ -0,0 +1,26 @@
+
+
+
+ Solid
+
+
+ Generator
+
+
+
+ Generate a solid color.
+
+
+ Generate a solid colour.
+
+
+
+
+ Color
+ Colour
+ 1.0, 0.0, 0.0, 1.0
+
+
+
+
+