Commit Graph
108 Commits
Author SHA1 Message Date
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
itsmattkc edc38ad8a2 timeline: implemented adding objects in the timeline (e.g. solid, title) 2020-04-06 00:05:09 +10:00
itsmattkc 1319d7141f viewer: re-implemented auto viewer full screen from menubar/keyboard shortcut 2020-04-01 19:22:53 +11:00
itsmattkc 6ea6dd810e pixelsampler: added pixel sampler panel
When visible, this panel will show the current reference and display transformed
color under the cursor of any viewer.
2020-04-01 16:57:10 +11:00
itsmattkc 061f7ac20d mainwindow: show active project filename in the titlebar 2020-04-01 13:19:18 +11:00
itsmattkc b54388894c project: implemented the ability to delete items from projects 2020-03-28 12:33:28 +11:00
itsmattkc 3399227b3a keyframeview: implemented transforming keyframe times to and from sequence time
Since the node graph can have transform cross nodes, input keyframes may occur
at a different times requiring transforming between sequence time and media
time. This commit implements such a mechanism in all UI classes that need it.
2020-03-26 19:17:46 +11:00
itsmattkc 3b8743a0ce timeline: show timecode on block items and started copy function 2020-03-23 15:28:58 +11:00
itsmattkc 51f02ea01b viewer: allow switching open sequences 2020-03-21 22:18:17 +11:00
itsmattkc 34f60e639a nodeview: implemented copying/pasting nodes
Re-uses XML-based project saving/loading functions to store nodes, their
parameters, and their connections in a text-based format in the clipboard.
2020-03-15 20:01:58 +11:00
itsmattkc 02e7c68104 timeline: reimplemented linking/unlinking functionality 2020-03-15 13:41:46 +11:00
itsmattkc 1c4411a4ad timebasedwidget/timeruler: reimplemented creating and displaying markers 2020-03-14 23:03:27 +11:00
itsmattkc dc37389d02 timeline: implemented in/out points 2020-03-08 01:06:45 +11:00
itsmattkc 38a30b584a timeline: implemented some base ripple delete functionality 2020-03-07 18:07:55 +11:00
itsmattkc 0bca86e3c7 panels: allow insert and overwrite from footageviewerpanel too
Makes FootageViewerPanel and ProjectPanel derive from a common base that
TimelinePanel searches for when looking for a source to insert/overwrite from.
2020-03-03 20:26:01 +11:00
itsmattkc 2f7819d0ae timeline: use similar reverse strategy for inserting/overwriting from
the most recently focused project panel
2020-03-03 20:13:58 +11:00
itsmattkc 9b73892c41 ui: implemented keyboard controls for inserting/overwriting footage into the
timeline

