Commit Graph
90 Commits
Author SHA1 Message Date
itsmattkc 4d85987b71 nodeparamviewwidgetbridge: fixed array index out of bounds 2020-05-06 17:47:42 +10:00
itsmattkc 530aae00b8 nodeparamviewitem: fixed bug that didn't pass time target to array elements 2020-05-06 17:47:13 +10:00
itsmattkc 2e0082b04c nodes: started array widget 2020-05-06 16:32:54 +10:00
itsmattkc c387ce1cd7 polygon node: early crude implementation 2020-05-05 00:22:49 +10:00
itsmattkc cfc5ce24a3 Merge branch 'master' into gizmos 2020-05-02 17:06:49 +10:00
itsmattkc e67dabf1ff keyframes: implemented deleting keyframes with the delete shortcut 2020-05-01 17:01:16 +10:00
itsmattkc bf68a4d631 nodes: added ability to label nodes 2020-04-29 15:35:05 +10:00
itsmattkc 877e8d3afc curveview: ensured curveview is updated with the correct length and playhead 2020-04-29 01:26:09 +10:00
itsmattkc 1cca9de7c5 gizmos: implemented pathway for node to draw on the viewer 2020-04-27 04:34:36 +10:00
itsmattkc ac3f49a845 nodes: moved matrix input on "video input" elsewhere
Rather than plugging a matrix into the video input node, the matrix is now
multiplied by the video input using a math node. This is probably more
sensible from a user perspective.

This also means the renderer is tolerant of texture sizes that are not equal
to the sequence size, however most nodes will downsample the texture to the
sequence size (and if not, it will be downsampled once it is cached). Textures
will still *always* be in reference space and the sequence's format. This seems
like the best compromise between backend and frontend congruity.
2020-04-27 04:11:24 +10:00
itsmattkc 9c4999cfae curvepanel: reconfigured to be a spawnable child of NodeParamView 2020-04-27 00:04:07 +10:00
itsmattkc 53ae25a7cb nodes: optimize node graph changes by only updating from inputs that changed
A huge optimization that ensures only the parts of a node graph that have
changed get pushed to the renderer. For thread-safety, the node graph is
copied elsewhere so that users can make changes asynchronously and the graph
can update when its threads are ready. Up until now, if an input value changed,
every node's values would be re-copied, or worse, if a connection was changed,
the entire graph would be recopied. This has been negligible in testing since
we've been largely testing with small graphs, but for massive projects, it's
important that this be as optimized as possible.
2020-04-26 04:16:15 +10:00
itsmattkc 6c1e90665f colormanagement: moved from passing DVL strings everywhere to a consolidated ColorTransform struct 2020-04-23 01:17:58 +10:00
itsmattkc db117e0780 mathnode: increased decimal places
Also includes general improvements to the slider widget such as an optional
"autotrim" function to cut off trailing zeroes, a "format" string that's easier
to internationalize, and general tidiness.
2020-04-22 17:49:32 +10:00
itsmattkc 6f4bf70d3e scope: implemented waveform scope 2020-04-20 22:58:29 +10:00
itsmattkc f063d4741d nodeparamviewitembody: use all columns in subbodies
Minor UI improvement.
2020-04-19 15:35:26 +10:00
itsmattkc 9aed452f1d nodeparamviewitem: null check for keyframe control in SetTime() 2020-04-19 15:33:06 +10:00
itsmattkc aecd381e6b nodeparamviewitem: show arrays in NodeParamView
Uses nested widgets to show array objects in the NodeParamView.
2020-04-19 00:04:22 +10:00
itsmattkc a796cb2c13 nodeparamview: separated the NodeParamView body into a separate widget for nesting
Will allow display of NodeInputArrays.
2020-04-18 23:28:11 +10:00
itsmattkc d3b71e6576 nodes: color management when setting color parameters is now preserved 2020-04-18 17:43:37 +10:00
itsmattkc f73c41d3fa various: implemented multiple project support
This required various changes to various parts of the infrastructure (mostly
using paths to finding the "root project" of any given object throughout).
Now theoretically infinite projects can be opened and accounted for at any
given time.
2020-04-18 01:50:47 +10:00
itsmattkc df5b66c3c7 nodeparamview: show connections in the param view 2020-04-17 01:07:13 +10:00
itsmattkc 2610d58ae3 footagecombobox: fixed bug where footagecombobox would display null on first showing 2020-04-15 03:59:46 +10:00
itsmattkc cc421d4108 keyframeview: show correct length and jump to the corresponding time in NodeParamView 2020-04-15 03:35:48 +10:00
itsmattkc 7ea8c52c78 /nodeparamviewwidgetbridge: block combobox signals when updating from node
Prevents unnecessary re-caching caused by the combobox signalling that its
value has changed when we're really just setting the value that the node already
has.
2020-04-15 02:52:24 +10:00
itsmattkc c09d83291e nodeparamviewwidgetbridge: empty combobox entries are separators 2020-04-15 02:41:05 +10:00
itsmattkc a0a7d106dc mathnode: implemented add/subtract/multiply/divide/power functions
Includes implementing combobox UI for the NodeParamViewWidgetBridge.
2020-04-15 01:52:24 +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
itsmattkc 0801488c89 nodeparamviewwidgetbridge: implemented setting and receiving color 2020-04-04 04:16:49 +11:00
itsmattkc 552163320c colorpicker: implemented color management
Also moves some items to ColorManager from Project for better accessibility and
re-uses some widgets in ExportDialog for improved code.
2020-04-03 01:23:08 +11:00
itsmattkc bcc8eaee55 colordialog: began widgets and dialogs for a managed color picker 2020-04-01 17:57:19 +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
luz.paz 321e7d1606 Fix doxygen and misc. typos
Found via `codespell -q 3 -L ba,keypair,numer,uint`
2020-03-10 15:00:56 -04:00
itsmattkc 3f043496f3 nodeparam: allowed for dynamic nodeparam property change to affect UI widgets
immediately
2020-03-07 02:16:48 +11:00
itsmattkc c168bf1a80 nodeparam: implemented parameters that allow arbitrary properties to be set
for UI representations

