Commit Graph
303 Commits
Author SHA1 Message Date
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 b65abe4881 use floor instead of round when calculating frame from cursor
Fixes a bug where clicking on the right of a frame would register as clicking
the next frame.
2019-12-28 04:47:27 +11:00
itsmattkc f96abc2d82 set up sizing defaults 2019-12-28 02:09:23 +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 bbef9badc7 implemented moving keyframes around in the NodeParamView
Can now change the time in the parameter panel.
2019-12-27 22:13:00 +11:00
itsmattkc 97b91d2050 synchronized the keyframeview and nodeparamview scroll to work together 2019-12-27 16:38:40 +11:00
itsmattkc 3e3963dfaa implemented keyframe type changing
Implemented the UI to change a keyframe's type along with the ValueChanged
signals that should result.
2019-12-27 16:37:06 +11:00
itsmattkc 855fe5e93f fully implemented setting keyframes and standard values in the NodeParamView
Widget now supports creating keyframe and standard values, supports dragging
from sliders (not creating an undo command for each drag), and everything is
undoable.
2019-12-27 14:51:21 +11:00
itsmattkc a4b3dc2ab4 fixed bug that caused flickering textures
The ViewerGLWidget would receive raw GLuint textures while most of Olive uses
an OpenGLTexture C++ wrapper. Unfortunately this would lead to the C++ wrapper
getting destroyed since its instance wasn't kept in the ViewerGLWidget. This
meant by the time the ViewerGLWidget would re-draw, the texture would have
already been destroyed leading to some black frames. This is now fixed.
2019-12-27 05:11:42 +11:00
itsmattkc fe3c155b98 sliders now have feedback on whether they're being dragged or not 2019-12-27 04:15:27 +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 e32376a8b7 updated NodeInputs to use a standard value as well as keyframed values
Previously the non-keyframed value was stored as a static keyframe but this
introduced issues when an input was in a state of keyframes being enabled but
0 keyframes existing. Having a standard value makes much more sense.
2019-12-27 02:06:41 +11:00
itsmattkc 52672cc031 rewrote TimeRuler drawing function for improved code, performance, and functionality 2019-12-27 01:23:06 +11:00
itsmattkc e8808f5e89 shifted IC unblocking until after the split is done since the clips won't change 2019-12-26 19:29:48 +11:00
itsmattkc 5d82aa1a7d ensure playhead cannot be dragged below 0 in the TimelineViewBase 2019-12-26 19:03:44 +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 7d907d7ee1 removed olive:: qualifier from icon:: namespace 2019-12-26 17:38:18 +11:00
itsmattkc bb9284a894 moved tool enum to a Tool class
Code cleanup and improvement.
2019-12-26 17:35:25 +11:00
itsmattkc d140094cf5 moved PanelManager to a more traditional singleton form 2019-12-26 17:27:30 +11:00
itsmattkc 520b8b46fa place timecode conversion functions into a Timecode class rather than an olive namespace
Code cleanup and improvement.
2019-12-26 17:20:58 +11:00
itsmattkc 3b2fcf4aae re-implement value setting for all other types than float in NodeParamViewWidgetBridge
Just updating code
2019-12-26 17:20:30 +11:00
itsmattkc 23001386d0 implemented base UI keyframe functionality
This commit implements much of the base functionality for creating and
destroying keyframes in the UI. Not complete yet, but getting there.
2019-12-26 16:32:08 +11:00
itsmattkc 97c192672e constructed keyframeview and timeruler together inside nodeparamview and connected them 2019-12-25 02:42:07 +11:00
itsmattkc d705a27d54 moved more functions to the base class in the vein of the previous commit 2019-12-25 02:41:40 +11:00
itsmattkc 4b48a73db3 moved some timelineview functions into a timelineviewbase for reusing
Later classes will feature similar functionality to the TimelineView, moving
them to a base class that can be easily reused seems like a good idea.
2019-12-25 02:20:23 +11:00
itsmattkc dc6d498da8 began UI for keyframing
Largely extending the existing NodeParamView with functionality from the
previous release.
2019-12-25 01:20:46 +11:00
itsmattkc f0cd480540 finished audio effects support in audio renderer
Working structure implemented in previous commit into the audio renderer is
complete in this commit.
2019-12-24 14:02:07 +11:00
itsmattkc 38d35d1b88 updated viewer to set render backend format/mode
Yes, it's still hardcoded in the viewer for the time being, but moving it out
of the backend makes the backend format flexible for exporting.
2019-12-20 04:38:19 +11:00
itsmattkc 0ef00245ad added functions to override the resolution and matrix transform of the viewer widget
While in most circumstances these shouldn't be used, they're useful for
showing things like export previews
2019-12-19 15:55:08 +11:00
itsmattkc 05e10962f9 added convenience undo command for removing a node and its exclusive deps 2019-12-19 01:44:18 +11:00
itsmattkc 2c79edeb0f further improved msvc compilability 2019-12-18 23:35:02 +11:00
itsmattkc cde668b590 implemented percentage and decibel view modes for slider
A slider can now hold a float value and display it in the UI converted to
either a percentage or a decibel (still returning a linear float value
programmatically for the rest of the code).
2019-12-18 02:09:53 +11:00
itsmattkc be0d857e38 snap footage imports to the timeline timebase
Earlier, footage that was not the same frame rate as the sequence had the chance
of their length value falling between a frame. This doesn't really help anything
with video since a frame is a discrete point in time, and only led to confusion
while navigating the timeline.
2019-12-18 01:21:25 +11:00
itsmattkc aae756b44c fixed regression from moving length to a nodeparam
Splitting commands would run CopyInputs after set_length. Since length is now
a parameter (aka a NodeInput) the former would override the latter breaking the
implementation. This commit fixes that.
2019-12-18 01:20:04 +11:00
itsmattkc 29ae366659 improved speed/duration implementation
This functionality is almost complete minus the reverse speed and any of the
audio implementation.
2019-12-18 01:19:17 +11:00
itsmattkc 4e6da87585 ported crossdissolve to external shader 2019-12-17 15:58:16 +11:00
itsmattkc a0b6bb842d ColorManager is now specific to the Project
OCIO config was set on a per-project basis, but we were using a singleton for
the ColorManager that would break if more than one project was ever open.
Now the ColorManager belongs to the Project and is always accessed through the
Project.
2019-12-17 15:18:07 +11:00
itsmattkc d4ee33405b implemented speed/duration dialog and most of its functionality
An earlier commit implementing media in and out parameters was primarily for
this addition. A simple control dialog for the clip's speed presentation
reimplemented from the old codebase.
2019-12-17 03:58:12 +11:00
itsmattkc 4ba024e3ae implemented media out value to allow speed changes in clips 2019-12-16 18:29:35 +11:00
itsmattkc 23159025a4 ensure playback controls always shows a time when a timebase is set
Previously the playback controls would only appear after the first time they
updated. Now they're shown as soon as the viewer is set to a node.
2019-12-16 18:03:18 +11:00
itsmattkc baab21a3ab added option to disable color management menu on viewer
While the Viewer is _always_ color managed, In some contexts, the color
management may be controlled from an external UI making the menu unnecessary.
2019-12-16 16:43:27 +11:00
itsmattkc 1fd62948e8 completely implementation of color management in viewer
The viewer had the color management backend in place already, but the frontend
was non-functional. This commit implements most if not all color management
functionality.
2019-12-16 13:41:35 +11:00
itsmattkc b96fd7ae45 allowed access to the viewer node from the viewer widgets 2019-12-16 03:02:28 +11:00
itsmattkc 4ddeadaf46 fixed regression in slider
The recent slider focus addition caused the label to re-focus if the user
pressed enter in the line edit, causing the line edit to never disappear.
2019-12-16 03:00:26 +11:00
itsmattkc d6d8409bb9 allow sliders to be tabbed to 2019-12-15 20:03:02 +11:00
itsmattkc 83cf67fe7b implemented majority of export dialog widget layout 2019-12-15 19:56:12 +11:00
itsmattkc a977020833 implemented the ability to make inputs that can't be connected 2019-12-15 04:15:09 +11:00
itsmattkc f3acc369ff fixed boolean data types on the NodeParamViewWidgetBridge 2019-12-15 03:52:21 +11:00
itsmattkc 965519e9cf ported opacity node to external file format
The plan is to port all nodes that can be external to the external file format.
This should help keep things maintainable.
2019-12-15 02:51:28 +11:00