Paul Davis
590882f3c8
change Canvas heirarchy and constructors
...
Items no longer need a parent group (they require a Canvas pointer instead), so all constructors have been rationalized
and have two variants, one with a parent and one with a canvas.
All Items now inherit from Fill and Outline, to banish diagonal inheritance and virtual base classes and all that.
There were zero changes to the Ardour GUI arising from these changes.
2014-06-12 14:53:44 -04:00
Paul Davis
073df89c4d
use window-based coordinates when picking current item so that we get per-item (per-scroll-group,really) computation of position and coverage.
2014-06-03 16:12:00 -04:00
Paul Davis
54a56cd3c6
various changes to get independent scrolling to work better in canvas. mostly tweaks relating to how scroll offsets are used during rendering.
...
Event handling offsets still require work.
2014-06-03 16:12:00 -04:00
Paul Davis
6019f06bdf
different approach to independent scrolling, involving ArdourCanvas::ScrollGroup
...
The idea now is that a scroll group item can be added to the canvas which will causes its children to scroll in either or both
directions (horizontal or vertical). There are few complications: the position() of the ScrollGroup is ambiguous depending
on whether you want it with scroll taken into account or not, so Item::canvas_position() was added, which defaults to
the same value as Item::position() but is overridden by ScrollGroup to return the position independent of scrolling. This
method is used when translating between item/canvas/window coordinate systems.
Note that the basic idea is that we MOVE the scroll group when a scroll happens. This mirrors what happens in the GnomeCanvas,
where Nick Mainsbridge came up with a great idea that allowed unification of the time bar and track canvases.
2014-06-03 16:10:27 -04:00
Paul Davis
97109672c7
initial redesign of canvas scrolling to facilitate independent x- and y-axis scrolling of specific groups within the canvas.
...
This commit should cause no change in behaviour, but contains all the code and changes necessary
for the next step
2014-06-03 16:09:06 -04:00
Paul Davis
e247103a7e
fix up major thinko's in ArdourCanvas::Group's handling of deletion (both its own, and child items)
2014-02-12 15:15:27 -05:00
Paul Davis
6876906d9d
fix major thinko in ArdourCanvas::Group::clear()
2014-02-11 22:49:39 -05:00
Paul Davis
6d4c0baad3
fix up thinko in recent raise_to_top/lower_to_bottom optimization
2014-01-10 11:54:05 -05:00
Paul Davis
70c4a5e2d6
slightly expand CanvasRender debug output
2014-01-10 11:02:34 -05:00
Paul Davis
7b24be86a2
make raise_to_top() and lower_to_bottom() no-ops if item is already in the right place
2014-01-02 16:49:42 -05:00
Paul Davis
88732abd01
change event propagation to be based on parent/child lineage, not z-axis stacking, plus some more alterations to try to get enter/leave working
2013-12-12 10:03:33 -05:00
Paul Davis
08b485db75
send enter events to EVERY newly entered item (ignore the bool return from the event handler); other canvas debugging aids;switch items_at_point() to use canvas coordinates
2013-11-03 10:07:00 -05:00
Paul Davis
b46244d527
finally (?) fix up logic for rectangle drawing (fill+stroke) to tackle what is hopefully the last of the expose problems
2013-10-31 11:49:36 -04:00
Paul Davis
7bbd28aa08
notable changes to try to improve most of enter/leave handling for canvas items
2013-10-30 23:36:30 -04:00
Paul Davis
f6d33d2a87
fix comment
2013-10-28 16:35:48 -04:00
Paul Davis
f25ff95390
tweak whitespace and add coordinate space comment
2013-10-28 12:26:40 -04:00
Paul Davis
c3f1369cfd
expand bounding box of all objects by 0.5 before computing intersection for render cycle; alter debug output
2013-10-24 17:14:12 -04:00
Paul Davis
5ea6b4420b
slightly more information in group render DEBUG_TRACE output
2013-10-23 10:39:26 -04:00
Paul Davis
18850253e9
only generate some current canvas debug output when CANVAS_DEBUG is defined, to quieten things down
2013-09-25 10:38:04 -04:00
Paul Davis
691be68ac2
fix rect redraw problems caused by intersection requiring the usual 0.5 expansion (though consider a more general fix for this at teh group level)
2013-06-18 13:46:24 -04:00
Paul Davis
77f5f4c4bf
basically operational switch to canvas drawing coordinates, although text and waves don't work, and redraw areas are too small
2013-06-18 08:23:06 -04:00
Paul Davis
737433c446
tweaks to improve enter/leave event handling - fixes at least some crashes caused by this stuff
2013-04-24 18:31:00 -04:00
Paul Davis
6f664c1f67
many pervasive changes primarily related to waveform drawing, particular content-dragging, colors, and more
2013-04-24 15:42:14 -04:00
Paul Davis
eb23bd8102
add Group::clear(), do not clear _canvas member of Item when unparented (only the parent is changed)
2013-04-21 15:35:20 -04:00
Paul Davis
b02a7445bf
Revert "add Group::clear(), do not clear _canvas member of Item when unparented (only the parent is changed)"
...
This reverts commit a4df65a56f83823aba27432685977f420458a213.
2013-04-21 15:35:20 -04:00
Paul Davis
fca81c9a6a
add Group::clear(), do not clear _canvas member of Item when unparented (only the parent is changed)
2013-04-21 15:35:20 -04:00
Paul Davis
37dd7e952b
add headers to all canvas .cc and .h files
2013-04-15 22:10:18 -04:00
Paul Davis
64d3763652
remove all xml++.h inclusion by canvas implementations
2013-04-15 22:00:13 -04:00
Paul Davis
84fb0a8dce
remove all XML related API from canvas. it may have been useful during development, but it is just a distraction - we will NEVER be saving or restoring canvas state via XML or any kind of serialized state
2013-04-15 21:57:08 -04:00
Paul Davis
af4539f857
a few changes to fix region dragging, all related to coordinate system handling, which is now much simpler with the new canvas; more debugging output when asked for
2013-04-15 10:38:12 -04:00
Paul Davis
ee1f0520a8
many changes to get the cairo-canvas version much, much more functional. still problems with a lot of subtle and not-so-subtle issues
2013-04-11 20:19:22 -04:00
Paul Davis
204da61f98
remove incorrect merge of cairocanvas patch that stopped most tracks from displaying; add more debugging info
2013-04-10 14:42:36 -04:00
Paul Davis
053eaf77fd
a variety of fixes for the cairocanvas, but it still buggy as hell handling events and lots of other stuff
2013-04-09 14:22:58 -04:00
Paul Davis
07a505b1b2
lots of tweaking and adding debug output including operator<</dump(ostream&) methods to help visualize canvas structure
2013-04-05 11:27:26 -04:00
Paul Davis
19bd641915
commit immediately post linking
2013-04-04 18:45:27 -04:00
Paul Davis
aaea166135
initial commit of hand merging, plus getting "ancient" waf script to work correctly
2013-04-04 00:32:52 -04:00