13
0
Commit Graph

17567 Commits

Author SHA1 Message Date
a80960468d first pass at integrating nutempo v1 with new 64 bit superclock/ticks representation
This compiles libtemporal, but nothing more
2021-08-13 12:51:28 -06:00
e0b5b12129 basic work on a Tempo object that avoids (almost) all floating point arithmetic
Basic conversions between superclock and Beats are provided
2021-08-13 12:51:28 -06:00
c043156089 new header with an efficient implementation of integer division-rounding-to-nearest 2021-08-13 12:51:28 -06:00
4dc048b28a update Temporal::Beats to merge master/nutempo versions, notably with private from-double constructor
This is the libraries-only edition. It still features liberal use of Beats::from_double() but this is now
explicit and will be easier to locate the calls and remove them. Several classes that were using
Beats::to_double() have been (temporarily) made friends of Beats to allow them to keep using it,
pending the much more widespread redesigns of several structures. Once this is done, the friend
relationships can (mostly) be removed. It is expected the ARDOUR::Variant will need to continue
as a friend because it is used to pass beat counts to LV2 as doubles
2021-08-13 12:51:28 -06:00
ecf2028c7a Revert "NO-OP: code formatting and cleanup, thanks clang-format"
Widespread minor changes cause conflicts when rebasing nutempo2; will
reapply formatting later.

This reverts commit 548db7a9a4.
2021-08-13 12:51:28 -06:00
068cace22c fix semantics of Playlist::find_prev_region_start() 2021-08-13 12:51:28 -06:00
7e3b22e519 add Playlist::find_prev_region_start() 2021-08-13 12:51:27 -06:00
ac1d5bac0a improve rippling of marks to include any in the gap between the primary-dragged region and the one before it 2021-08-13 12:51:27 -06:00
3ab65dc62d keep session range correct when rippling markers 2021-08-13 12:51:27 -06:00
78a9e29507 fix deadlock and direction error in Locations::ripple() 2021-08-13 12:51:27 -06:00
46fa558bc6 finalize removal of splicing code from ARDOUR::Playlist 2021-08-13 12:51:27 -06:00
43c713d0ef we removed Splice mode from the GUI 7 years ago; now remove all code related to Splice mode 2021-08-13 12:51:27 -06:00
a2b3e31e10 libardour: remove ripple callback API, and fix deadlock issues with ripple/ripple_locked/ripple_unlocked/remove_gaps 2021-08-13 12:51:27 -06:00
2f11a49103 Add "Ripple All" edit mode to libardour 2021-08-13 12:51:27 -06:00
815abed5c5 alter API for playlist ripple callback, to provide required information 2021-08-13 12:51:27 -06:00
447e80a247 add a callback argument to Playlist::ripple() so that the caller can arrange for a response after a single ripple
Also add Playlist::rdiff_and_add_command() to consolidate what is required to save
playlist state in an (undo/redo) Command
2021-08-13 12:51:27 -06:00
82bad0725a libcanvas: reapply LineSet::add_line -> add_coord change after rebase conflicts with master 2021-08-13 12:51:27 -06:00
54de7c70ee Canvas: print item colors in hex when debugging 2021-08-13 12:51:27 -06:00
86a31e34ba Canvas: fix recursive calling of Item::size_allocate()
ConstraintPacker is the one Item-derivative that should NOT call Item::size_allocate_children()
because it just did the size computation for its children and called their
::constrained() method, which in turns calls size_allocate() with the correct size
2021-08-13 12:51:27 -06:00
dbe37d2752 Canvas: make possible even more debugging of constraint packing 2021-08-13 12:51:27 -06:00
f118b3ab53 Canvas: remove dangling cairo path in Arc or ConstraintPacker if fill was requested but not outline 2021-08-13 12:51:27 -06:00
1d96bad59f Canvas: remove cBox (API fully merged into ConstraintPacker) 2021-08-13 12:51:27 -06:00
1b66890547 Canvas: continuing move of cBox functionality into ConstraintPacker 2021-08-13 12:51:27 -06:00
4e82279ce4 Canvas: next step of merging cBox and ConstraintPacker 2021-08-13 12:51:27 -06:00
af60c50990 first steps in merging cBox into constraint packer 2021-08-13 12:51:27 -06:00
860d43697c Canvas: propagate ::size_allocate() down the item tree
This previously wasn't done because of fear that it would affect the traditional fixed-sized canvas,
but only items that _layout_sensitive (i.e. are packed into a constraint packer directly) will
actually do anything in ::size_allocate().

