da3ea7e236
canvas: rename variable for clarity
2021-08-13 12:51:37 -06:00
6f883650d8
canvas: use combined outline enum value for clarity
2021-08-13 12:51:37 -06:00
71fe17a241
canvas: impl of Rectangle::dump()
2021-08-13 12:51:37 -06:00
b2aa14a90b
canvas; remove already-commented debug output
2021-08-13 12:51:37 -06:00
341a355de4
canvas: remove debug output
2021-08-13 12:51:37 -06:00
a55a004142
canvas: another fix to bounding box computation, this time for Item itself
2021-08-13 12:51:37 -06:00
b8b392f729
canvas: use whoami() instead of whatami() in some debugging output
2021-08-13 12:51:37 -06:00
a36d43c845
canvas: NOOP whitespace/indent a line
2021-08-13 12:51:37 -06:00
16bbf79cae
canvas: decl for Rectangle::dump()
2021-08-13 12:51:37 -06:00
dc48f55285
canvas: bounding box changes for Container
2021-08-13 12:51:37 -06:00
9095057675
canvas: call Item::bounding_box() to recompute bounding box when needed
...
Since 74fe396cc5 compute_bounding_box() by itself does not do the entire computation, so we
must call into Item::bounding_box() to get the result with children added also
2021-08-13 12:51:37 -06:00
c0425ba70f
canvas: items should not add child bboxes in their ::compute_bounding_box() method, Item::bounding_box() does that
2021-08-13 12:51:37 -06:00
ad6afbe68a
canvas: use Item::bb_clean() to mark _bounding_box_dirty false
2021-08-13 12:51:36 -06:00
5b123441f4
canvas; change operator<<() for Rect to show BIG instead of gigantic 64 bit numbers
2021-08-13 12:51:36 -06:00
ddcd004350
canvas: only reset _bounding_box_dirty in the parent if the child's bbox did change
2021-08-13 12:51:36 -06:00
c1fa1e1a29
canvas: when an item's position is set, its bounding box has changed
2021-08-13 12:51:36 -06:00
f5753dcd07
missing member initialization
2021-08-13 12:51:36 -06:00
7066db16bd
remove dangling method from rebase issues
2021-08-13 12:51:36 -06:00
14621f3634
add missing Box::set_homogenous() method
2021-08-13 12:51:36 -06:00
5153124664
change (GUI) Marker objects to accept any Canvas::Item as parent, and use this to draw BBT position markers in the BBT ruler
2021-08-13 12:51:34 -06:00
749a49c278
incorporating new tempo map API
2021-08-13 12:51:29 -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
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
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
9869b0266b
add support for rounded corners to Canvas::Rectangle
2021-08-13 12:51:26 -06:00
4f671a0950
make ArdourCanvas::Rectangle render its children
...
it is common to want to pack things inside a rectangle, so make it work
2021-08-13 12:51:26 -06:00
8fb67e15ea
steps in the evolution of beatbox
2021-08-13 12:51:26 -06:00
91de7ba60b
do not double-translate Canvas::Rectangle by _position; item_to_window() already includes it by calling item_to_canvas()
2021-08-13 12:51:26 -06:00
aca1db2d06
add step_button to wscript
2021-08-13 12:51:26 -06:00
e35e5ff3e5
step button for Canvas (used by BeatBox GUI)
2021-08-13 12:51:26 -06:00
ff6fe51d76
Canvas: improve implementation/design of ConstraintPacker::preferred_size()
2021-08-13 12:51:26 -06:00
502a9e80dc
Canvas: add a nice new syntax for constraint packing
2021-08-13 12:51:26 -06:00
d6745f043c
Canvas: clean up Constraint expressions to avoid compiler warnings
2021-08-13 12:51:26 -06:00
aa62460081
Canvas: re-use Solver as much as possible, with possible (but not substantive) speedup; remove debug output
2021-08-13 12:51:26 -06:00
815eb82882
Canvas: partially improve/fix cBox rendering
2021-08-13 12:51:26 -06:00
2598bdef2c
Canvas: mark constraint-layout containers as layout-sensitive (like their children)
2021-08-13 12:51:26 -06:00
f5d67e6520
Canvas: temporary easy way to get debug output from Canvas::render() in a test program
2021-08-13 12:51:26 -06:00
427998e2d2
Canvas: cleanup first constraint test
2021-08-13 12:51:26 -06:00
be481ec266
Canvas: fix fill/outline area for a cBox
2021-08-13 12:51:26 -06:00
0823a6328b
Canvas: third constraint test
2021-08-13 12:51:26 -06:00
a349d7e49b
remove debug output
2021-08-13 12:51:26 -06:00
94b44ceb52
Canvas: add second constraint tester
2021-08-13 12:51:26 -06:00
0d5725a63b
Canvas; fix rectangle rendering geometry
2021-08-13 12:51:26 -06:00
04d00da461
Canvas: fix text rendering geometry
2021-08-13 12:51:26 -06:00
7153544b52
Canvas: many changes to cBox implementation
2021-08-13 12:51:26 -06:00
d37202585f
Canvas: root group should not fill or outline itself
2021-08-13 12:51:26 -06:00
2e993c6f86
Canvas: tweak test script runner
2021-08-13 12:51:26 -06:00
61742ededf
Canvas: change behavior of Item::preferred_size() for items without an intrinsic size
2021-08-13 12:51:26 -06:00
ea96798ee9
Canvas: tweak debug output for canvas rendering
2021-08-13 12:51:26 -06:00
0434f00a47
remove debug output
2021-08-13 12:51:26 -06:00
711c1520b5
Revert "towards a very different constraint layout tester"
...
This reverts commit 7f65ffe57685304f59bb336c9701c3a9d5cdc1a7.
2021-08-13 12:51:26 -06:00
11931f5ffb
towards a very different constraint layout tester
2021-08-13 12:51:26 -06:00
f0a0104087
Canvas: add shell scrip to run cnnstraint_test
2021-08-13 12:51:26 -06:00
504d8fdab3
Canvas: size request using preferred_size() callstack
2021-08-13 12:51:26 -06:00
5650d4f5bb
Canvas: container supports option to do fill & outline
2021-08-13 12:51:26 -06:00
55deb1261a
Canvas: use whomami() not earlier debug_name() API
2021-08-13 12:51:26 -06:00
811a893583
Canvas: some tidying in layout test app
2021-08-13 12:51:26 -06:00
240cb7b98f
Canvas: make Rectangle work with layouts
2021-08-13 12:51:26 -06:00
e0c58a2736
Canvas: add aliases to Canvas::Rect for comprehension
2021-08-13 12:51:26 -06:00
2423994029
Canvas: add aliases to Canvas::Rect for comprehension
2021-08-13 12:51:26 -06:00
f47deb717c
Canvas: add layout-related methods and members to Item
2021-08-13 12:51:25 -06:00
6d89d3afef
Canvas: add Item::whoami() for debugging output
2021-08-13 12:51:25 -06:00
f17160ee0e
Canvas: modify Arc to work with layout
2021-08-13 12:51:25 -06:00
ad39faeb3e
Canvas: alter RootGroup to work with layout
2021-08-13 12:51:25 -06:00
baea368223
Canvas: initiate size allocation process from GTK-level size allocate event
2021-08-13 12:51:25 -06:00
84afcb62c4
Canvas: child_changed() API fix for Box
2021-08-13 12:51:25 -06:00
fc9840f2a9
Canvas: change API of Item::child_changed() to include bool indicate bounding_box change
2021-08-13 12:51:25 -06:00
d6fa458f3b
Canvas: Text item should take position into account when rendering
2021-08-13 12:51:25 -06:00
1baa8d68c7
Canvas: reindent Kiwi code, and provide operator<<(ostream&) for several objects
2021-08-13 12:51:25 -06:00
ba3515e619
NOOP: remove whitespace
2021-08-13 12:51:25 -06:00
b1a6982064
Canvas::Arc obey fill/outline conditionals
2021-08-13 12:51:25 -06:00
a3039d3895
add/update constraint packing containers, test code
2021-08-13 12:51:25 -06:00
606866ea00
add small dev/test utility for working on constraint packer
2021-08-13 12:51:25 -06:00
1c3e743d2a
Canvas: continued work on constraint packer
2021-08-13 12:51:25 -06:00
01137cbbf3
Canvas: change container-related methods in Item to be virtual
2021-08-13 12:51:25 -06:00
b90332b439
Canvas: change LineSet::add() to ::add_line()
...
Preparation for virtualization of Item::add()
2021-08-13 12:51:25 -06:00
539e1a1f1b
stub constraint-based packer for canvas
2021-08-13 12:51:25 -06:00
5957e14259
Remove unused #include<> (2/2)
...
PBD::stacktrace() is not used nor needed by default.
It should be used sparingly.
2021-05-05 17:57:16 +02:00
d04713c0ab
Add missing class to canvas forward declarations
2021-02-14 00:54:17 +01:00
20029ec7e6
canvas/ruler: provide option for a second font to be used for "major" marks
2021-01-03 16:50:18 -07:00
8a14a7a00b
Fix tracking-text offset
...
If position along a given axis is not tracked, then the
offset was applied repeatedly to the current position.
This caused the coordinate to run away.
2020-12-30 03:26:00 +01:00
d741f01ad0
NO-OP: whitespace
2020-12-30 03:25:57 +01:00
ce8846d13f
Fix polygon redrawing -- #8148
...
Polygons used PolyLine::render() to render the path.
However since 7bb8ca1e76
, the PolyLine path is constrained
(for automation lanes), and closed shaped polygons were not
always completely redrawn.
2020-07-09 02:10:28 +02:00
247bd4d3d9
NO-OP: whitespace
2020-04-10 18:32:18 +02:00
ede0fd3ddf
Remove hardcoded 2^15 cairo-boundary, prefer window-area
2020-04-10 18:28:26 +02:00
2177462b73
NO-OP: consistent function and variable naming
2020-04-10 18:06:42 +02:00
bc4de874dc
NO-OP: whitespace
2020-04-10 18:06:42 +02:00
9bbedcb781
Remove unused function
...
Cairo::curve_to renders cubic Bézier splines, those are not
generally useful in a DAW context.
Canvas::Curve implements centripetal catmull-rom spline drawing
which can be used for fades and automation interpolation.
2020-04-10 18:06:42 +02:00
7bb8ca1e76
Interpolate poly-line with view-point #6481
2020-04-10 18:06:41 +02:00
6cc1e5e75d
NO-OP: whitespace
2020-04-10 18:06:39 +02:00
f744b5fc12
change velocity bar inside notes to extend to edges of note
...
Having the velocity bar inset from note causes distracting space at beginning of note
when viewing a MIDI note that is zoomed out
2020-03-26 10:12:54 -06:00
4151ec1907
remove accumulated debug output
2020-03-25 15:12:30 -06:00
dbcf7dd666
more playhead-drag/click locate debugging
2020-03-25 13:50:23 -06:00
André Nusser
0a1ed004f2
Remove unused forward declaration.
2020-02-24 23:01:15 +01:00
06b2eb1c27
Explicitly use OSX
...
Previously this was inherited via PBD.
On MacOS/X, this adds
"-undefined dynamic_lookup -flat_namespace"
and various "-framework .." options to linkflags
Without this flag, .dylibs fail to link usually because
of missing `-lintl` (Undefined symbols: "_libintl_dgettext")
On other systems this is a NO-OP:
CFLAGS_OSX, CXXFLAGS_OSX and LINKFLAGS_OSX
are only set on the darwin platform.
2020-01-25 04:07:41 +01:00
bca825e515
NO-OP: whitespace
2020-01-14 00:52:24 +01:00
John Emmas
45dd6a8ed3
Add a missing semicolon
2020-01-05 10:29:35 +00:00
0b266a54f0
Return of image-surface backed canvas (windows graphics performance)
...
This partially reverts 2edbda2526
.
Using cairo-groups increases performance on MacOS, and retains
retina-resolution.
However it adds a performance regression for MS Windows graphics
rendering. cairo-groups use a "similar" surface, not an image surface.
Empirically this adds significant overhead compared to rendering
using the CPU and using bitblt.
2020-01-04 00:30:07 +01:00
2edbda2526
Replace explicit image-surface with cairo pattern/group
...
For MacOS/X this is equivalent, rendering happens using a
CGBitmapContext + image-surface. Windows and Linux needs profiling
for respective equivalent surfaces.
2019-12-27 19:35:02 +01:00
c3ab63a2ea
Allow for per-widget image-surface backing
...
This is an intermediate commit, before replacing image surfaces with
cairo pattern groups.
The eventual goal is to reduce flickering and/or use
CPU + bitblt for specific widgets instead of cairo
graphics-cards accel.
This also removes excessive calls to getenv() for every rendering
operation.
2019-12-27 19:34:56 +01:00
ecc2597870
Fix remaining doxygen warnings (!)
2019-09-30 21:03:29 +02:00
bfec73b8c3
NO-OP: whitespace, indent
2019-09-30 21:03:20 +02:00
5ec5bc4523
goodbye USE_TRACKS_CODE_FEATURES and is_tracks_build
2019-09-25 12:16:13 -06:00
cec5ce8f45
Update canvas/UI lib GPL boilerplate and (C) from git log
2019-08-03 15:53:17 +02:00
46f0b75e12
Undo more incorrect sample/frame replacements
2019-04-08 04:10:04 +02:00
c83ba53399
Remove ancient, unmaintained xcode project files
2019-02-28 18:12:44 +01:00
Andreas Müller
d2aa57af3b
Prevent excessive meter redraws for inactive meters at zero II
...
Same as be826f3635
Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
2018-10-17 22:35:29 +02:00
8ed33f1bc7
remove use of hardcoded -fPIC compiler flag, and use compiler flag dict instead
2018-10-14 22:06:11 -04:00
cf652331ad
Adapt our remaining MSVC projects for 'boost::atomic' (in case it later gets extended to the other libs)
...
Stage 3 of 3
2018-09-30 09:19:28 +01:00
79f01bc889
Initial changes needed for building Mixbus (with MSVC) as version 5
...
(Mixbus itself will probably need extra changes)
2018-09-10 07:14:59 +01:00
8664768efa
make velocity bars thinner (from alex mitchell)
2018-07-08 07:12:12 -04:00
ab6525a24f
Accommodate newly introduced source(s) in our MSVC project (cairocanvas)
2018-07-05 08:22:44 +01:00
bf2f4bd28a
method for setting whether or not to show velocity bars
2018-07-03 15:39:08 -04:00
c190581552
fix rectangle computation, and re-use alex' color computation
2018-07-03 12:39:56 -04:00
21582828b7
add a guess at appropriate color management for note velocity display
...
I think that HSV::opposite() is probably too strong here. HSV::darker() might be better. Experimentation needed.
2018-07-03 11:43:42 -04:00
644a05f60b
use new Canvas::Note object for (sustained) note display
2018-07-03 11:21:53 -04:00
ed24e01658
initial implementation of a more specialized canvas item for (sustained) notes
2018-07-03 11:21:25 -04:00
5102d8fae1
minor code optimization for Rectangle::render()
2018-07-03 09:22:32 -04:00
b9c9777b9a
When building with MSVC, allow for the fact that Mixbus and Ardour can be using different versions of the SESSION_FILE format
2018-02-15 09:03:32 +00:00
6f019faaa0
Accommodate the change from libtimecode to libtemporal
2018-02-14 10:02:11 +00:00
30b087ab3d
globally change all use of "frame" to refer to audio into "sample".
...
Generated by tools/f2s. Some hand-editing will be required in a few places to fix up comments related to timecode
and video in order to keep the legible
2017-09-18 12:39:17 -04:00
36046cccc1
add basic data members and methods for adding an explicit size allocation for Canvas::Item
2017-09-18 11:40:52 -04:00
951404475c
MSVC changes needed to implement the new 'waveview' library
2017-07-19 08:20:18 +01:00
9a0a2a29b5
Fix NSGLView invalidation
2017-07-18 21:34:03 +02:00
beb73edf55
Purify libcanvas, remove libardour dependency
...
A canvas is just a canvas. Move WaveView into its own library.
2017-07-17 21:06:04 +02:00
601c317d70
Clean up library inheritance (colors.h, utils.h)
...
make libwidget independent of libcanvas.
Confine basics to pbd and gtkmm2ext.
2017-07-17 21:06:04 +02:00
33d30fdf57
Accommodate newly introduced source(s) in our MSVC project (cairocanvas)
2017-06-29 10:10:26 +01:00
d3510b5606
fix OSX builds (llmath compat)
2017-06-28 03:03:05 +02:00
a1cd4f8dfe
Fix friend declaration in WaveView code for non-c++11 builds
2017-06-26 17:04:18 +10:00
6e91ee071c
Reimplementation of large parts of the WaveView class
...
The drawing itself should be unchanged but much of the rest of the
implementation has changed. The WaveViewThreads and WaveViewDrawingThread
classes were added and allow multiple drawing threads.
The Item::prepare_for_render interface is implemented by WaveView to enable
queuing draw requests for the drawing threads to process as soon as the state
change occurs during Editor::visual_changer, which often means the images will
be finished by the time they are needed in WaveView::render. This can
significantly reduce total render time and also flickering caused by images not
being ready for display.
If the drawing thread/s cannot finish the request by the time it is required in
WaveView::render then cancel it and draw the WaveViewImage in the GUI thread if
it is likely it can be completed in the current render pass/frame. This change
also helps reduce the flickering caused by images not being ready with threaded
rendering, but with several drawing threads, drawing in the GUI thread may not
often occur (unless explicitly requested).
Allow unfinished images to be returned from the cache in
WaveView::prepare_for_render so that new draw requests aren't queued for
duplicate images. This reduces the amount of drawing for instance in
compositions where there are many instances of the same sample/waveform
displayed on the canvas as only a single image should be drawn.
Use a random width within a certain range for
WaveView::optimal_image_width_samples so that image drawing is less likely to
occur at the same time (which will cause a spike in render/draw time and
increase the chance of flickering waveforms).
Move implementations of the private WaveView classes into wave_view_private.h
and wave_view_private.cc source files.
Incorporate a fix for limiting the waveview image size to the cairo image size
limit.
Should hopefully Resolve : #6478
2017-06-26 08:40:47 +10:00
4ddf97f5a2
Add Canvas::get_microseconds_since_render_start() method
...
Initial use is for the WaveView class to determine whether on not to draw the
waveform in the GUI thread.
2017-06-26 08:40:47 +10:00