Mike-Solar
026ff94b5e
refactor: invert the last engine-to-UI dependencies
...
- NodeFactory's menu creation moves to UI-side widget/menu/factorymenu
(the factory only exposes its node library read-only now)
- DiskManager's cache-settings dialog is created through a registered
std::function handler (registered by Core at startup)
- OlivePluginInstance creates progress UIs through a
PluginProgressReporter interface (Null fallback headless) and queries
the active viewer through a provider callback, both registered by Core
- factory.h, diskmanager and pluginSupport no longer reference any
widget//dialog//panel//window headers or classes
2026-07-20 02:05:01 +08:00
Mike-Solar
76f5c2a65b
color: input colorspace auto-detection, HDR export tags, LGG/white balance nodes, more LUT formats, waveform parade
...
- media color primaries/transfer tags now flow from the FFmpeg probe
through VideoParams into Footage::get_colorspace_to_use(); precedence
is user override > media tags > project default
- export nclc tags derive from the output colorspace (PQ/HLG/BT.2020,
P3, sRGB, Rec.601, Rec.709) instead of hardcoded BT.709
- new OCIO Color Grading (Log) node (lift/gamma/gain) and White Balance
node (kelvin temperature + tint, HDR-safe)
- LUT whitelist extended to 9 OCIO-supported formats
- waveform scope gains an RGB parade mode (GPU and software paths)
- tests updated for the new colorspace precedence
2026-07-19 21:45:51 +08:00
Mike-Solar
bb40b4923e
style: unify identifier naming per updated conventions
...
Automated with clang-tidy readability-identifier-naming (config added to
.clang-tidy) plus scripted passes, per the updated rules now documented
in CONTRIBUTING.md:
- types (class/struct/enum/alias/template params): PascalCase
- functions, variables, members: snake_case (incl. rational -> Rational)
- private/protected members: trailing underscore; static member
variables likewise (instance_, available_themes_)
- constants and enum values: snake_case (kLinear -> k_linear,
F32P -> f32p); ALL_CAPS reserved for macros
- macros: OAK_ prefix (OLIVE_ADD_TEST/OLIVE_ASSERT/OLIVE_CONFIG ->
OAK_ADD_TEST/OAK_ASSERT/OAK_CONFIG, GL_PREAMBLE -> OAK_GL_PREAMBLE,
include guards -> OAK_*)
- file names: all lowercase (Current/Plugin/OliveHost/OliveClip/
OlivePluginInstance -> current/plugin/olivehost/oliveclip/
oliveplugininstance)
- getters share the member name sans underscore, setters set_foo()
- Qt and third-party (OpenFX) virtual overrides and framework callbacks
keep their original names (exempt in .clang-tidy)
Manual follow-ups required where automation could not reach:
- string-based QMetaObject/SIGNAL/SLOT references updated to renamed
methods (AddTask, CreatedFile, DeleteSpecificFile, moveSelectionUp, ...)
- macro bodies referencing renamed methods (OLIVE_CONFIG,
NODE_DEFAULT_DESTRUCTOR, MANAGEDDISPLAYWIDGET_*)
- self-shadowing locals renamed where signals/methods became same-named
(size_changed, worker_count, selected_items, import param, filters)
- third_party OFX member/namespace usages restored (OFX::Host::*,
_created, _clipPrefsDirty, createInstance, clearPersistentMessage)
- STL protocol aliases restored (const_iterator) with .clang-tidy
ignore rules; qHash overloads restored
Full build and test suite pass: ctest 4/4, ~1960 gtest cases green.
2026-07-19 16:10:54 +08:00
Mike-Solar
bec52b46b3
nodes: fix serialized ID typos with backward compatibility
...
- ChromaKey tolerance inputs are now spelled "upper/lower_tolerance_in";
old projects with the misspelled "tolerence" IDs keep loading (values
and connections) via a new Node::GetInputIDForLegacyID() hook applied
in LoadInput and connection deserialization
- flip/ripple/swirl/tile/wave node IDs moved to the consistent
org.olivevideoeditor.Olive.* domain; NodeFactory::CreateFromID maps
the old org.oliveeditor.* IDs so old projects still resolve
- Regression tests: legacy ChromaKey IDs (values + connections) and
legacy factory IDs
2026-07-17 08:38:25 +08:00
Mike-Solar
e5eeaddf2f
format: reformatting files
2026-07-13 15:30:43 +08:00
Mike-Solar
cac5a40b58
Implement color LUT v0.4 features
2026-06-07 00:24:08 +08:00
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
8ed5660faf
solve some bugs
2026-01-05 18:01:13 +08:00
Mike-Solar
b8669f6a11
Change project name;
2026-01-05 16:22:26 +08:00
Mike-Solar
003c3bb5be
修改部分语法错误
2026-01-05 02:25:13 +08:00
Mike-Solar
cad331eb2c
Fix compile errors
2026-01-05 01:50:05 +08:00
Mike-Solar
c136cdf7f6
完成1
2026-01-05 00:03:51 +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
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
c1c2d0bc05
Merge branch 'master' into multicam
2022-09-25 16:39:03 -07:00
itsmattkc
b553d5afb7
nodes: implemented more distortion nodes
2022-09-22 18:12:03 -07:00
itsmattkc
2dc2edf3e0
multicam: initial implementation
2022-09-19 08:55:56 -07:00
itsmattkc
f157315690
timeformatnode: implement
2022-07-17 14:39:58 -07:00
itsmattkc
7493395103
implemented drop shadow node
2022-05-15 11:06:23 -07:00
itsmattkc
4b366a9b73
update copyright year to 2022
2022-05-10 10:38:56 -07:00
itsmattkc
13aedfa294
nodes: use flag instead of hidden array in factory
2022-05-09 08:44:39 -07:00
itsmattkc
93e5351d33
nodes: implemented mask node
2022-05-08 16:56:31 -07:00
Thomas Wilshaw
e07240cc30
Merge branch 'master' into ocio_node
2022-05-03 18:54:02 +01:00
itsmattkc
d1bb931854
nodeparamview: implemented add button
2022-04-26 14:23:19 -07:00
Thomas Wilshaw
831fe77275
Cleanup and rename OCIO Linear Grading node
2022-04-24 21:03:00 +01:00
Thomas Wilshaw
4d2f8f775c
Add ability to add custom shaders to ColorProcessorJobs
2022-04-24 18:50:06 +01:00
itsmattkc
97a210f14b
Merge branch 'master' into pr/1875
2022-04-15 13:24:23 -07:00
itsmattkc
3aafb2466d
Squashed commit of the following:
...
commit f05b5b3ff8286f6252c2a3f3c8c367f8a5b821b5
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Tue Apr 12 13:05:25 2022 -0700
final consistency modifications
commit 4f27718d46de9660822eb197b0e900be947ec515
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Tue Apr 12 11:40:58 2022 -0700
opengl: don't set texture options for null texture
commit bb54cfcf4e219e1cbf1ecc6b5552cca75e6e1573
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Tue Apr 12 11:40:29 2022 -0700
rename inputs
commit e5ac8fffa2ac15f5549b6da5f42b05659c6d020f
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Tue Apr 12 10:37:23 2022 -0700
change alpha association formula
commit dee09a88f17552e3f98be8940966822e45d6df4f
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Tue Apr 12 10:36:58 2022 -0700
glsl: use constants to improve readability
commit aedc75ebee11b61198f29c464501a2ddb0506129
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Tue Apr 12 10:36:26 2022 -0700
changed id capitalization
commit 470b2bb85b51c4a57c109d3fb230088a81024277
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Tue Apr 12 10:35:53 2022 -0700
node: update categories
commit c78dacad82051dfbb3e40c92cfaf456dbff2de0d
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Tue Apr 12 09:22:57 2022 -0700
updated shaders to es 3
commit 1e7544be93e55916c94cd91629ec5eef728bfad8
Merge: 1bbb8d7f9 25d019609
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Tue Apr 12 09:02:32 2022 -0700
Merge branch 'master' into pr/1818
commit 1bbb8d7f9acd75cb4498733f105fbe0487c0db9c
Author: brimson <40442071+brimson@users.noreply.github.com >
Date: Tue Jan 18 18:36:24 2022 -0700
Simplify colordifferencekey.frag
Avoiding extra MOV instruction
commit c7cf1021ce5a3d090833e94e4bc212cc51a61a2a
Author: brimson <40442071+brimson@users.noreply.github.com >
Date: Tue Jan 18 11:43:02 2022 -0700
Revert switch-case changes
Thanks Simran, MattKC, and Wilshaw for the clarifications
commit 882ffeede01b81f0cb4dfd885ba05bf66119ac7e
Author: brimson <40442071+brimson@users.noreply.github.com >
Date: Tue Jan 18 00:06:31 2022 -0700
Optimize despill shader
Turn previous averaging from (1 MAD + 1 MUL) to (1 DP2), reuse the result to prevent recalculation.
commit 0c93f519977fa34840ab03d51addcf2456f931d8
Author: Thomas Wilshaw <thomaswilshaw@gmail.com >
Date: Sat Jan 8 17:23:49 2022 +0000
Cleanup
commit 222560ce1a4666899b1111854d4d549dd7ba1357
Merge: 96e21c2b4 d3ffeaa35
Author: ThomasWilshaw <thomaswilshaw@gmail.com >
Date: Tue Jan 4 23:50:39 2022 +0000
Merge branch 'master' into color_key
commit 96e21c2b43db3bf1051aca696970509292159548
Author: Thomas Wilshaw <thomaswilshaw@gmail.com >
Date: Tue Jan 4 23:45:26 2022 +0000
Rename and reoganise keying nodes
commit 6d42ed23a69ebdb1f5b399957f0b37434d0519dd
Author: Thomas Wilshaw <thomaswilshaw@gmail.com >
Date: Tue Jan 4 23:04:50 2022 +0000
Move despill code to it's own node
commit e97ab2e16fd1d4e2f2ff145b8c023ff0e1ee451e
Author: Thomas Wilshaw <thomaswilshaw@gmail.com >
Date: Mon Jan 3 21:39:48 2022 +0000
Add option for blue screens
commit 2346f44e5af48bb9547c77c4c08ee7abfcb09393
Author: Thomas Wilshaw <thomaswilshaw@gmail.com >
Date: Mon Jan 3 21:14:55 2022 +0000
Optimise node slightly
commit 446522edcf63525fafe7a97cf6d59b7ea0385460
Author: Thomas Wilshaw <thomaswilshaw@gmail.com >
Date: Mon Jan 3 21:10:03 2022 +0000
Fix GL ES compile error
commit a765ce6c6f3e0c0e996f08e2a3ef1101818098e8
Author: Thomas Wilshaw <thomaswilshaw@gmail.com >
Date: Sun Jan 2 18:27:24 2022 +0000
Cleanup
commit d268e0645df34aa306dc391d1dc10bf335524f94
Author: Thomas Wilshaw <thomaswilshaw@gmail.com >
Date: Sun Jan 2 18:03:26 2022 +0000
Fix core matte and change Darks start value
commit 30b024dc5f59dd60ffc5012eee7a79201ed4f9c3
Author: Thomas Wilshaw <thomaswilshaw@gmail.com >
Date: Sun Jan 2 17:26:39 2022 +0000
Change matte controls and cleanup
commit b742a9ba7ed651785a0781289a4c03fd4fb72e03
Author: Thomas Wilshaw <thomaswilshaw@gmail.com >
Date: Sun Jan 2 16:31:41 2022 +0000
Add a core and garbage matte
commit f814d036b61b8de090df4c1f080c124b98b432d6
Author: Thomas Wilshaw <thomaswilshaw@gmail.com >
Date: Sun Jan 2 03:31:20 2022 +0000
Improve basic keyer
commit 4995ec3b9b92c9b4cb0dc31a247d585b2a47e408
Author: Thomas Wilshaw <thomaswilshaw@gmail.com >
Date: Sun Jan 2 00:23:18 2022 +0000
Start simple color key node
2022-04-12 13:05:45 -07:00
itsmattkc
16580841a6
Squashed commit of the following:
...
commit 8619bb044081da81b4eef238d138bd051e678a4c
Merge: 1a767e0c2 1c30c4d36
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Sun Mar 27 23:59:10 2022 -0700
Merge branch 'master' into gizmo-rework
commit 1a767e0c2279cac3baf96a9028c1b78ec0491e00
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Sun Mar 27 17:23:07 2022 -0700
implement custom html parser/exporter
commit bbd9361d345ce864d198f4340b3d59f526e642e5
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Wed Mar 9 22:27:17 2022 -0800
textgizmo: further improved behavior
commit 27634d5d377f03cab009bca418765d73764893f2
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Wed Mar 9 22:26:19 2022 -0800
textgizmo: improved double click behavior
commit 0897ebfa36e676461c7a47305a3c1bf66e7a9fd1
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Wed Mar 9 10:20:57 2022 -0800
text: added more features and improvements
commit 9d6446a25d977ea0c66e5f5c69239aed0e92fe83
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Wed Mar 9 10:14:59 2022 -0800
text: don't create color input
commit d1d3b9d46e74d8197ba3485a8e965068eb245166
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Wed Mar 9 09:10:23 2022 -0800
text: convert to reference space
commit 3ba1565129a0bdd74b860b1869fec5ef30025abb
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Mon Mar 7 17:57:26 2022 -0800
finally got scaling to work
holy shit I never thought it'd be this easy
commit 081368cfac9b49a171db6c1d576e134903dffac0
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Mon Mar 7 11:25:58 2022 -0800
improved text behavior
commit f3eda52eee29b7cd354d7d90b3ae1a819e1b1cf2
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Mon Mar 7 11:08:31 2022 -0800
implemented font styles (weights and italics)
commit 0898b613ec9b473ac93996536d00541e0a2a3f74
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Mon Mar 7 01:26:13 2022 -0800
implemented beginnings of text gizmo
commit bffb8ede2d425e7391d16bc03e613d4d90367add
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Sun Mar 6 17:55:03 2022 -0800
conformed transform node to new gizmos
commit 1a1f86fa9bec9ea6b67f77032748c04b6b4c95fd
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Sat Mar 5 11:16:34 2022 -0800
update polygon node
commit 2388dd69164e8c57e0a1d221c7680a0d39173c2c
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Fri Mar 4 15:31:39 2022 -0800
implement glsl hack for corner pin
commit e96df6cb326fb278cc6555890ff0ac1d37ebf4bf
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Thu Mar 3 17:06:14 2022 -0800
updated corner pin
commit c70aa0e72d4e83045c84259294608c1380e8929b
Merge: 5afed6383 780342881
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Thu Mar 3 17:04:40 2022 -0800
Merge branch 'master' into gizmo-rework
commit 5afed6383952d7d936b5eeda2556339c854610af
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Thu Mar 3 16:55:57 2022 -0800
use float points for more precise math
commit 159ade0d2812d556dee57f99e3f733ef1e838d01
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Thu Mar 3 16:55:40 2022 -0800
ported shape node
commit 28f9500d7bc6cd2661ee9ea591db7b3f8d583196
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Thu Mar 3 15:50:19 2022 -0800
implemented enough dragging code to reimplement crop
Requires far less boiler-plate code per node
commit 5aeaa59227ad2f1dc3c7f499c636de843a262a88
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Wed Mar 2 19:45:04 2022 -0800
update just merged corner pin for new gizmos
commit 8a2d041650d1b873c6d87664564ebcdf92a3760f
Merge: c916e8e08 f5b4729a1
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Wed Mar 2 19:38:36 2022 -0800
Merge branch 'master' into gizmo-rework
commit c916e8e08016c1d0b72d85087db76e4137587d52
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Wed Mar 2 19:35:09 2022 -0800
gizmos: rewrote drawing into standard routines
Work towards a far more maintainable gizmo system
2022-03-28 00:01:48 -07:00
Thomas Wilshaw
6464bdfd68
Add an OCIO Grading Transform Node
2022-03-13 23:00:00 +00:00
ThomasWilshaw
5b565e5fa5
Merge branch 'master' into ocio_node
2022-03-08 16:39:14 +00:00
ThomasWilshaw and itsmattkc
f5b4729a19
Corner pin ( #1851 )
...
* Start adding a corner pin node
* Start gizmo support
* Correctly setup QVector2d inputs
* Missing breaks were causing incorect data to be set
* Add ability to override vertex coords
* Get perspective pin working
* Cleanup
* Add none perspective corner pin
* Small optimisation
* Improve comments, clean up and fix bug in job optimisation
* [skip ci] cornerpin: Improve description
* Move GL extension from shader to standard preamble.
* Use #version 130 for mobile GPU compatibility
* Cache half resolution
* Use built in NodeInputDragger::GetStartValue
* Pass cnst references to avoid deep copies
Co-authored-by: itsmattkc <itsmattkc@gmail.com >
2022-03-02 19:38:12 -08:00
itsmattkc
f9112c05fd
Implemented time offset node
2022-02-01 19:55:09 -08:00
Thomas Wilshaw
ff2eac55a5
First attempt at adding OCIO to nodes
2022-02-01 16:12:08 +00:00
ThomasWilshaw and itsmattkc
953adf856b
Add Flip/Flop node ( #1850 )
...
* Add Flip/Flop node
* Rename node Flip
* Missed files
Co-authored-by: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
2022-01-25 15:14:54 -08:00
ThomasWilshaw
314167be40
Noise node ( #1848 )
...
* Add a noise generator node
* Cleanup
* Correctly name CMakeLists.txt
* Typo
2022-01-25 15:13:32 -08:00
itsmattkc
3cf90116e2
implement group-based opacity node
2022-01-21 10:08:48 -08:00
itsmattkc
a4934f1d47
implemented saving/loading for groups
2021-12-28 21:52:28 -08:00
itsmattkc
dc79a6a5d9
revised text node
...
Fixes #1684
2021-10-25 15:46:06 -07:00
itsmattkc
4ed9ba5475
rename current text effect to textlegacy
2021-10-25 14:54:48 -07:00
itsmattkc
b07bccb7dc
nodes: revert to single output
2021-09-07 22:01:36 -07:00
itsmattkc
330a37da92
nodes: implemented shape generator
2021-08-03 11:55:31 -07:00
itsmattkc
cc21ed37a7
implemented core subtitle support
2021-05-18 12:42:47 +10:00
itsmattkc
36466d0f9b
nodefactory: removed unnecessary debug line
2021-04-29 23:40:30 +10:00
itsmattkc
77d4b18a60
updated copyright year for 2021 [skip ci]
2021-04-17 18:56:50 +10:00
itsmattkc
e410eb2aa6
nodefactory: minor code change
2021-04-17 15:13:33 +10:00
itsmattkc
88ebfb9d8e
nodefactory: added time remap node
2021-04-17 15:02:56 +10:00
itsmattkc
893adc3d72
implemented value node
...
Also implements changes necessary to support an input data type
that changes. Much of that foundation was built in
`nodearchchanges`, but hadn't been finalized. This commit
finalizes and provides a reference implementation/test with the
"Value" node.
Fixes #1443
2021-04-12 16:37:26 +10:00