Allows users to use the keyboard to place footage into the timeline rather than
forcing them to drag.
2020-03-03 20:03:50 +11:00
itsmattkc bf7fc9a0c4 panels: selecting a clip in the timeline automatically selects the corresponding
nodes in the nodeview
2020-02-26 00:39:30 +11:00
itsmattkc 0a74714f5d nodeview/nodepanel: implemented select all/deselect all functionality 2020-02-23 11:38:30 +11:00
itsmattkc 6facdc1f1b projectpanel/projectexplorer: added select all/deselect all functionality 2020-02-23 11:33:49 +11:00
itsmattkc 0e7b051228 timelinewidget: show cache status in timeline too 2020-02-22 14:45:50 +11:00
itsmattkc c0360abee1 toolpanel: override Retranslate() 2020-02-01 22:28:14 +11:00
itsmattkc 2fef893fd0 panels: override Retranslate() rather than reimplementing changeEvent() in every derivative 2020-02-01 22:11:14 +11:00
itsmattkc 17c1493aa7 all time-based panels are now derived from a common base class
Cuts down on a lot of duplicate code between
TimelineWidget/ViewerWidget/CurveWidget/NodeParamView
and TimelinePanel/ViewerPanel/CurvePanel/ParamPanel since they all use similar
time functions.
2020-02-01 19:39:43 +11:00
itsmattkc 24f7eeb210 renderer: implemented function to wait for workers in the main thread
The workers run in separate threads meaning if any significant change is made
(e.g. parameters changing, or even closing the program), these workers may still
be mid-render. This is particularly problematic when closing since the nodes a
worker is rendering may be deleted mid-render. Render backends now have a
function that pauses the main thread (but starts a second event loop so the UI
isn't frozen) until the worker threads are all finished. This way, massive
changes can be made safely without race conditions.
2020-01-22 17:11:17 +11:00
itsmattkc c6710b1359 correctly update the panel subtitles based on the media connected 2020-01-16 14:57:16 +11:00
itsmattkc 00b5672639 implemented saving UI
Implemented the file dialog, save progress dialog, and separate thread to save
in (saving needs to be done in a separate thread so the main/GUI thread doesn't
get blocked).
2020-01-12 16:26:05 +11:00
itsmattkc 31b60664a7 Merge branch 'merge-timeline-and-viewer' 2020-01-04 02:45:26 +11:00
itsmattkc 3369bb53f9 implement double clicking a sequence in the project explorer to open it 2020-01-03 21:14:27 +11:00
itsmattkc df837efbc6 merged timeline and viewer nodes together 2020-01-03 03:26:00 +11:00
itsmattkc 2b24fae26f implemented vertical "zooming" in the TimelineWidget and CurveView
This comes in the form of changing the vertical scale in the CurveView and
adjusting all track heights in the Timeline.
2019-12-31 00:23:28 +11:00
itsmattkc 0db13a96ab implemented a footage viewer
Essentially a minor derivation of a viewer type that can automatically view
footage from the project (i.e. not in a sequence).
2019-12-30 20:17:48 +11:00
itsmattkc 26cafa7936 implemented bulk of curve editor's functionality
While certainly not entirely complete yet, this implements most of the UI
functionality of the graph editor.
2019-12-28 18:26:37 +11:00
itsmattkc d82acf9b7e implemented basic animation curve editor widgets
Frontend is largely done, it just needs backend and connecting to other
widgets to function correctly.
2019-12-28 00:27:13 +11:00
itsmattkc 3c9b16555f created curve editor panel 2019-12-28 00:26:42 +11:00
itsmattkc 227db9d653 updated ParamPanel to be able to be connected with ViewerPanel and TimelinePanel 2019-12-27 02:41:31 +11:00
itsmattkc 61c60e00d6 various small code cleanups and improvements
Largely refactoring work to make the code somewhat nicer to work with.
2019-12-26 19:00:08 +11:00
itsmattkc d140094cf5 moved PanelManager to a more traditional singleton form 2019-12-26 17:27:30 +11:00
itsmattkc 97c192672e constructed keyframeview and timeruler together inside nodeparamview and connected them 2019-12-25 02:42:07 +11:00
itsmattkc 836192df48 fixed circular dependency that oddly only occurred on MSVC 2019-12-18 16:49:42 +11:00
itsmattkc b96fd7ae45 allowed access to the viewer node from the viewer widgets 2019-12-16 03:02:28 +11:00
itsmattkc 2f04a53054 implemented deleting clips in the timeline
Also fixed bugs in the Node::GetExclusiveDependencies function and in the
NodeInputArray::RemoveAt function to make this functionality work.
2019-12-14 17:10:06 +11:00
itsmattkc 18bf126574 implemented deleting nodes in the nodeview (undoable) 2019-12-13 04:12:00 +11:00
itsmattkc 8d599b60e4 reimplemented split at playhead functionality
Reimplemented an older but very useful timeline function for splitting blocks
at the current playhead.
2019-11-19 22:25:04 +09:00
itsmattkc 429514b1fd separation of previous renderer into base and derivation complete
The previous iteration was fairly OpenGL-heavy. It's now been separated into
a base class that is OpenGL independent and a derived class that is
OpenGL-based. Over time this should allow for portability away from OpenGL
if necessary.
2019-11-01 12:58:38 +11:00
itsmattkc 52f4c59bec implemented new audio monitor widget 2019-10-23 03:21:05 +11:00
itsmattkc ea4f6f43c4 added support for multiple timeline sections 2019-10-05 04:38:17 +10:00
itsmattkc 4c90405feb connect timeline and viewer together by default 2019-09-27 23:55:24 +10:00
itsmattkc f52c60c26e fixed keyboard shortcut implementation 2019-09-26 04:09:45 +10:00
itsmattkc 00d3932194 fixed maximize panel implementation 2019-09-26 04:00:41 +10:00