Allows properties to be set without adding explicit extra members to NodeInputs.
Crucially this means parameters like slider value representations (percent,
decibel, etc.) can be set from NodeInputs now.
2020-03-07 01:21:36 +11:00
itsmattkc baf3fbde05 global: made every user action set a project "modified" state that will prevent
the main window from closing instantly
2020-03-03 14:33:45 +11:00
itsmattkc 6eeae7b15e timebasedwidget: move center scroll functionality to base class so widgets like
Viewer can use it
2020-02-17 15:21:10 +11:00
itsmattkc a987899e5c nodeparamviewwidgetbridge: connect checkbox "clicked" signal rather than
"toggled"

Only signal a change if the user made one. Toggled would be signalled even when
we set it programmatically (e.g. by simply creating the checkbox widget and
setting its state) causing unnecessary re-caches of the sequence.
2020-02-16 12:37:10 +11:00
itsmattkc 4213209727 fixed gcc compilation issue 2020-02-01 21:27:06 +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 0469fac4a9 node: send invalidatevisible signal through graph
When dragging a value in the UI, we use a "single frame update" because we want
to prioritize the currently visible frame to give visual feedback as soon as
possible. Previously, we generated a single frame InvalidateCache() signal
from the widgets themselves, but this had the major downside of not necessarily
emitting the time that the viewer was actually showing (due to either node time
transformations or times differing between the effects panels and the viewer
panels). Now, we send a different signal that viewers can handle themselves to
update the time that they're currently showing. This means the fast updating
will work no matter how many viewers are connected at whatever time each viewer
is set to.
2020-01-26 14:16:22 +11:00
itsmattkc 4697b98980 fixed gcc compile issues 2020-01-19 20:39:48 +11:00
itsmattkc c8baf4aa3e implemented rubberband zoom in timeline 2020-01-07 20:24:07 +11:00
itsmattkc 8b2514c1de implemented automatically switching to the hand tool when middle clicking on
all TimelineViewBase derivatives
2020-01-02 05:44:40 +11:00
itsmattkc f65e1e52b5 implemented scroll wheel zooming in all TimelineViewBase derivatives 2019-12-31 19:49:09 +11:00
itsmattkc 245aa44efc implemented support for multilayered keyframes
This adds the ability to keyframe more than one value per input (e.g. a vec2,
vec3, etc.) so that you can animate, for example, an X axis separately from a
Y axis.
2019-12-30 04:47:23 +11:00
itsmattkc 1d3d52db9b implemented the ability to modify bezier points in the curve editor 2019-12-28 22:40:30 +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 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