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 + + + + +