Commit graph

132 commits

Author SHA1 Message Date
Paul Davis
9b405de03d add Canvas::Ruler::set_metric() to allow ruler metrics to be changed dynamically 2014-09-05 14:45:27 -04:00
Paul Davis
8c17bb0ca0 change Metric element of a Canvas::Ruler item into a pointer internally 2014-09-05 14:42:06 -04:00
GZharun
9b010ed417 [Summary] Fixed name width issue on MAC applying a workaround. It's a response on Pango bug which will be fixed by Paul Davis 2014-09-05 15:29:41 +03:00
nick_m
baf6a43ee7 Render waveview components onto alpha masks to simplify drawing.
Reduce user panic by removing ! from missing file dialog title.
Use justify left in missing file dialog.
2014-08-18 12:26:05 -04:00
Paul Davis
207e90adb1 Add Canvas::re_enter() which picks the current item again based on mouse pointer position and generates an enter event for it 2014-08-17 20:41:20 -04:00
Paul Davis
a647755bdc verbose cursor text is always outlined 2014-08-17 19:59:51 -04:00
Paul Davis
b4aba271f4 move contrasting_text_color() into ArdourCanvas 2014-08-17 19:59:38 -04:00
John Emmas
8c77efd3ff Change some declarations from 'struct' to 'class' (and vice-versa) 2014-08-17 19:56:56 -04:00
Paul Davis
92b29e1ea1 new API for TrackingText and similar items 2014-08-17 19:28:47 -04:00
Paul Davis
f9f0bfe6ed new TrackingText canvas item, to resolve conceptual issues with the Editor::VerboseCursor 2014-08-17 18:53:52 -04:00
Ben Loftis
d0f41a4f5e add scroll wheel handler to canvas 2014-08-17 18:10:15 -04:00
Paul Davis
87cc9f7d4f completely rethink waveform rendering (again)
There are 3 possible components to draw at each x-axis position: the waveform "line", the zero line and an outline/clip indicator.
We have to decide which of the 3 to draw at each position, pixel by pixel. This makes the rendering less efficient but it is
the only way I can see to do this correctly.
2014-08-17 18:07:24 -04:00
Paul Davis
28fdc71d70 more canvas refactoring.
Remove Canvas::Layout, use Canvas::Container for the same purpose, move child-rendering into Item::render_children() so that it
could theoretically be used by any derived type.
2014-08-17 17:44:17 -04:00
Paul Davis
72ab6f6fe5 add missing new files for canvas redesign 2014-08-17 17:44:12 -04:00
Paul Davis
98aa604aa0 refactor Canvas so that all Items have children; add Container abstract base class; rename Group as "Layout" and retain only drawing semantics 2014-08-17 17:42:59 -04:00
nick_m
36a93b0d18 Cache entries are now region colour aware. 2014-08-17 15:33:22 -04:00
Paul Davis
452cf1db35 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-08-17 15:08:56 -04:00
Paul Davis
3cec76834e remove drag handle canvas object - it was just a stupid unfinished experiment 2014-08-17 15:08:46 -04:00
Paul Davis
1a3596b071 derive ArdourCanvas::Ruler from Rectangle 2014-08-17 15:08:33 -04:00
Paul Davis
473bcc3fa6 many fixes and improvements for a now-working ArdourCanvas::Ruler item 2014-08-17 15:06:11 -04:00
Paul Davis
def1f12164 add Ruler to Canvas fwd.h 2014-08-17 15:05:59 -04:00
Paul Davis
76b9ad2294 add initial (untested) implementation of canvas ruler item 2014-08-17 15:05:48 -04:00
Paul Davis
592146822a fix Canvas::LineSet implementation to support horizontal and vertical linesets 2014-08-17 15:00:23 -04:00
Paul Davis
6f38ff5c3c remove global canvas scroll offset, to provide no-scroll-parent == no-scroll behaviour 2014-08-17 14:58:10 -04:00
Paul Davis
fc9447f2b5 add Item::canvas_origin() for convenience 2014-08-17 14:56:09 -04:00
nick_m
aebd5863f0 Use a dumb cache for waveview ImageSurfaces. This halves the size of the
previous one, but usually ends up using three of them at the current
CACHE_HIGH_WATER setting.
Should result in a smaller memory footprint for sessions with
multiple copies of nearby audio segments (electronic style).
The downside is the larger memory footprint for linear recording
sessions if CACHE_HIGH_WATER > 1 (1 giving a max of two
half - sized cache entries per audio stream).
2014-08-17 14:55:20 -04:00
Paul Davis
874ac355e7 clip rendering of ScrollGroup to just the part of the canvas covered by the scroll group.
This stops tracks from appearing to scroll up under the rulers, among other things.
2014-08-17 14:50:12 -04:00
Paul Davis
bbf037c4a3 fix problems with expose/redraws from canvas where requested area goes way outside the integer range allowed by GTK/GDK 2014-08-17 14:49:34 -04:00
Paul Davis
c926ca2b6b basic, initial structure for canvas widget item 2014-08-17 14:44:25 -04:00
Paul Davis
fdbb93ea3c merge onecanvas and cairocanvas branches, and manually resolve conflicts, including rounding in item_to_window() methods 2014-08-17 13:44:57 -04:00
Paul Davis
e8e3460665 more profound changes to canvas scrolling, in particular find appropriate ScrollGroup for Canvas::{window,canvas}_to_{canvas,window}()
Conflicts:
	gtk2_ardour/editor_mouse.cc
