Commit Graph
438 Commits
Author SHA1 Message Date
itsmattkc dc37389d02 timeline: implemented in/out points 2020-03-08 01:06:45 +11:00
itsmattkc 52fc4f064b timeline: rewrote ripple deleting into an undoable command that takes place
after the gaps are made and cleaned

Results in more reliable ripple delete behavior.

Also fixes bug that would cause gaps that were cleaned and then restored in an
undo to crash when selected.
2020-03-07 20:42:07 +11:00
itsmattkc 8ec3258234 nodeview: added asserts for improved debugging 2020-03-07 20:40:52 +11:00
itsmattkc 38a30b584a timeline: implemented some base ripple delete functionality 2020-03-07 18:07:55 +11:00
itsmattkc d5fdc555e1 timelineviewblockitem: prevent waveforms from exceeding the clip rectangle 2020-03-07 02:47:15 +11:00
itsmattkc f2d6d3b32c timeline/renderer: automatically update timeline view when a visual waveform
has updated
2020-03-07 02:44:15 +11: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 c75a0e8498 timeline/renderer: implemented basic waveform display support 2020-03-06 16:18:07 +11:00
itsmattkc a41c0e65ac re-implemented resizable scrollbar (still somewhat crude) 2020-03-05 00:34:39 +11:00
itsmattkc 8daac83b19 footageviewer: allow dragging footage from footage viewer 2020-03-03 20:35:54 +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 c1680ad420 menushared: added menu/panel proxy for ripple deletion 2020-03-03 20:07:14 +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 a9577d72ee pointertool: reused insert code from importtool 2020-03-03 16:34:09 +11:00
itsmattkc e3759bb704 importtool: re-implemented functionality to hold ctrl to insert dragged clips 2020-03-03 15:51:53 +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 d8f83f1452 nodeview: further optimization of node view 2020-03-03 01:50:31 +11:00
itsmattkc 796a30eda9 timelinewidget: when rubberbanding, only emit selection changed when
the rubberband is finished
2020-03-02 17:03:36 +11:00
itsmattkc 3e34975dd9 nodeview: improved and optimized some selection code 2020-03-02 17:03:03 +11:00
itsmattkc f6d602d8e0 nodeview: improved code structures 2020-03-02 16:07:24 +11:00
itsmattkc 566a0729c1 timeruler: ignore cache signals if cache status isn't enabled
Minor optimization.
2020-02-28 15:49:26 +11:00
itsmattkc fde5e47901 projectexplorer:use if defined() and elif defined() for improved
compiler compatibility
2020-02-27 17:47:11 +11:00
itsmattkc 02ce48d0c6 various: pixel optimizations
Several things are accomplished in this commit, including:

- Use OIIO instead of our own functions for pixel format conversions
  (cleaner code/less for us to maintain)

- Fold all PixelService functions into the PixelFormat class
  (cleaner code)

- Moved OpenGL pixel definitions to OpenGL classes and out of the
  global classes.

- Add support for RGB buffers as well as RGBA (optimization)
2020-02-27 13:54:38 +11:00
itsmattkc 0624184b18 projectexplorer: re-implemented reveal in explorer function 2020-02-27 11:30:26 +11:00
itsmattkc d7cde3b22e timelinewidget: clear block items before destruction
Prevents block items signalling anything after the TimelineWidget has already
been destroyed.
2020-02-26 14:36:51 +11:00
itsmattkc e578ee6264 nodeviewedge: fixed float conversion warning 2020-02-26 01:59:46 +11:00
itsmattkc 7e7ff49777 nodeviewedge: use bezier curves instead of straight lines 2020-02-26 01:07:53 +11:00
itsmattkc 785160b86b nodeview: fixed crash when expanding a NodeViewItem with a NodeInputArray 2020-02-26 00:47:01 +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 ab19e445bd importtool: implemented auto-parameter detection from image streams too 2020-02-25 14:59:54 +11:00
itsmattkc fceb1e8d3e viewer: re-render both video and audio if parameters change 2020-02-24 11:57:39 +11:00
itsmattkc 3a90e76fec viewerglwidget: don't check for file exists since OIIO will do that for us 2020-02-23 13:48:02 +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 1c033e53d4 timeruler: fixed issue that caused dirty cache status to not appear sometimes 2020-02-22 20:08:28 +11:00
itsmattkc 0e7b051228 timelinewidget: show cache status in timeline too 2020-02-22 14:45:50 +11:00
itsmattkc 9cb04b0020 timelineview: simplified TrackRippleRemoveAreaCommand and fixed bug that
incorrectly calculated the splice copy's media in
2020-02-22 01:14:38 +11:00
itsmattkc c7a3906c97 timelineview: fixed bug that wouldn't invalidate all necessary regions of the
cache when using rippleremovearea
2020-02-22 00:49:57 +11:00
itsmattkc 65db108be2 openglcolorprocessor: renamed CreateOpenGL() to Create()
We hide ColorProcessor::Create() to create a derived class rather than the
base class and clear up confusion over the two functions existing.
2020-02-22 00:34:55 +11:00
itsmattkc 77c0c9d95a viewer: ported to openglcolorprocessor for simpler code and fixed bug that
snuck in breaking color managed display
2020-02-22 00:13:28 +11:00
itsmattkc 5602b6a88b importtool: add "don't ask again" option on "no active sequence" dialog
In the previous commit, we added a dialog to give users options when dropping
footage on a sequence-less timeline panel. However some users will have a
preferred behavior that they'd want every time without having to go through
the messagebox, so we add a "don't ask again" option that stores the setting
in the application config.
2020-02-21 18:07:54 +11:00
itsmattkc 8f86fdd16e importtool: add user option for creating a sequence on drop
If there was anything that 0.1.x taught me, it was that a substantial number of
users did not understand that a new sequence was being made by dropping footage
onto an empty timeline and wouldn't know what to do if they wanted parameters
that differed from the footage they dragged in. This dialog makes the operation
clear and gives users an option to set the parameters on drop for convenience.
2020-02-21 17:48:24 +11:00
itsmattkc bac33e3d16 importtool: create a sequence automatically from dropped footage if one isn't
open already
2020-02-21 17:28:17 +11:00
itsmattkc 78556c1511 audiomonitor: use QTimer::singleShot rather than connecting timeout() to stop()
Minor code improvement.
2020-02-21 14:22:53 +11:00
itsmattkc 3cffffdcee viewer: use vsync for updates rather than a timer
Improves viewer appearance and performance. Rather than using a timer roughly
set to the sequence's frame rate to update the viewer, the viewer synchronizes
itself to the display's refresh rate resulting in much smoother playback.
2020-02-21 00:42:46 +11:00
itsmattkc 94f1d997ad slider: don't use prefix and suffix in text entry
UX improvement, ensures the text entry doesn't include anything that the slider
can't resolve back into a value.
2020-02-21 00:11:54 +11:00
itsmattkc 9faa303368 viewerglwidget: fixed destroy function used with OIIO 1.x 2020-02-20 19:41:52 +11:00
itsmattkc b231720398 viewer: prevent shuttle left/right from ever pausing
If the speed ever goes from 1 or -1 to 0, it'll in/decrease the speed one more
so it doesn't pause.
2020-02-20 19:12:14 +11:00
itsmattkc 1e2f0220a2 viewerglwidget: use OIIO::ImageInput rather than OIIO::ImageBuf
Gives us better control over the file I/O (using ImageBuf would fail to
release file handles sometimes).
2020-02-20 16:39:30 +11:00