summaryrefslogtreecommitdiff
path: root/libs/canvas/canvas/wave_view.h
AgeCommit message (Collapse)Author
2016-09-13Add missing header include guards in canvas libraryTim Mayberry
2015-10-05NOOP, remove trailing tabs/whitespace.Robin Gareus
2015-10-04globally remove all trailing whitespace from ardour code base.Paul Davis
Paul Davis was responsible for introducing almost all of this.
2015-09-02waveform, mutex for _current_imageRobin Gareus
may be used in render-thread while invalidate_image_cache() is called. possible fix for #6478
2015-08-20clear waveform cache when shape changes - fixes #6525Robin Gareus
2015-06-23several changes, major and minor, to improve threaded waveview renderingPaul Davis
2015-06-23create sortable, linear list for cache clearing on demand, rather than ↵Paul Davis
trying to maintain it in parallel with the cache map
2015-06-23change location for initialization of static WaveView image cache, and ↵Paul Davis
provide a visible method to set the cache flush threshold
2015-06-19stop pixel jitter when changing waveview height.Paul Davis
To avoid pixel jitter, the top and bottom of each line in the waveview must be computed together in a single computation, rather than independently. Also, remove various height corrections and cairo translations that are not necessary or relevant anymore. A subsequent commit for the GUI will pick up on this work to get the appearance completely correct
2015-06-19attempt to correctly respond to changes in _amplitude_above_axis in ↵Paul Davis
ArdourCanvas::WaveView
2015-06-19fix compiler const-cast warningPaul Davis
2015-06-11more refactoring of WaveView threaded code to try to get to heart of crash bugPaul Davis
2015-06-11don't queue a callback with the idle event for waveview image generation if ↵Paul Davis
one is already queued. Also, hold relevant lock when waking image rendering thread.
2015-06-04use existing partial existing waveview images (if they exist) while waiting ↵Paul Davis
for the full ones
2015-06-01drop in threaded waveview changes via the two affected files.Paul Davis
Rebasing the feature branch against master was too messy, and only these two files were changed. The development history of this branch could easily have been --squash'ed anyway, so not much of a loss
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-22Provide an image if there are no peaks.nick_m
2015-02-10add a sort-of hack to allow us to avoid drawing the first pixel of a ↵Paul Davis
waveview when necessary
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-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-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-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-27directly apply waveform clip-level changesRobin Gareus
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
2013-12-30add configurable clipping level to Canvas::WaveViewPaul Davis
2013-12-27add visibility/export control to libcanvasPaul 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-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
2013-06-20new image cache design for waveviews, with various fixes.Paul Davis
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-18initial semi-working attempt at getting waveview cache to work correctlyPaul Davis
2013-04-24many pervasive changes primarily related to waveform drawing, particular ↵Paul Davis
content-dragging, colors, and more
2013-04-17various work waveview amplitude mgmt; fix playhead cursor drag from timebar ↵Paul Davis
click
2013-04-16make waveform gradient depth continuously variable. color probably needs ↵Paul Davis
adjusting as do color stops to get a pleasing effect at most settings
2013-04-16virtual Fill:: and Outline:: methods so that Canvas::Items that cache image ↵Paul Davis
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-16some rationalization of how global WaveView properties and per-WaveView ↵Paul Davis
properties interact
2013-04-16change rendering technique for waveforms, add back optional gradient, add ↵Paul Davis
back amplitude scaling, add rgb/hsv conversion utilities to canvas
2013-04-16add back various functionality to waveviews such as zero line, amplitude scalingPaul Davis
2013-04-15remove all XML related API from canvas. it may have been useful during ↵Paul Davis
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-12switch from frames_per_pixel to samples_per_pixel in the one canvas object ↵Paul Davis
that uses this
2013-04-10remove intermediate GdkPixbuf from waveview rendering, and use ↵Paul Davis
shared_array<> to manage peak data
2013-04-04commit immediately post linkingPaul Davis
2013-04-04initial commit of hand merging, plus getting "ancient" waf script to work ↵Paul Davis
correctly