Commit graph

95 commits

Author SHA1 Message Date
Paul Davis
424f6539b4 change location for initialization of static WaveView image cache, and provide a visible method to set the cache flush threshold 2015-06-23 08:17:48 -04:00
Paul Davis
239052759f stop endless loop in WaveViewCache::cache_flush()
Still need to figure out how this could ever happen. It requires an image (shared pointer) to
be in the linear cache image list but not in the map
2015-06-22 22:00:45 -04:00
Paul Davis
10203b5517 two more corrections to waveform zooming changes 2015-06-19 08:32:05 -04:00
Paul Davis
3cf8cb3c3e fix call to consolidate image cache to use the information held in the request 2015-06-19 08:29:05 -04:00
Paul Davis
8491a015e3 stop pixel jitter when changing waveview height.
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-19 08:14:02 -04:00
Paul Davis
1043357cc9 attempt to correctly respond to changes in _amplitude_above_axis in ArdourCanvas::WaveView 2015-06-19 08:10:45 -04:00
John Emmas
a1932c7feb Correctly re-start an iteration (if we delete one of the items being iterated) 2015-06-19 12:55:38 +01:00
Paul Davis
10643779b6 more refactoring of WaveView threaded code to try to get to heart of crash bug 2015-06-11 17:04:08 -04:00
Paul Davis
077e625734 don't queue a callback with the idle event for waveview image generation if one is already queued.
Also, hold relevant lock when waking image rendering thread.
2015-06-11 13:35:01 -04:00
Paul Davis
753d1ac392 possible fix for crashes related to vanishing waveviews (and if it doesn't fix anything, it is still more correct than it was) 2015-06-10 22:26:58 -04:00
Paul Davis
ac2b0a327c fix basic error with computation of partial image width; add use of DEBUG_TRACE (DEBUG::WaveView,...) 2015-06-10 18:48:12 -04:00
Paul Davis
bc945bb3d3 use existing partial existing waveview images (if they exist) while waiting for the full ones 2015-06-04 17:46:53 -04:00
Paul Davis
25797d8618 don't use the return value from AudioRegion::read_peaks() because it is either zero or n_peaks 2015-06-02 12:17:50 -04:00
John Emmas
9706125526 Amend WaveView::send_request() such that it'll compile with MSVC
Hopefully, this was the original intention (I've simply amended a function call to match similar usages elsewhere in the code).
2015-06-02 11:17:31 +01:00
Paul Davis
95c991ba35 reinstate absent image.
Then go back to bed and be ill some more.
2015-06-01 21:08:56 -04:00
Paul Davis
0288454387 remove debug output and get logic correct to cause first render to always use the render thread 2015-06-01 14:55:17 -04:00
Paul Davis
d17e35772d drop in threaded waveview changes via the two affected files.
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-06-01 14:45:41 -04:00
Robin Gareus
89f5e22896 fix double precision abs value computation 2015-04-29 19:56:35 +02:00
Paul Davis
5ab699f898 manually apply grygorii's waveform amplitude implementation 2015-04-29 07:54:21 -04:00
nick_m
dff83c77cf Amend ac1f7e0b 2015-04-17 05:36:13 +10:00
nick_m
ac1f7e0b9f Indicate all clips on rectified view. 2015-04-17 05:26:57 +10:00
nick_m
7f41de7427 Improve waveview height and scaling.
The top line of the selection rect is arguably 1 px too low, but
waveviews seem centered on the area properly.
2015-04-17 05:03:51 +10:00
Robin Gareus
47110c983c fix OSX/PPC 10.4 long maths 2015-03-31 16:05:15 +02:00
John Emmas
2e27b55179 For the canvas library, #include 'gtkmm2ext/gui_thread.h' rather than '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-29 09:53:02 +01:00
nick_m
8962bfba61 Better fix for 6183.
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-29 02:13:40 +11:00
nick_m
eff25b06f5 Fix 0006183 (waveview crash).
Should fix crash when audiosource disappears.
Reworked from submitted patch from tlat.
2015-03-24 23:35:43 +11:00
nick_m
bc20da35f7 Revert mistaken change in e7b0e67bc8 2015-03-22 05:35:13 +11:00
nick_m
69a6c4d747 Provide an image if there are no peaks. 2015-03-22 00:31:32 +11:00
nick_m
e7b0e67bc8 Manual merge of the drawing component of waveview branch.
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-03-10 23:35:53 +11:00
nick_m
5d5f83c56b The commit 3da9c3b740
wasn't the no-op it claimed to be.
2015-02-20 23:30:48 +11:00
Paul Davis
0f0aebf26b remove naive attempt to avoid drawing first vertical pixel line of Canvas::WaveView
And add commented out attempt at more subtle attempt to get it right
2015-02-11 21:59:38 -05:00
Paul Davis
34779ee81e add a sort-of hack to allow us to avoid drawing the first pixel of a waveview when necessary 2015-02-10 19:48:47 -05:00
Robin Gareus
f282884094 apply Theme > “Show waveform clipping”
fixes http://tracker.ardour.org/view.php?id=5589#c15515
2015-01-21 19:35:04 +01:00
Paul Davis
318a9edab9 massive reworking of color selection implementation 2014-11-26 18:22:22 +02:00
David Robillard
ea5876b836 Remove dead code. 2014-11-25 02:11:44 -05:00
Paul Davis
4260d0ca0e use new canvas colors header as necessary 2014-11-07 14:24:27 -05:00
Paul Davis
f1e6b28ab7 use ArdourCanvas::TimeRectangle for regions, notes, markers 2014-11-03 21:48:08 -05:00
Robin Gareus
3da9c3b740 NOOP, remove trailing whitespace 2014-09-13 01:48:10 +02:00
Robin Gareus
aa83f1a8c7 waveform drawing details:
* 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-13 01:48:10 +02:00
Robin Gareus
878797d13e waveform: really draw 1px lines. 2014-09-12 16:43:20 +02:00
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