summaryrefslogtreecommitdiff
path: root/libs/canvas/wave_view.cc
AgeCommit message (Collapse)Author
2015-04-29manually apply grygorii's waveform amplitude implementationPaul Davis
2015-04-17Amend ac1f7e0bnick_m
2015-04-17Indicate all clips on rectified view.nick_m
2015-04-17Improve waveview height and scaling.nick_m
The top line of the selection rect is arguably 1 px too low, but waveviews seem centered on the area properly.
2015-03-31fix OSX/PPC 10.4 long mathsRobin Gareus
2015-03-29For the canvas library, #include 'gtkmm2ext/gui_thread.h' rather than ↵John Emmas
'gtk2_ardour/gui_thread.h' Technically it doesn't make much difference but from what I can tell, the only files which #include 'gtk2_ardour/gui_thread.h' are the source files from gtk2_ardour itself. The support libraries always #include 'gtkmm2ext/gui_thread.h' directly (which seems sensible). So for consistency's sake, let's keep it the same for libcanvas.
2015-03-29Better fix for 6183.nick_m
Invalidate all source entries from the image cache when we get our region's DropReferences signal, while ignoring any subsequent regions with no source.
2015-03-24Fix 0006183 (waveview crash).nick_m
Should fix crash when audiosource disappears. Reworked from submitted patch from tlat.
2015-03-22Revert mistaken change in e7b0e67bc8e1b546b587ffd803b81ad5e67c171anick_m
2015-03-22Provide an image if there are no peaks.nick_m
2015-03-10Manual merge of the drawing component of waveview branch.nick_m
In summary: * no antialiasing of waveviews * no diagonal lines * simplify clip detection * don't use LINE_CAP_ROUND for outline * use the wave colour when drawing outline only
2015-02-20The commit 3da9c3b7403dd57984e1f0d090c7bd902f933225nick_m
wasn't the no-op it claimed to be.
2015-02-11remove naive attempt to avoid drawing first vertical pixel line of ↵Paul Davis
Canvas::WaveView And add commented out attempt at more subtle attempt to get it right
2015-02-10add a sort-of hack to allow us to avoid drawing the first pixel of a ↵Paul Davis
waveview when necessary
2015-01-21apply Theme > “Show waveform clipping”Robin Gareus
fixes http://tracker.ardour.org/view.php?id=5589#c15515
2014-11-26massive reworking of color selection implementationPaul Davis
2014-11-25Remove dead code.David Robillard
2014-11-07use new canvas colors header as necessaryPaul Davis
2014-11-03use ArdourCanvas::TimeRectangle for regions, notes, markersPaul Davis
2014-09-13NOOP, remove trailing whitespaceRobin Gareus
2014-09-13waveform drawing details:Robin Gareus
* proper y-pixel alignment (+.5px offset) * outline: draw dots (not 1px lines) * shape: round towards peak (use signal, not top/bot) * honor 2px red selection border * work-around canvas rect +1 issue * always draw clipping line towards center * draw at most one clip-line at either side of 0. * exact 1px wide zero line * fix spread calculation for rectified view
2014-09-12waveform: really draw 1px lines.Robin Gareus
2014-09-12update waveform drawing for zoomed-in, non-overlapping min/max peaksRobin Gareus
2014-07-15Render waveview components onto alpha masks to simplify drawing.nick_m
Reduce user panic by removing ! from missing file dialog title. Use justify left in missing file dialog.
2014-07-03actually do something in WaveView::region_resized() which is called whenever ↵Paul Davis
the region is resized; implement WaveView::set_region_start() which could be used by an xfade editor etc.
2014-06-23return of the zero linePaul Davis
2014-06-23revert drawing of rectified waves back to previous approach since it (might ↵Paul Davis
be) slightly more efficient and is simpler to understand; add comments
2014-06-23completely rethink waveform rendering (again)Paul Davis
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-23fix logic error that meant one side of the waveform outline is not drawn; ↵Paul Davis
draw zero line before outline, for better effects with low amplitude waves
2014-06-21refactor Canvas so that all Items have children; add Container abstract base ↵Paul Davis
class; rename Group as "Layout" and retain only drawing semantics
2014-06-18Cache entries are now region colour aware.nick_m
2014-06-12change Canvas heirarchy and constructorsPaul Davis
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-08fix borked logic controlling whether/when to draw clip/outline pixels/lines ↵Paul Davis
in waveviews
2014-06-09Use global clip level from prefs. Restore clip colour, \nick_m
2014-06-08Use a dumb cache for waveview ImageSurfaces. This halves the size of thenick_m
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-03different approach to independent scrolling, involving ArdourCanvas::ScrollGroupPaul Davis
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-05-31don't allow waveform to bleed into TimeAxisViewItem frame borderRobin Gareus
2014-05-27directly apply waveform clip-level changesRobin Gareus
2014-05-26"We brake for nobody." oh wait. - fixes Rectified Waveform view.Robin Gareus
2014-05-07first pass at tightening up waveform drawing algorithm to generally round ↵Paul Davis
down when dealing with fractional pixels
2014-01-26remove unused _wave_color member from waveview canvas item; use outline ↵Paul Davis
color for edge dots of waveforms instead of hardcoding black
2014-01-10make no-zero-line be the default for wave views (still shown for normal ↵Paul Davis
audio region views
2014-01-07shrink waveview zero line to single pixelPaul Davis
2013-12-30define signal associated with configurable clipping level to Canvas::WaveViewPaul Davis
2013-12-30add configurable clipping level to Canvas::WaveViewPaul Davis
2013-11-04drop use of bounding box to determine whether an item covers a point; add ↵Paul Davis
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-06-28changes to waveform clipping displayPaul Davis
* 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-28make clip indicators more visible (the smaller of 7 pixels or 5% of track ↵Paul Davis
height)
2013-06-28restore display of clipping in waveform displaysPaul Davis
2013-06-27cleanup ArdourCanvas::WaveViewPaul Davis
Mostly this just involved removing the private CacheEntry class that really served no further purpose once the design reverted to a single cached image