Commit Graph
100 Commits
Author SHA1 Message Date
itsmattkc 4827782331 moved sequence params into node graph too
Reduces code by reusing more of the existing node infrastructure
to synchronize sequence parameters the render backend.
2021-02-18 13:20:23 +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 155470bec1 implemented sorting in project explorer
Wow I can't believe I forgot about the QSortFilterProxyModel
for like 1.5 years straight.
2021-02-11 23:23:13 +11:00
itsmattkc b8de563a6d restored invalidation code when value is changed 2021-02-11 14:35:05 +11:00
itsmattkc 81c1922911 use strings to connect nodes
This makes the node system somewhat more high-level with the intent of making
working with them far more flexible and stable. By making the architecture more
abstracted, it becomes far less rigid which should allow us to do even more
with it and make it much less crash prone.
2021-02-09 15:48:37 +11:00
itsmattkc d1a3e22eaa fixed linux compilation issues 2021-01-31 10:39:14 +11:00
itsmattkc 8d8727c7c9 removed unused variable 2021-01-30 12:31:23 +11:00
itsmattkc d53885fe3d improved nodeparamview Y setting
Still not perfect, mostly due to Qt's terrible QMainWindowLayout, but ah well
2021-01-30 10:27:52 +11:00
itsmattkc 060714cec6 fixed uninitialized variable 2021-01-30 09:41:26 +11:00
itsmattkc 29eccf8e84 add opening sequence to the import undo command 2021-01-29 18:11:01 +11:00
itsmattkc b748b1142b wrap keyframing settings in IsKeyframable just because 2021-01-29 17:36:58 +11:00
itsmattkc ad4b83a098 new undo system
Also enables undoing when working with node input arrays
2021-01-29 16:10:34 +11:00
itsmattkc 4e5db91c17 keyframeviewbase: cleaned up code and show tooltip values in input's desired format 2021-01-25 11:05:09 +11:00
itsmattkc 9f99182089 use catch up scrolling when dragging items 2021-01-25 10:22:14 +11:00
itsmattkc 2da0aed942 remove unnecessary sequence casts 2021-01-25 09:33:50 +11:00
itsmattkc 7795d42347 moved block links to node links
Seems like it might be useful to have this as part of the node architecture as a whole
2021-01-25 09:17:25 +11:00
itsmattkc 2c7e974f78 scroll only in increments when dragging the playhead 2021-01-24 18:38:57 +11:00
itsmattkc 0f38769208 fixed more keyframe dragging bugs 2021-01-24 18:17:55 +11:00
itsmattkc 2dd578c6e2 curveview: fixed reset zoom propagation 2021-01-24 17:50:12 +11:00
itsmattkc 2ab797e7fe curvewidget: share color between view and tree 2021-01-24 15:32:25 +11:00
itsmattkc d4e6d33db1 keyframeviewbase: hold shift to only drag bezier by time 2021-01-24 15:32:03 +11:00
itsmattkc 8d975faa83 renamed function for clarity 2021-01-24 15:31:01 +11:00
itsmattkc f04ca0a707 implemented select and deselect all in curve and param panels 2021-01-24 15:29:38 +11:00
itsmattkc 8ccf7562cf disable keyframing on some parameters 2021-01-24 15:28:01 +11:00
itsmattkc 59da13969d add functions to select or zoom to fit keyframes of a single input 2021-01-24 14:06:39 +11:00
itsmattkc b45ca61d6d fixed bug where bezier control points weren't affected by Y scale 2021-01-24 14:05:51 +11:00
itsmattkc 49a9e5b870 finally added limits to bezier so curves can't loop over themselves 2021-01-24 14:04:18 +11:00
itsmattkc b68397d687 implement keyframe track separation in curve view 2021-01-24 12:09:00 +11:00
itsmattkc 4dd2b64c6d keyframecontrol: update state if keyframe time changes 2021-01-24 12:08:23 +11:00
itsmattkc eb132d93de timebasedviews: only drag playhead when there's no item underneath the cursor 2021-01-24 09:36:05 +11:00
itsmattkc 62bab2ec01 keyframeview: show time and value in tooltip while dragging 2021-01-24 09:35:41 +11:00
itsmattkc 13b5d9237a ensure node order is signalled if a node is unpinned and removed from param view 2021-01-23 08:28:40 +11:00
itsmattkc ec4d061857 improved resizable scrollbar functionality 2021-01-23 08:19:04 +11:00
itsmattkc 03dc971a4b nodeview: use existing zoom check function 2021-01-23 08:18:45 +11:00
itsmattkc 03d31b2225 fixed cursor zooming algorithm
What the hell is this? How did I write this old algorithm? Did it even work?
2021-01-22 19:52:05 +11:00
itsmattkc 78ed7213c8 minor code improvement: use string literal 2021-01-22 19:25:37 +11:00
itsmattkc e02a307498 timeline: don't copy vectors
This is no longer necessary
2021-01-22 19:25:22 +11:00
itsmattkc d9019f9cb1 fixed node removals 2021-01-22 19:23:20 +11:00
itsmattkc b114bf98c9 only select nodes on right click if the current clicked node isn't already selected 2021-01-22 17:12:04 +11:00
itsmattkc 3ce29f9093 apparently these weren't committed before, whoops 2021-01-22 17:07:42 +11:00
itsmattkc 88d1b86d11 bumped project version 2021-01-22 17:06:36 +11:00
itsmattkc fecd0e3775 trackview: delete from index 0
Fixes #1253
2021-01-22 17:00:39 +11:00
itsmattkc a261dd55f1 use quintptrs for footage rather than QVariant::fromValue 2021-01-22 16:04:37 +11:00
itsmattkc 744b768970 fixed loading bug caused by lack of while loop 2021-01-22 16:04:22 +11:00
itsmattkc a81860a4ba fixed issue where setting project thread didn't set any other threads 2021-01-22 15:42:25 +11:00
itsmattkc 516a5246c6 improved decibel handling in floatslider 2021-01-22 15:40:52 +11:00
itsmattkc 2af776b110 fixed various caching update issues 2021-01-22 14:33:30 +11:00
itsmattkc dfdb375cbf polygon: use string literal 2021-01-22 12:20:41 +11:00
itsmattkc 8a5df32281 fixed arrays in nodeparamview 2021-01-22 12:20:25 +11:00
itsmattkc ce8704f7d3 fixed block placement issue 2021-01-22 09:07:13 +11:00
itsmattkc 396ccfa160 reworked param view for new structure 2021-01-19 09:10:23 +11:00
itsmattkc 3e1fb01758 initialize array variable and set where used 2021-01-19 09:09:12 +11:00
itsmattkc fa1fbd3a34 nodeview: updated with new node color UI system 2021-01-19 09:08:46 +11:00
itsmattkc 8e7035bd40 restored nodeview 2021-01-19 00:06:57 +11:00
itsmattkc 835b82205f ripple: when choosing gaps on other tracks, use after or at instead of before
Fixes some edge cases
2021-01-18 16:40:05 +11:00
itsmattkc cb1accaf0c minor code enhancements 2021-01-18 16:33:49 +11:00
itsmattkc 9bc0629346 rewrote timeline ripple tool command
Cleaner code and fixes a bunch of issues and whatnot
2021-01-18 16:33:27 +11:00
itsmattkc 84df19dc35 updated tracklist algorithm to new and improved one 2021-01-18 16:32:52 +11:00
itsmattkc 2a51853fd4 fix bug with underlining on timeline 2021-01-18 16:06:40 +11:00
itsmattkc 20ed087aad timeline: fixed bug with out handle on some blocks 2021-01-18 16:05:22 +11:00
itsmattkc 8497c6589c further merge hash optimizations 2021-01-18 12:04:03 +11:00
itsmattkc e7b0c18a99 implemented track adding as an undo command 2021-01-18 12:03:48 +11:00
itsmattkc d8efab1b77 improved new timeline drawing 2021-01-18 11:23:59 +11:00
itsmattkc 5ab585de8e razor tool: don't try to split a clip at it's end point 2021-01-18 11:17:12 +11:00
itsmattkc 07782a96ad some timeline fixes 2021-01-18 10:45:37 +11:00
itsmattkc 57aa53cc79 ensure blocks are transformed when hashing
Fixes cache glitch
2021-01-18 10:45:07 +11:00
itsmattkc 104cbbe44b set array size before reconnecting
Fixes issue where tracks would become confused about the true array size
2021-01-18 10:44:30 +11:00
itsmattkc 0936c7c580 added some documentation to audiovisualwaveform 2021-01-18 10:43:59 +11:00
itsmattkc b4dd976e90 revised UI color system when showing nodes
Olive now has a set of colors that categories can be "assigned" to. The timeline also shares the same colors as the NodeView. Colors can be configured per node (aka per clip).
2021-01-15 18:44:34 +11:00
itsmattkc 91740dd823 reworked all timeline commands
I'll be honest, this stuff probably caused a lot of crashes. Objects were constantly created and destroyed without the foresight that other commands might be using them. This should fix a lot of that.
2021-01-15 14:36:21 +11:00
itsmattkc 96c0921193 use std::map instead of QMap for the node connections
std::map gives us a reverse iterator which we need. QMap doesn't seem to.
2021-01-15 14:34:36 +11:00
itsmattkc b83677e319 moved input signals to graph to prevent signal desyncs 2021-01-14 10:32:42 +11:00
itsmattkc ad0cefecaf remove now commented out ifdef guard 2021-01-14 10:30:33 +11:00
itsmattkc f7883bd02c began some rewrites to timeline drawing 2021-01-14 10:30:20 +11:00
itsmattkc fbdda3d6d4 various code cleanups 2021-01-13 12:05:05 +11:00
itsmattkc 8f729203fc some timeline refactoring, preparing for rewrites 2021-01-09 11:41:33 +11:00
itsmattkc 3337be07e5 use QVector instead of QList for block cache 2021-01-09 10:41:13 +11:00
itsmattkc 441a459774 viewer: use label instead of media name 2021-01-09 10:38:04 +11:00
itsmattkc 181235f6ce began new infrastructure
Yep, this is another one of my "famous" sweeping rewrites. Expect things to break.

