Commit Graph
84 Commits
Author SHA1 Message Date
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 536d664cbb ui+ci: style KDDockWidgets tabs and add Applications symlink to DMG
- Add explicit QTabBar::tab styles to olive-dark/style.css so inactive
  KDDockWidgets tabs render with a dark background and white text instead
  of falling back to the native macOS light tab appearance.
- Update macOS CD to stage Oak.app alongside an Applications symlink
  before creating the DMG, matching standard macOS installer disk images.
2026-07-13 16:39:49 +08:00
Mike-Solar e5eeaddf2f format: reformatting files 2026-07-13 15:30:43 +08:00
Mike-Solar 225f8505c2 feat(render): dynamic OpenGL/Vulkan backend split and backend-neutral viewer
- Extract libolive-rendercore static library to minimize backend link boundary.
- Add DynamicRenderer adapter with C ABI (oakgl/oakvulkan shared libs).
- Make OAK_ENABLE_DYNAMIC_RENDER_BACKEND default ON with OpenGL fallback.
- Implement VulkanRenderer prototype (textures, shaders, UBO blit, readback).
- Add backend-neutral viewer readback path (offscreen -> QImage -> QPainter).
- Refactor PluginRenderer to be renderer-agnostic; OFX plugins fall back to CPU
  path on non-OpenGL backends while preserving OpenGL render path.
- Add Renderer::AttachOutputTexture/DetachOutputTexture and C ABI forwards.
- Update docs/zh/render-backend-dynamic-plan.md for Phase 3/4/5.
2026-07-13 10:19: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 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 0b0582ad5c style: decrease tab font size 2023-03-20 16:20:43 -07:00
itsmattkc 4d80044d6d upgrade to qt 6 compliance 2022-10-28 19:42:14 -07:00
Pablo Gil f8c4108c9a deploy dark icons and PNGs for light and dark icons 2022-09-01 16:31:59 +02:00
Pablo Gil 42a59c7452 new icons for vertical alignment and color picker 2022-09-01 16:25:45 +02:00
Pablo Gil bb5ce42916 new subtitles icon 2022-05-16 10:07:28 +02:00
itsmattkc 4b366a9b73 update copyright year to 2022 2022-05-10 10:38:56 -07:00
Pablo Gil a059216b07 fix dark colors 2022-05-05 11:14:56 +02:00
Pablo Gil 37668aeddc Text edit icon 2022-05-05 11:03:41 +02:00
itsmattkc 91b761693b code: use config macro
Macro is much easier to use and more readable
2022-05-04 09:50:34 -07:00
Pablo Gil 27cb53cc44 Icon track tool (#1901)
* initial icon design

* Dark SVG and all PNGs
2022-04-25 12:16:16 -07:00
Pablo Gil 006d4e76a0 Updated icon "text-underline" (#1903)
* initial redesign

* updated Dark SVG and all PNGs
2022-04-25 12:15:56 -07:00
Pablo Gil c04cad8ef3 Icon "text-strikethrough" (#1902)
* initial design

* Dark SVG and all PNGs
2022-04-25 12:15:42 -07:00
Pablo Gil 812885461e Icon "text-small-caps" (#1904)
* initial design

* Dark SVG and all PNGs
2022-04-25 12:15:20 -07:00
itsmattkc 9617436584 ui: disable native OS styling
There really isn't much point to maintaining this and it directly opposes Qt's code so we'll be fighting them forever
2022-03-30 15:07:33 -07:00
itsmattkc 9022a4f825 add icons for olive-light 2022-03-28 13:37:49 -07:00
itsmattkc c4711370c4 add skip existing option to style script 2022-03-28 13:37:42 -07:00
itsmattkc 99be25a67b added new icons to tracks 2022-03-28 13:33:40 -07:00
Pablo Gil 7318d321a6 fix missing "padlock_opened" references 2022-03-15 17:27:21 +01:00
Pablo Gil ebf734fec0 autogenerated .png and manually updated .qrc 2022-03-15 16:47:57 +01:00
Pablo Gil edf7b483dc adding "mute" and "lock" timeline icons 2022-03-15 16:40:45 +01:00
itsmattkc adc30216a2 further revised icon system
- Move QRC generation to CMake so they can be generated automatically rather than with generate-style.sh
- Removed QRC generation from generate-style.sh
- Added extra "disabled icon" generation in generate-style.sh
- Added disabled icon loading to main code
2022-01-28 16:39:55 -08:00
Pablo Gil 4243f4921e Icons big cleanup (#1728)
* full icon review, simplification and standarization:
- all icons share the same template (with grid and guides)
- simplified svg code
- changed names for better organization:
	- italic > text-italic
	- justify-center > align-justify-left
	- underline > text-underline
- updated previous design with Olive icons guideline
- created new icon for text-bold in case it is needed
- updated design for align-center, right and left to follow Olive icons guideline
- created new icons for alignements in case they are needed:
	- align-justify-all
	- align-justify-center
	- align-justify-left
	- align-justify-right
- updated .qrc files
- updated all .png files

* added missing "mini-map" icon

* fixed SVGs docnames and default export-filenames

* more cleanup and standarization to recently updated icons:
- align-justify-all
- align-justify-center
- align-justify-left
- align-justify-right
- text-bold
- text-italic
- text-underline

* changed some unused colors to #212121 in case the files are edited in the future, now they are set to the correct color
2022-01-28 15:36:38 -08:00
Pablo Gil c2a506082a add mini-map icon 2021-07-28 19:27:49 +02:00
itsmattkc 539b0582bf Merge pull request #1399 from pgilfernandez/icon_nodes2
[UI] Nodes View toolbar iconset
2021-07-10 09:08:38 -07:00
itsmattkc 77d4b18a60 updated copyright year for 2021 [skip ci] 2021-04-17 18:56:50 +10:00
itsmattkc ad0cefecaf remove now commented out ifdef guard 2021-01-14 10:30:33 +11:00
itsmattkc 19eabf2830 fixed variable that didn't change since it was behind an ifdef guard 2020-12-30 18:27:44 +11:00
itsmattkc c0095a40ce cache platform palette on load 2020-12-30 18:10:38 +11:00
itsmattkc 240fe81961 extend UI styling to 5.15.2 since they still haven't fixed this bug 2020-11-27 12:49:51 +11:00
Pablo Gil 992e6ab2e4 Nodes view toolbar: olive-light SVGs 2020-11-22 17:20:19 +01:00
Pablo Gil a687e5e9c4 Nodes view toolbar: olive-light PNGs 2020-11-22 17:19:26 +01:00
Pablo Gil 0142ae2e86 Nodes view toolbar: olive-light -QRC 2020-11-22 17:17:22 +01:00
Pablo Gil 09be9ecdb1 Nodes view toolbar: olive-dark SVGs 2020-11-22 17:16:50 +01:00
Pablo Gil 45bf44ef79 Nodes view toolbar: olive-dark PNGs 2020-11-22 17:16:05 +01:00
Pablo Gil 9c05d2a660 Nodes view toolbar: olive-dark QRC 2020-11-22 17:14:02 +01: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
Pablo Gil 7b05e1b59e [UI] update "new" icon with a right bottom triangle because the button really opens a menu 2020-11-07 12:31:31 +01:00
itsmattkc b5863fdadd workaround: don't use standardPalette on Qt 5.15 2020-09-18 11:34:10 +10:00
itsmattkc 08d4c7b385 config: save style 2020-08-10 21:37:04 +10:00