2014-08-17 13:43:52 -04:00
Paul Davis
f60e579653 use window-based coordinates when picking current item so that we get per-item (per-scroll-group,really) computation of position and coverage. 2014-08-17 13:39:15 -04:00
Paul Davis
bed0c78432 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-08-17 13:39:10 -04:00
Paul Davis
7bbd63dc39 clean up ArdourCanvas::Arrow implementation to remove unshown polygon/head 2014-08-17 13:39:02 -04:00
Paul Davis
d408fffe4e rationalize and centralize computation of positional offset and scroll offset for canvas items 2014-08-17 13:38:45 -04:00
Paul Davis
2b361eecec inline ScrollGroup::canvas_position() for no particular reason 2014-08-17 13:38:35 -04:00
Paul Davis
11e789df5b avoid recursing through the entire canvas when scrolling - only scroll explicitly identified ScrollGroups 2014-08-17 13:37:45 -04:00
Paul Davis
cb9453b475 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-08-17 13:37:27 -04:00
Paul Davis
87fa554ac9 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-08-17 13:37:16 -04:00
Paul Davis
6d3b9fe7e6 overwrite state of libs/canvas with code from corresponding period in ardour-cairocanvas
This makes continued merges with ardour codebase easier, at the
small cost of removing the XML-based constructors. They were not
in use anyway and their use doesn't really fit into the
conception of the canvas as a dynamic UI element. Could reintroduce
them at a later date.
2014-08-17 13:29:01 -04:00
John Emmas
c7dc741bed Rearrange some #includes to keep MSVC happy 2014-08-16 17:58:01 -04:00
Robin Gareus
81068a7932 smooth visual curve drawing 2014-08-16 17:57:42 -04:00
Robin Gareus
ec99a4f5c2 Canvas: new x-fade drawing, two curve widget
Conflicts:
	libs/canvas/wscript
2014-08-16 17:23:25 -04:00
Robin Gareus
9ec7b79ac9 Revert "cairo sub-surface prototype & example
This reverts commit c57fcde78c.
and also     commit f1f8f89fcb.
2014-08-16 17:21:08 -04:00
Robin Gareus
da7cdb9b26 cairo sub-surface prototype - intermediate flattened group renderer. 2014-08-16 17:20:51 -04:00
Robin Gareus
3d9b03017c implement Curve in/outside fill 2014-08-16 17:20:09 -04:00
Robin Gareus
264947595a directly apply waveform clip-level changes 2014-08-16 17:19:17 -04:00
Robin Gareus
4242022ee9 fix x-fade drawing
Catmull-Rom curve samples are not equally spaced on the x-axis.
Furthermore, Curve::map_value() is not needed, cairo line_to
already interpolates.
2014-08-16 17:16:18 -04:00
VKamyshniy
3833e3b627 Merge branch 'master' of git.waves.com:waves/tracks 2014-07-04 18:04:39 +03:00
Valeriy Kamyshniy
a1709c74c6 Adding XML scripting to ArdourCanvas
[git-p4: depot-paths = "//Abdaw/dev_main/tracks/": change = 452743]
2014-04-14 12:37:20 -05:00