Possibly might want to relax this to cover items that have a constraint packer between them
and a root group.
2021-08-13 12:51:27 -06:00
28f85747ca Canvas: fix behavior of Rectangle when used in a constraint packer
::size_allocate() sets the _position *and* the "self" rect appropriately
2021-08-13 12:51:27 -06:00
3c2bd05750 Canvas: remove debug output 2021-08-13 12:51:27 -06:00
fa2885d2d6 Canvas: do not fill containers by default (added during constraint packing work; badly affects the regular canvas) 2021-08-13 12:51:27 -06:00
9909917976 Canvas: remove unnecessary and conflicting enum 2021-08-13 12:51:27 -06:00
2e4d228f54 manual fixes for constraint-packer -> newbbgui merge 2021-08-13 12:51:27 -06:00
2b39c5e0f0 fix header file rename that happened since this branch was last worked on 2021-08-13 12:51:27 -06:00
1dcf797311 probably fix compilation with newer Boost::Rational library 2021-08-13 12:51:27 -06:00
5c886ecb6e export step sequencer pattern to SMF 2021-08-13 12:51:27 -06:00
617fcd660c add operator% and operator%= to Temporal::Beats (taken from nutempo) 2021-08-13 12:51:27 -06:00
93d2f6f433 remove debug output 2021-08-13 12:51:27 -06:00
b18aaf0c7c Rectangle border/sizing behaves like CSS border-box 2021-08-13 12:51:27 -06:00
27919fec61 items should not round their bounding box when requesting a redraw 2021-08-13 12:51:27 -06:00
9c071cd6ef Canvas::queue_draw_item_area() now expands the passed-in rect appropriately
This means that a request to (re)draw the Rect (0.5,0.5,9.5,9.5)
will actually generate an expose event for (0,0,10,10)

Note: the above rects are of the form (x0,y0,x1,y1)
2021-08-13 12:51:27 -06:00
35a9bcc409 add Rectangle::size_request() which returns actual rectangle size, not bounding box 2021-08-13 12:51:26 -06:00
a9c2e2f7e5 expose step sequencer's step's index 2021-08-13 12:51:26 -06:00
60f3985957 replace push2 call to Canvas::Box::pack_start() with Canvas::Box::add() which is equivalent
::pack_start() was removed
2021-08-13 12:51:26 -06:00
210702481b add required virtual method to Push2Canvas 2021-08-13 12:51:26 -06:00
12b4807bc9 add a very (very) basic resize/layout design to the canvas
Items call ::queue_resize(), which sets a flag in the canvas; at next idle, we call
Canvas::layout() which walks the item tree and recursively calls layout (depth first)
on all items needing a resize.

Only Container types implement layout, and so far only Box
2021-08-13 12:51:26 -06:00
03e32a22d0 make Item::add() virtual 2021-08-13 12:51:26 -06:00
2ae616bf44 fix incorrect location of step sequencer request object "deletion" (really: pool return) 2021-08-13 12:51:26 -06:00
1edcc3d279 remove debug output 2021-08-13 12:51:26 -06:00
c9e4d3f045 alter note off handling in step sequencer to be global to the whole sequencer 2021-08-13 12:51:26 -06:00
eb139acab6 change API to adjust note timing 2021-08-13 12:51:26 -06:00
aceec18510 adjust StepSequence API(s) to meet needs 2021-08-13 12:51:26 -06:00