Mike-Solar
66d761b4b7
R8: finish app/ pure C ABI migration (P3-P9) and make OTIO required
...
- app/ no longer includes engine C++ headers nor holds engine C++ types:
engine access goes through the oakengine C ABI plus C++ wrappers
(oakutil/oaknode.h, oakutil/oakvideo.h) and app-local mirror types
(tooltypes, trackreferencehandle, timelinecommonapp, keyframetypes,
subtitleapp, serializedlayoutinfoapp, nodevaluehandle, sliderdisplaytypeapp)
- engine: new C ABI functions for block/track/clip/transition navigation
and predicates, links, caches, waveform/playback, disk folder,
sequence_track_list, node_free, footage_is_valid, block_get_track,
get_brush; loadotio/saveotio ported to the current engine API
- OTIO is now a required dependency: CI and CD build it on every
platform, FindOpenTimelineIO fixed for OTIO 0.16/0.19 (the old deps
include requirement silently disabled OTIO everywhere), runtime
libraries are bundled into packages and copied next to macOS binaries
(oak_copy_otio_runtime)
- fix ProjectViewModel drag&drop mime read/write size mismatch (segfault)
- unify color label naming (k_olive -> "Oak") in the app-side mirror
- docs: OTIO required, FFmpeg minimum corrected to 6.0 (en/zh)
- gtest suite: 1925 passed, 0 failed
2026-07-31 22:46:52 +08:00
Mike-Solar
0aa5879f35
app: migrate all engine access to the C ABI facade (nm U _ZN5olive = 0)
...
Every app module now reaches liboakengine exclusively through
oakengine_* C calls, EngineEventBridge subscriptions and app-side
handle headers (cliphandle/keyframehandle/nodevaluehandle/oakvaluehelper).
Direct C++ command construction, engine signal connect()s, and engine
type usage in MOC-visible signatures are gone: 557 -> 0 undefined
olive:: symbols in oak-editor.
2026-07-26 22:43:21 +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
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
cdc66d1a02
fix no video shown
2026-01-05 13:52:02 +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
d0f16ef88e
timeline: vastly improve behavior when scrolling and zooming
2023-02-28 20:39:02 -08:00
itsmattkc
451de7030b
Merge branch 'move-time-to-viewer'
2022-11-01 18:20:22 -07:00
itsmattkc
bdbfb56879
shift timelineview scroll code into base classes
...
Fixes #2060
2022-10-24 12:01:47 -07:00
itsmattkc
d1545745d8
various: moved time from viewer UI to viewer node
2022-10-23 20:56:04 -07:00
itsmattkc
925d63d707
timebased: transform keyframe times to global for snapping
2022-07-22 17:57:19 -07:00
itsmattkc
24ae3a25d3
timeline: use scroll cooldown when dragging playhead
2022-07-16 17:12:35 -07:00
itsmattkc
e4fd2d5d2c
timebasedwidget: rewrote scroll catchup code
...
Code is much better. Less hacky queuing, implements cooldowns to improve navigation, and introduces a framework so that subclasses can make use of catchup/cooldown code too with any scrollbar they want
2022-07-15 10:59:51 -07:00
itsmattkc
079d6beff2
timeline: separate markers and workarea
2022-06-27 23:39:31 -07:00
itsmattkc
182e1599af
keyframes: implemented copying/pasting
2022-05-10 15:42:09 -07:00
itsmattkc
4b366a9b73
update copyright year to 2022
2022-05-10 10:38:56 -07:00
itsmattkc
0f99d8a662
timeruler: add ability to resize markers and workarea
2022-05-09 17:53:21 -07:00
itsmattkc
1afb33e373
timebasedwidget: snap to workarea
2022-05-09 16:11:15 -07:00
itsmattkc
e6d4fe43de
reworked and vastly improved snapping subsystem
2022-05-02 00:01:49 -07:00
Thomas Wilshaw
7af6f85a7c
Move marker undo code to seperate file
2021-10-22 22:15:55 +01:00
Thomas Wilshaw
f037511cdb
Fix build issue
2021-10-22 22:15:52 +01:00
Thomas Wilshaw
76e55a857f
Make markers copy/paste-able
2021-10-22 22:15:52 +01:00
Thomas Wilshaw
6e77606c30
Make widget deletion undoable
2021-10-22 22:15:52 +01:00
Thomas Wilshaw
853dbc0066
Allow markers to be selected
2021-10-22 22:15:51 +01:00
itsmattkc
438cce1ce5
widget: use rational for internal playhead value
...
Fixes #1688
2021-08-02 10:55:01 -07:00
itsmattkc
52c5617159
undo: wrapped redo/undo functions to ensure prepare is called
2021-07-17 00:14:24 -07:00
itsmattkc
77d4b18a60
updated copyright year for 2021 [skip ci]
2021-04-17 18:56:50 +10:00
itsmattkc
c03c197412
added ability to open viewers on any viewer node or derivative
...
Fixes #1362
Also fixes some other bugs that impeded this from working.
2021-04-12 22:58:34 +10:00
itsmattkc
2dc27de37c
ensure frame rate and sample rate changes ripple through widgets
2021-04-08 10:44:32 +10:00
itsmattkc
ea29ffef96
minor refactoring and signalling panel subtitle by node change
...
Fixes issue where Footage Viewer subtitle wouldn't update when
dropping footage in.
2021-04-08 10:42:13 +10:00
itsmattkc
4066fcba90
began merging footage and viewer
2021-04-05 16:41:37 +10:00
itsmattkc
9be014c0b6
refactored so sequence is again a derivative of viewer
2021-04-05 14:41:59 +10:00
itsmattkc
d7c5ac4b44
implement entire project in nodes
...
Project items are now represented directly in nodes opening up more versatility and possibilities. This is the first iteration of this and will be buggy. Need to test thoroughly.
2021-02-15 21:31:57 +11:00
itsmattkc
ad4b83a098
new undo system
...
Also enables undoing when working with node input arrays
2021-01-29 16:10:34 +11:00
itsmattkc
9f99182089
use catch up scrolling when dragging items
2021-01-25 10:22:14 +11:00
itsmattkc
2c7e974f78
scroll only in increments when dragging the playhead
2021-01-24 18:38:57 +11:00
itsmattkc
ec4d061857
improved resizable scrollbar functionality
2021-01-23 08:19:04 +11:00
itsmattkc
374fa3f75c
moved some files around for better organization
2020-12-16 19:05:22 +11:00