add: Basic plugin class.

This commit is contained in:
Mike Solar
2025-08-03 03:34:19 +08:00
parent 74f73ab3be
commit 2b25dc7a77
4 changed files with 50 additions and 0 deletions
+1
View File
@@ -32,6 +32,7 @@ add_subdirectory(dialog)
add_subdirectory(node) add_subdirectory(node)
add_subdirectory(packaging) add_subdirectory(packaging)
add_subdirectory(panel) add_subdirectory(panel)
add_subdirectory(pluginSupport)
add_subdirectory(render) add_subdirectory(render)
add_subdirectory(shaders) add_subdirectory(shaders)
add_subdirectory(task) add_subdirectory(task)
+6
View File
@@ -0,0 +1,6 @@
set(OLIVE_SOURCES
${OLIVE_SOURCES}
pluginSupport/Plugin.cpp
pluginSupport/Plugin.h
PARENT_SCOPE
)
+5
View File
@@ -0,0 +1,5 @@
//
// Created by katherinesolar on 25-8-3.
//
#include "Plugin.h"
+38
View File
@@ -0,0 +1,38 @@
//
// Created by katherinesolar on 25-8-3.
//
#ifndef PLUGIN_H
#define PLUGIN_H
#include <map>
#include <string>
#include <vector>
namespace olive
{
typedef int(*button_callback_t)();
namespace plugin
{
struct Button {
std::string name;
button_callback_t callback;
};
struct Menu {
std::string name;
std::map<std::string, std::vector<Button>> buttons;
};
struct Plugin {
std::string name;
std::string version;
std::string author;
std::vector<Menu> menus;
};
}
class Plugin {
private:
std::vector<plugin::Plugin> plugins_;
};
}
#endif //PLUGIN_H