Robin Gareus
98249a2563
update waveform drawing for zoomed-in, non-overlapping min/max peaks
2014-09-12 16:42:55 +02:00
nick_m
d3408844be
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-07-15 21:59:22 +10:00
Paul Davis
53a5f5d8ca
actually do something in WaveView::region_resized() which is called whenever the region is resized; implement WaveView::set_region_start() which could be used by an xfade editor etc.
2014-07-03 10:00:12 -04:00
Paul Davis
199ac89d40
return of the zero line
2014-06-23 15:24:08 -04:00
Paul Davis
a743e68a0c
revert drawing of rectified waves back to previous approach since it (might be) slightly more efficient and is simpler to understand; add comments
2014-06-23 15:12:30 -04:00
Paul Davis
437099fff9
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-06-23 14:57:55 -04:00
Paul Davis
71c417948e
fix logic error that meant one side of the waveform outline is not drawn; draw zero line before outline, for better effects with low amplitude waves
2014-06-23 10:06:59 -04:00
Paul Davis
a8bd6ecc4f
refactor Canvas so that all Items have children; add Container abstract base class; rename Group as "Layout" and retain only drawing semantics
2014-06-21 11:43:42 -04:00
nick_m
b31608f64e
Cache entries are now region colour aware.
2014-06-18 00:16:51 +10:00
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
b86e1204ec
fix borked logic controlling whether/when to draw clip/outline pixels/lines in waveviews
2014-06-08 13:13:44 -04:00
nick_m
e495577f98
Use global clip level from prefs. Restore clip colour, \
2014-06-09 02:50:14 +10:00
nick_m
7a05dde39d
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-06-08 01:47:38 +10: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
Robin Gareus
2342b7d611
don't allow waveform to bleed into TimeAxisViewItem frame border
2014-05-31 14:06:10 +02:00
Robin Gareus
432611113d
directly apply waveform clip-level changes
2014-05-27 16:37:01 +02:00
Robin Gareus
bf4819ab0e
"We brake for nobody." oh wait. - fixes Rectified Waveform view.
2014-05-26 22:45:42 +02:00
Paul Davis
e99c8960c0
first pass at tightening up waveform drawing algorithm to generally round down when dealing with fractional pixels
2014-05-07 10:35:50 -04:00
Paul Davis
bb05ae05a8
remove unused _wave_color member from waveview canvas item; use outline color for edge dots of waveforms instead of hardcoding black
2014-01-26 16:02:38 -05:00
Paul Davis
02e6d14e23
make no-zero-line be the default for wave views (still shown for normal audio region views
2014-01-10 12:08:58 -05:00
Paul Davis
8fa54cd1d9
shrink waveview zero line to single pixel
2014-01-07 22:51:18 -05:00
Paul Davis
110c790d91
define signal associated with configurable clipping level to Canvas::WaveView
2013-12-30 15:54:09 -05:00
Paul Davis
7158eb7565
add configurable clipping level to Canvas::WaveView
2013-12-30 15:46:44 -05:00
Paul Davis
6473cc7cb4
drop use of bounding box to determine whether an item covers a point; add Item::covers(Duple const&)
...
Default implementation for Item still uses bounding box, but specializations for Arc (Circle), Polygon, Line and PolyLine have been added
2013-11-04 11:56:10 -05:00
Paul Davis
af3056769c
changes to waveform clipping display
...
* clip level is now -0.9dbFS
* display of clipping is optional (see Theme Manager window)
* clipping is based on disk data, unscaled by region gain
2013-06-28 20:21:30 -04:00
Paul Davis
aa480b8338
make clip indicators more visible (the smaller of 7 pixels or 5% of track height)
2013-06-28 17:09:39 -04:00
Paul Davis
5b3ebe824e
restore display of clipping in waveform displays
2013-06-28 13:40:51 -04:00
Paul Davis
c6fe6b0996
cleanup ArdourCanvas::WaveView
...
Mostly this just involved removing the private CacheEntry class that really served no further purpose once
the design reverted to a single cached image
2013-06-27 17:23:34 -04:00
Paul Davis
a1f858d3b2
an awful lot of tweaks to drawing details
2013-06-24 16:28:53 -04:00
Paul Davis
11becd4a6b
properly restore newer (cairo-canvas related) UI config parameters
2013-06-21 17:15:56 -04:00
Paul Davis
1c74a3ab2d
waveform drawing improvements
...
* handle logscaled and rectified
* put dark tips in right places
* improve color selection algorithm
2013-06-21 13:17:37 -04:00
Paul Davis
68779e0c0a
(working) start of an experiment with pyramix-style waveform drawing
2013-06-20 23:12:19 -04:00
Paul Davis
27c943f1dd
new image cache design for waveviews, with various fixes.
...
Rather than maintain a set of images in a cache, when we no longer have the required waveform data, create a new image that is appropriately centered and extends to roughly twice the screen width (or the limits of the region's source file(s), as necessary)
2013-06-20 14:37:31 -04:00
Paul Davis
3604bf12a2
get wave drawing improved, but commit before i tear it all up and go back to a single cached image per waveview
2013-06-19 20:23:22 -04:00
Paul Davis
f9d30cf41a
inching pretty close to fully working waves now
2013-06-19 14:44:08 -04:00
Paul Davis
79384aeb66
initial semi-working attempt at getting waveview cache to work correctly
2013-06-18 23:03:20 -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
f9a46e78d6
fix incorrect 3rd arg to AudioRegion::read_peaks() - was passing end, not cnt. Fixes waveforms at high zoom
2013-04-26 11:10:19 -04:00
Paul Davis
fd7ac62ca5
don't invalidate image cache for every regionr esize, only region start changes
2013-04-25 09:48:38 -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
0c170b0897
no create cached waveview images that span from render-start to cache-start, but always clamp the end to render-end, to avoid creating over-sized images
2013-04-19 10:53:52 -04:00
Robin Gareus
b7aeb147f2
display waveform polarity correctly
...
* cairo's Y axis points downward -> invert phase display
* fix logarithmic view for value.max < 0
2013-04-18 10:25:35 +02:00
Paul Davis
ec102f94e1
various work waveview amplitude mgmt; fix playhead cursor drag from timebar click
2013-04-17 15:22:09 -04:00
Paul Davis
381d4debf4
make waveform gradient depth continuously variable. color probably needs adjusting as do color stops to get a pleasing effect at most settings
2013-04-16 21:23:50 -04:00
Paul Davis
c1df3295c1
virtual Fill:: and Outline:: methods so that Canvas::Items that cache image renderings of themselves can invalidate those caches when colors etc. change; add Item::{begin,end}_visual_change() so that we can notify the canvas more efficiently when *only* visual properties have changed and not the bounding box (probably needs to be used more widely)
2013-04-16 20:38:10 -04:00
Paul Davis
81eed21dde
some rationalization of how global WaveView properties and per-WaveView properties interact
2013-04-16 18:02:12 -04:00
Paul Davis
a74743f551
somewhat restore ability to see rectified waveforms
2013-04-16 16:14:57 -04:00
Paul Davis
33e09447e9
restore log-scaled waveform functionality
2013-04-16 15:38:18 -04:00
Paul Davis
ccc9b6adee
change rendering technique for waveforms, add back optional gradient, add back amplitude scaling, add rgb/hsv conversion utilities to canvas
2013-04-16 14:04:59 -04:00