Commit Graph
255 Commits
Author SHA1 Message Date
Mike-Solar e012f16083 feat: group OpenFX plugins under dedicated "OpenFX" category with sub-groups
All OpenFX plugins were previously hardcoded to return kCategoryUnknown,
  causing them to pile up under "Uncategorized" in the node creation menu.

  This commit introduces a two-level grouping system for OFX plugins:

  1. Add new kCategoryOpenFX top-level category
     - Node::CategoryID enum extended with kCategoryOpenFX
     - PluginNode::Category() now returns {kCategoryOpenFX}
     - Node::GetCategoryName() returns "OpenFX"

  2. Add secondary sub-grouping support
     - Node base class gains virtual SubCategory() method
     - PluginNode implements SubCategory() backed by sub_category_ member
     - sub_category_ is set in the constructor from the plugin's OFX context:
         Filter     → "Filter"
         Generator  → "Generator"
         Transition → "Transition"
         others     → "General"

  3. Update NodeFactory::CreateMenu()
     - When a node belongs to kCategoryOpenFX and provides a non-empty
       SubCategory(), creates a second-level submenu under "OpenFX"
     - Nodes without a sub-category are placed directly in the top menu

  Expected menu layout:
    OpenFX
      ├── Filter
      │     ├── ColorCorrect
      │     └── ...
      ├── Generator
      ├── Transition
      └── General

  All 4 test suites pass.
2026-05-14 21:05:29 +08:00
Mike-Solar bfb1b2fce4 update copyright back 2026-01-16 21:22:05 +08:00
Mike-Solar b8669f6a11 Change project name; 2026-01-05 16:22:26 +08:00
Mike-Solar f191486375 Implement multi-input OFX clip wiring and texture handling
Store PluginJob input values for lookup
Add per-clip texture inputs on plugin nodes
Map input clips to textures during render (with Source fallback)
2026-01-04 22:30:41 +08:00
Mike Solar 88ba0e4841 Update plugin parameter instances to use shared pointers and add new parameter creation logic 2025-12-24 17:51:56 +08:00
Mike-Solar 8a7b6cf869 Add OFX plugin support and related infrastructure
This commit extends the OFX plugin support in Olive by:

- Initializing and scanning for OFX plugins
- Updating PluginNode to handle OFX plugin parameters and inputs
- Adding necessary methods and properties for OFX plugin integration
- Enhancing NodeFactory to include OFX plugin nodes
- Refactoring and renaming OliveInstance to OlivePluginInstance
- Introducing new classes for parameter handling (ParamInstance)
- Adding PluginJob for rendering OFX plugins
- Adjusting CMakeLists.txt files to include new source files
2025-11-09 17:03:56 +08:00
Mike-Solar 26e6924cdf feat: Implement OFX plugin support infrastructure
This commit adds comprehensive support for OFX plugins in Olive, including:

- Add plugin node infrastructure with getPlugin() method
- Implement OliveHost for managing OFX plugin instances
- Create OliveInstance to handle plugin parameter and timeline interactions
- Add OliveClip implementation for plugin clip handling
- Implement region of definition (RoD) and region of interest (RoI) functionality
- Add interactive mode support in Current class
- Integrate plugin rendering into RenderProcessor
- Fix include dependencies and remove unused OlivePlugin.cpp reference
2025-10-25 17:59:50 +08:00
Mike Solar 6fdfd03ffd update: update copyright 2025-08-05 17:12:49 +08:00
Mike Solar 74f73ab3be change: change code style to Linux style except indent. 2025-08-03 03:09:40 +08:00
itsmattkc 2c2df99963 name every undo command 2023-03-12 00:49:03 -08:00
itsmattkc b88b738071 project: moved color manager outside of node graph 2023-02-28 15:20:05 -08:00
itsmattkc cb9008a623 Merge branch 'master' into move-serialization 2023-02-28 11:29:52 -08:00
itsmattkc ec2ff82229 node: merge tooltip into data function 2023-02-27 18:12:28 -08:00
itsmattkc 7ec8a4dd7e serializer: ensure backwards compatibility 2023-02-26 15:42:54 -08:00
itsmattkc 028651f9fb moved serialization 2023-02-21 14:26:34 -08:00
itsmattkc f9cd28a694 node: make convenient input flag setter 2023-02-20 19:13:50 -08:00
itsmattkc 7348d28243 move ignore connections to input flag 2023-02-20 16:18:20 -08:00
itsmattkc 11e4e051c3 move undo files around for better organization 2023-02-20 16:09:22 -08:00
itsmattkc 71e8665fbf move item setting to a node flag 2023-02-19 21:30:49 -08:00
itsmattkc 2c4347e9a6 node: merge various metadata functions into one 2023-02-19 21:16:05 -08:00
itsmattkc b8ee27e1cb node: removed dumb undoable param 2023-02-19 11:36:46 -08:00
itsmattkc 9745b536f6 nodes: remove graph and merge into project 2023-02-17 14:13:03 -08:00
itsmattkc c1c6893713 various: moved more to core lib 2023-01-19 16:01:31 -08:00
itsmattkc dd9c52ab59 start moving core frameworks to external libraries 2023-01-19 09:51:47 -08:00
itsmattkc 38517c8c31 node: removed slow unrecommended functions 2022-11-05 11:58:38 -07:00
itsmattkc ca47792dc7 nodes: clamp footage retrieval times for clips
Fixes #2070
2022-11-01 12:44:01 -07:00
itsmattkc 5096278e60 nodes: use much smarter time transform function
Fixes #2042
2022-10-23 12:15:36 -07:00
itsmattkc 9ccf6fc1ab node: updated incompatible function 2022-10-05 21:10:55 -07:00
itsmattkc d9c50ce176 clip: limit maximum multicam to 1 2022-10-05 20:54:17 -07:00
itsmattkc ef8996d48f nodes: allow ignoring specific inputs for rendering
Also ignore sequence input on multicam
2022-10-04 21:13:01 -07:00
itsmattkc 42ba84bf5f multicam: finished UI implementation 2022-10-03 17:24:09 -07:00
itsmattkc 2f9ec9d13e node: improved input error reporting 2022-10-02 11:00:14 -07:00
itsmattkc 3abc9eb1d1 nodes: revise means of limiting array elements 2022-09-19 08:55:37 -07:00
itsmattkc 4dbfbd63ec nodes: revise array type 2022-09-18 22:43:30 -07:00
itsmattkc 25699ef05b cache: use disk states to share caches 2022-06-05 19:47:33 -07:00
itsmattkc 13299d0a3b cache: implemented base functionality for clip cache 2022-06-04 17:29:09 -07:00
itsmattkc 9cc861cdd5 cache: cancel tasks on disable 2022-05-30 13:40:39 -07:00
itsmattkc 2f7dc3c98b implemented separate waveform cache 2022-05-29 17:52:35 -07:00
itsmattkc 826090b621 cache: save states to disk 2022-05-29 14:03:09 -07:00
itsmattkc 89b6cce2b2 Merge branch 'master' into hashremoval 2022-05-29 11:18:58 -07:00
itsmattkc fc68a123ba project: reprobe and merge params when file changes are found 2022-05-28 12:25:50 -07:00
itsmattkc e9404ba869 added second frame cache for thumbnails 2022-05-27 19:16:08 -07:00
itsmattkc f124ad3178 cache waveforms at clip level 2022-05-22 20:54:59 -07:00
itsmattkc e0bb31b199 remove shifts, operations, and make caches node-agnostic 2022-05-16 19:53:38 -07:00
itsmattkc bfd6a407a5 Merge branch 'master' into hashremoval 2022-05-16 09:12:49 -07:00
itsmattkc e9844ee135 implemented gizmo transforming through the node graph 2022-05-15 14:36:30 -07:00
itsmattkc 8b87e376a0 nodeparamview: implement copy/pasting values 2022-05-10 17:20:22 -07:00
itsmattkc 4b366a9b73 update copyright year to 2022 2022-05-10 10:38:56 -07:00
itsmattkc 08f3cb3cc3 remove hashes from nodes 2022-05-09 18:30:36 -07:00
itsmattkc bb0fedabba simplified and optimized samplebuffer 2022-05-09 14:55:51 -07:00