45 Commits
Author SHA1 Message Date
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 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 9ff6e689d6 vastly improved rubberband selection behavior with selection manager widgets 2023-02-28 20:21:38 -08:00
itsmattkc dd9c52ab59 start moving core frameworks to external libraries 2023-01-19 09:51:47 -08:00
itsmattkc d164a9a59a seekable: prioritize dragging playhead over workarea 2022-11-18 10:50:07 -08:00
itsmattkc 2d3ce55fd7 timebasedview: fix playhead dragging regression 2022-11-16 13:14:37 -08:00
itsmattkc af6cb35cde timeline: use better system of identifying ruler focus 2022-08-27 09:26:07 -07:00
itsmattkc 0e6ebee827 exportdialog/timeruler: disable marker and workarea editing
Fixes #1979
2022-07-23 09:59:18 -07:00
itsmattkc 24ae3a25d3 timeline: use scroll cooldown when dragging playhead 2022-07-16 17:12:35 -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 e6d4fe43de reworked and vastly improved snapping subsystem 2022-05-02 00:01:49 -07:00
itsmattkc f7396de121 markers: reimplemented copy/paste 2022-05-01 22:33:58 -07:00
itsmattkc 6a0b5856c9 various: extended marker and timeline functionality 2022-05-01 21:17:22 -07:00
itsmattkc cdcd83c09a ported seekablewidget to timebasedview
Cuts down on a lot of code duplication and opens up usage of the new TimelineViewSelectionManager framework
2022-05-01 15:45:20 -07:00
Thomas Wilshaw 3a5f0134af Enable marker snapping 2021-11-08 20:51:38 +00:00
Thomas Wilshaw 76e55a857f Make markers copy/paste-able 2021-10-22 22:15:52 +01:00
Thomas Wilshaw c445dc46a9 Add basic marker deleting and fix selection code 2021-10-22 22:15:52 +01:00
Thomas Wilshaw 0044174f3d Fix build issue. 2021-10-22 22:15:51 +01:00
Thomas Wilshaw d8101869b9 Redo marker selection code 2021-10-22 22:15:51 +01:00
Thomas Wilshaw 853dbc0066 Allow markers to be selected 2021-10-22 22:15:51 +01:00
Thomas Wilshaw e0a20a278e Cleanup 2021-10-22 22:15:50 +01:00
Thomas Wilshaw 3ff59544b2 Position markers correctly and update with scroll 2021-10-22 22:15:49 +01:00
Thomas Wilshaw 4ce922536e Create marker widget and attempt to add to timeline 2021-10-22 22:15:47 +01:00
itsmattkc 438cce1ce5 widget: use rational for internal playhead value
Fixes #1688
2021-08-02 10:55:01 -07:00
itsmattkc 77d4b18a60 updated copyright year for 2021 [skip ci] 2021-04-17 18:56:50 +10:00
itsmattkc 2c7e974f78 scroll only in increments when dragging the playhead 2021-01-24 18:38:57 +11:00
itsmattkc 374fa3f75c moved some files around for better organization 2020-12-16 19:05:22 +11:00
itsmattkc b39565cff4 audiowaveformview: multithreaded waveform rendering 2020-11-30 08:18:11 +11:00
itsmattkc 75d4cd899b use hardcoded namespace
The macro defined namespaces confused the hell out of lupdate and more or less broke translations permanently. Looks like the only way we can do it is to have a hardcoded namespace, which goes against my instinct, but honestly how likely is it that we'll change the namespace anyway (I guess forks might want to do it, but that's their problem ;) )
2020-11-17 20:24:42 +11:00
itsmattkc d241090a9f finally updated the copyright year 2020-11-17 20:13:22 +11:00
itsmattkc 86b66004b0 ui: removed last of the widget proxies 2020-07-23 23:11:00 +10:00
itsmattkc aaee2ab9ed timeline: vastly improved snapping 2020-06-06 13:59:49 +10:00
itsmattkc 290c8724c4 Merge pull request #1131 from luzpaz/typos-followup
Fix typos cont.
2020-04-16 12:21:45 +10:00
itsmattkc 1aa87cbda6 various: encapsulate all code in the olive namespace to avoid name collisions
Large-scale code cleanup. Also adds a license to the top of all files that were
missing it.
2020-04-06 15:29:53 +10:00
luz.paz 4e1cd870a9 Fix typos cont. 2020-03-21 13:46:38 -04:00
itsmattkc 50061e4e55 waveformview: show in/out points in waveformview
Moved drawing routines to the base class that is used by both TimeRuler
and WaveformView
2020-03-15 18:21:14 +11:00
itsmattkc 7f2dcc8200 waveformview: made UI seekable 2020-03-14 01:57:40 +11:00