Goals for this are:
- Greatly simplify node connections (particularly with arrays) so the code requires less maintenance/is more stable
- Redesign node structure to address issues where UI would stall for lengthy periods of time
- Less reliance on shared ptrs/greater reliance on QObject system for inheritance/memory management
- General code cleanup and improvements
2021-01-05 11:20:38 +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 3024d68d59 fixed unused variable warning 2020-12-30 18:08:43 +11:00
itsmattkc 06b29b3a35 Merge branch 'master' of https://github.com/olive-editor/olive 2020-12-30 14:46:15 +11:00
itsmattkc 78903391a3 timeline: don't snap add tool if snapping is disabled 2020-12-30 10:38:53 +11:00
itsmattkc b604a7271d viewer: fix regression where multiple viewers could play at once 2020-12-30 10:38:34 +11:00
itsmattkc 374fa3f75c moved some files around for better organization 2020-12-16 19:05:22 +11:00
itsmattkc 7849d6f3ff corrections for non shared ptrs in OTIO code 2020-12-16 14:32:18 +11:00
itsmattkc 6cb6407bd8 don't use shared ptrs on streams 2020-12-16 13:46:19 +11:00
itsmattkc e12013e2fb don't use shared ptrs for project items 2020-12-16 10:28:43 +11:00
itsmattkc 1cd07bc1f7 improved footage relink
Interface improvements and uses more heuristics to relink files faster.
2020-12-13 14:27:47 +11:00
itsmattkc 0699795c6f export: implemented audio bit rate setting
The UI for this isn't perfect, I just wrote this in because I needed it. But the backend is solid.
2020-12-04 01:01:50 +11:00
itsmattkc 7dd9115e3f audiowaveformview: clamp start to 0 2020-11-30 12:07:22 +11:00
itsmattkc d2727f1932 minor tweak to fix compilation on linux 2020-11-30 09:32:08 +11:00
itsmattkc 2363f7057c resizabletimelinescrollbar: handle RATIONAL_MAX without overflow 2020-11-30 08:59:53 +11:00
itsmattkc d82f484c4c audiowaveformview: on validation, only update visible sections 2020-11-30 08:57:51 +11:00
itsmattkc b39565cff4 audiowaveformview: multithreaded waveform rendering 2020-11-30 08:18:11 +11:00
itsmattkc f48c8b552b export: calculate total length from individual frames rather than all frames 2020-11-30 07:22:48 +11:00
itsmattkc 9ee523b145 timeline: split gaps only if there's an insert
Fixes regression from 97afae9687
2020-11-29 17:06:56 +11:00
itsmattkc 6a6fa8674a actually stage the new files 2020-11-29 17:05:52 +11:00
itsmattkc c15b734011 timebasedwidget: show workarea and markers on scrollbar 2020-11-29 16:56:00 +11:00