Commit Graph
110 Commits
Author SHA1 Message Date
Mike-Solar 835d47244c ci: sweep remaining QLatin1String::toUtf8; embed version obj in oakengine.dll
- pointer.cpp/transition.cpp: same Qt 6.4 incompatibility as import.cpp
- Windows: DLLs cannot have undefined symbols, so the
  executable-provides-k_app_version trick does not link; embed
  olive-version-obj into oakengine on WIN32 (each module keeps its own
  copy)
2026-08-03 12:48:27 +08:00
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 c0dcd33de0 R8 phase 1: extract app/engine shared utilities into shared/include/oakutil
Move the pure-header utilities shared by app/ and engine/ out of
engine/common/ into a new shared/include/oakutil/ layer (define, lerp,
decibel, digit, range, crashpadutils, autoscroll, qtutils, filefunctions
declarations, and a trimmed xmlutils exposing a CancelAtom-free void*
overload). engine/common/ keeps forwarding headers so internal include
paths are unchanged; app/ now includes oakutil/* directly.

engine/node/project.h gains an explicit NodeGroup forward declaration
previously obtained transitively through the old xmlutils.h.
2026-07-27 17:14:56 +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 2c2df99963 name every undo command 2023-03-12 00:49:03 -08:00
itsmattkc 019f095ee4 implement history panel 2023-03-11 22:26:21 -08:00
itsmattkc 4801891532 timeline: fix issue where transitions wouldn't reconnect on alt+drag 2023-02-21 18:50:11 -08:00
itsmattkc 11e4e051c3 move undo files around for better organization 2023-02-20 16:09:22 -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 54d0a94a20 Merge branch 'master' into cache-update 2022-08-18 08:12:46 -07:00
itsmattkc a3d6ecc4fd timeline: skip gaps when moving blocks 2022-08-08 11:31:31 -07:00
itsmattkc 7e1792cfea Merge branch 'master' into cache-update 2022-07-01 22:32:49 -05:00
itsmattkc e27c53bea8 timeline: relink duplicated clips 2022-06-10 10:34:51 -07:00
itsmattkc eeea16c5c3 cache: add passthroughs to allow shallow copies of data 2022-06-06 20:06:43 -07:00
itsmattkc e3c3ee9ac4 code: removed unnecessary code 2022-05-30 08:59:25 -07:00
itsmattkc 2f7dc3c98b implemented separate waveform cache 2022-05-29 17:52:35 -07:00
itsmattkc f124ad3178 cache waveforms at clip level 2022-05-22 20:54:59 -07:00
itsmattkc 3cf01c1464 timeline: show media in adj in ghost overlays 2022-05-21 19:55:14 -07:00
itsmattkc 1fa51613f9 improved transition behavior
This is still not complete, but definitely should help a lot
2022-05-15 11:06:45 -07:00
itsmattkc 4b366a9b73 update copyright year to 2022 2022-05-10 10:38:56 -07:00
itsmattkc e6d4fe43de reworked and vastly improved snapping subsystem 2022-05-02 00:01:49 -07:00
itsmattkc e8dde836e3 Merge branch 'master' into pr/1717 2022-05-01 10:58:44 -07:00
itsmattkc 25d0196094 timeline: add links when trimming adjacent gaps
Fixes #1808
2022-04-12 00:32:15 -07:00
itsmattkc 7ceb5c0914 timeline: implement track select tool
Fixes #866
2022-04-11 19:49:50 -07:00
itsmattkc 518f57992e cmake: revert to C++14
I've modified some of the code so our C++ version can decrease back to C++14. If this fixes the OTIO linker issue... well that sucks. Hopefully whatever the issue is gets resolved some time so that we can upgrade to C++17
2022-03-28 00:40:19 -07:00
ThomasWilshaw 02b9a38737 Merge branch 'master' into marker 2022-01-28 22:30:29 +00:00
itsmattkc cce379ad22 handle cache properly in ripple delete 2022-01-28 13:49:49 -08:00
itsmattkc 3c95ff7ac8 recalculate selected nodes on pointer operation 2021-12-29 00:54:48 -08:00
Thomas Wilshaw e606c156c5 Cleanup for review 2021-11-09 11:59:29 +00:00
Thomas Wilshaw 91ae2ecc44 Make sure either clips are selected or markers are selected, never both. 2021-10-22 22:15:51 +01:00
itsmattkc 407407491f timeline: add null check 2021-09-27 11:05:35 -07:00
itsmattkc 6bd7bc4cca timeline: copy waveform when copying 2021-08-25 12:27:26 -07:00
itsmattkc c3d30f1b77 Merge branch 'master' into transition-offsets 2021-08-02 14:20:56 -07:00
itsmattkc 438cce1ce5 widget: use rational for internal playhead value
Fixes #1688
2021-08-02 10:55:01 -07:00
itsmattkc 6995ffe015 reworked timeline elements 2021-08-01 11:05:18 -07:00
itsmattkc 930d8309d3 timeline: implemented nudging #1692 2021-07-30 19:17:26 -07:00
itsmattkc 7fe8dbc77a timeline: fixed double remove on transitions
Fixes #1655
2021-07-22 01:09:06 -07:00
itsmattkc c41047ab02 timeline: reorganized undo commands
Split commands between several files rather than having them all in two monolithic ones.
2021-07-16 01:38:20 -07:00
itsmattkc a0200f2286 timeline: tidied up pointer code 2021-04-27 01:24:48 +10:00
itsmattkc 269fa6d905 remove block enum
Replaced with dynamic casts.
2021-04-22 11:50:24 +10:00
itsmattkc 77d4b18a60 updated copyright year for 2021 [skip ci] 2021-04-17 18:56:50 +10:00
itsmattkc a57bf35e93 don't copy items when splitting or duplicating blocks 2021-03-01 13:27:13 +11: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