13
0
Commit Graph

646 Commits

Author SHA1 Message Date
8538ba35fe Only call Gtk::Widget::queue_draw_area in canvas when item and visible area intersect
Refactor GtkCanvas::request_redraw to use Rect::intersection
2017-06-26 08:40:47 +10:00
c4e31fc322 Add an optional ArdourCanvas::Item::prepare_for_render interface
Called when an item has requested a redraw and intersects with visible
canvas area.

Also add Canvas::prepare_for_render that will call Item::prepare_for_render for
items visible on the canvas.
2017-06-26 08:40:47 +10:00
dac25b8db9 Add PreRender signal to the canvas
Emitted by the canvas immediately before rendering.
2017-06-26 08:40:47 +10:00
9618b6dcbb Whitespace fixes in canvas.h 2017-06-26 08:40:47 +10:00
90f169881f Remove unused ArdourCanvas::HSV constructor
Using stringstream for this is not locale independant. If this constructor is
needed at a later stage it should be reimplemented.
2017-06-22 10:48:38 +10:00
1170bd9043 Remove LocaleGuards from SVAModifier and HSV classes
float <=> string conversion now done using PBD::to_string/string_to so
LocaleGuards are no longer needed.
2017-06-22 10:48:38 +10:00
0e4ddcf506 Fix out-of-bounds waveform image rendering.
With large sample-rates and high-zoom-level the minimal request-size
or at least 1/10sed can exceed the max image size supported by cairo.
e.g. @192kSPS;  100ms = 19200 samples.
 * 1 sample/pixel, * 2 (left/right) = 38400px > 2^15px.
2017-05-14 20:37:58 +02:00
926a064744 Use PBD::to_string from pbd/string_convert.h in WaveView debug code 2017-04-19 09:37:01 +10:00
7085d7305d Use locale independent string conversion functions in SVAModifier class 2017-04-19 09:36:55 +10:00
aff92a019d Stop tooltip timeout when a canvas-widget or item is hidden. 2017-04-17 01:45:25 +02:00
5e9492b996 consolidate NSGLView 2017-03-21 15:53:29 +01:00
85b5741081 Allow to selectively use NSGLView Canvas
Various GdkEvents are not yet handled correctly, eg. unpacking a widget
from its container does not unmap it, nor are remaining widgets in the
contained re-positioned (size allocation does not change, nor does the
mapping). This affects eg. Mixbus Strips
2017-03-21 05:37:44 +01:00
d06de26a4f Towards a consistent render() API.
This fixes an -Woverloaded-virtual ambiguity introduced in b5e613d45

  void render (cairo_t*, cairo_rectagle*)
  void render (Cairo::RefPtr<Cairo::Context> const&, cairo_rectangle_t*)

ArdourCanvas prefers cairomm and CairoWidget itself uses Cairo::Context,
this improves overall API consistency.
2017-03-20 17:12:08 +01:00
60a0b8f645 Forward un/map events to NSGLView 2017-03-20 17:12:08 +01:00
b5e613d453 Move NSGlView into libgtkmm2ext
This allows to re-use the concept with CairoWidget
2017-03-20 04:35:05 +01:00
b726255007 Fix OSX canvas when used without openGL NSView 2017-03-20 03:37:37 +01:00
5fe355af92 Use NSGLView with patched gdk
Special case Ardour's Canvas NSView to forward gdk-events
which are otherwise special-cased to read AU-views..
2017-03-20 02:15:15 +01:00
c371fc5115 Prepare NSView/OpenGL Canvas (to speed up rendering on [mac]OS[X]
This avoids Coregraphics (cairo_quartz_surface..) competely.
The openGL texture bypasses CG's slow argb_image and CGSColorMask
methods.
2017-03-19 22:49:17 +01:00
7ab1becd43 Snow White and the Pharaoh (mac rendering)
Once upon a time there was a beautiful Apple tree in palace of
GtkAnkhAmun in Cairo...
2017-03-17 16:54:16 +01:00
86ac64d528 NO-OP: whitespace 2017-03-17 16:03:59 +01:00
34d6de83a0 Disable Retina/Appple pango text-width workaround
Fix right-alignment (tempo-markers) and oversized bounding-boxes.
_width_correction should be removed after testing on various systems.
2017-03-11 05:13:17 +01:00
f5d6c908ac canvas::grid - more tweaks and improvements 2017-02-01 21:58:20 +01:00
fa2c4c525b canvas::grid : compute all row/col extents 2017-02-01 21:58:20 +01:00
94443bab7e basics of row/col span for Canvas::Grid 2017-02-01 21:58:20 +01:00
2c9b0796a3 change Grid API to avoid unnecessary Duple and open door for row/col span 2017-02-01 21:58:20 +01:00
91908dde7e clear up some CSS padding/margin confusion, and add row/col spacing 2017-02-01 21:58:20 +01:00
14cb9ec795 canvas::grid starts being able to do its job a little 2017-02-01 21:58:20 +01:00
e616324683 add basic data members and methods for adding an explicit size allocation for Canvas::Item 2017-02-01 21:58:20 +01:00
52718b3411 some initial bits of work on canvas allocation 2017-02-01 21:58:20 +01:00
484c3316d6 yet another case of misplaced parentheses during the removal of boost::optional from Canvas 2017-01-25 16:56:31 +01:00
49422aa89a another case of misplaced parentheses during the removal of boost::optional from Canvas 2017-01-25 16:54:29 +01:00
cce1c58198 This wasn't supposed to be pushed to master.
Revert "add basic data members and methods for adding an explicit size allocation for Canvas::Item"

This reverts commit d1c1d8df61.
2017-01-24 23:17:38 +01:00
d1c1d8df61 add basic data members and methods for adding an explicit size allocation for Canvas::Item 2017-01-24 22:45:22 +01:00
4fa4b9a135 remove use of boost::optional to define "undefined" Canvas::Rect, and use Rect::empty instead.
This commit includes Rect::operator bool() which might be a candidate for removal in a future commit, in an attempt
to make the meaning clearer
2017-01-19 20:54:54 +01:00
b4cf8cfc49 fix up Canvas::Grid child layout 2017-01-19 00:24:54 +01:00
73acd5b413 correct translation matrix for Canvas::Widget 2017-01-19 00:24:54 +01:00
c91c028c37 do not add items twice to their canvas parent! 2017-01-19 00:24:54 +01:00
88b3aa926a Accommodate newly introduced source(s) in our MSVC project (cairocanvas) 2017-01-16 15:21:47 +00:00
09a8ec534f canvas::grid: get padding and margin to work; remove some debug output 2017-01-15 21:40:42 +00:00
7c17327f56 get grid layout working 2017-01-15 12:13:03 +00:00
04e346a3d8 tweak Grid repositioning code to be a little more O(N) 2017-01-15 12:13:03 +00:00
99b86f0f05 basic (and probably wrong) Canvas::Grid child placement 2017-01-15 12:13:03 +00:00
0d1a083a5d include Canvas::Grid in build script 2017-01-15 12:13:03 +00:00
9ed87f6693 initial skeleton for a Grid canvas item 2017-01-15 12:13:03 +00:00
nick_m
3129370bc5 add ArdourCanvas::Flag::width() 2016-12-29 04:16:09 +11:00
004431426d Towards packing CairoWidgets on ArdourCanvas. 2016-12-19 13:36:42 +01:00
218d376154 vertically center text in time rulers 2016-12-19 13:27:22 +01:00
6bbb2c72f0 NO-OP: whitespace 2016-12-19 13:27:22 +01:00
nick_m
d118a60090 fix unused Outside filled framed curve for constant points outside the draw area. 2016-12-16 02:54:10 +11:00
nick_m
49c6d13386 revert c3ab67dd now that this misbehaviour is understood. 2016-12-16 02:52:39 +11:00
nick_m
d3ad6dc001 fix issue with disappearing tempo curve at constant tempi. 2016-12-16 02:50:07 +11:00
nick_m
9afe719827 amend incomplete change in previous commit. 2016-12-16 02:01:50 +11:00
nick_m
a99331a4e9 more work on patch change redisplay.
- fixes just-introduced undo crash.
2016-12-16 01:58:58 +11:00
nick_m
c3ab67ddb6 go back to always interpolating framed curve points. 2016-12-11 23:54:03 +11:00
f1f47664ff fix compilation with newer version of *mm and gcc-6.2 (RefPtr<> cast) 2016-11-30 16:00:05 +01:00
24c799cde3 prefer bool operator 2016-11-30 12:15:35 +01:00
5ed764178a Fix crash with empty patch-names.
An empty text will not produce a bounding box.
2016-10-29 19:57:43 +02:00
nick_m
92920307ae Tempo curve cleanup, now also works on optimized builds. 2016-10-17 01:28:33 +11:00
1552547f65 stop using gkd_pango_context_get() in ArdourCanvas::Canvas and require concrete instances to supply a Pango::Context; do this for GtkCanvas and Push2Canvas 2016-10-13 17:18:54 -04:00
1fe19ead70 Accommodate newly introduced source(s) in our MSVC project (cairocanvas) 2016-09-30 08:20:14 +01:00
c8ae41d598 fix errors reported by pixman for meter redraws (and add more comments to help the coordinate challenged 2016-09-28 13:37:19 -05:00
81f2ed452b provide ArdourCanvas::Text::{width,height}() 2016-09-27 14:59:32 -05:00
df5bb70616 optimize canvas meter redrawing (as in the non-canvas version) 2016-09-27 14:59:32 -05:00
1c94f6490e bug fixes for vertically-drawn Canvas::Meter 2016-09-27 14:59:32 -05:00
fccd0da9c6 bug fixes for Canvas::Box 2016-09-27 14:59:32 -05:00
29b8072555 add canvas-based Meter object 2016-09-27 14:59:32 -05:00
85c1523611 add new Box container for Canvas.
API subject to change and improvement
2016-09-27 14:59:32 -05:00
ba82e673fd add variant of Rect::expand() that allows different amounts in each direction 2016-09-27 14:59:32 -05:00
5d43d2e43f don't do as much work if a Rectangle has no outline width or outline what values 2016-09-27 14:59:32 -05:00
f66f7ba136 make inclusion/exclusion of hidden children optional in Item::add_child_bounding_boxes 2016-09-27 14:59:32 -05:00
5672419fff add Item::add_front() 2016-09-27 14:59:32 -05:00
095bdb7d40 make Item::child_changed() virtual 2016-09-27 14:59:32 -05:00
0613f8e3bd put change_alpha() into ArdourCanvas namespace as intended 2016-09-27 14:59:31 -05:00
216ce7bcb8 a slew of unconnected mostly minor tweaks to get Push2 support back to where it was...
... prior to using the canvas for the video screen
2016-09-27 14:59:31 -05:00
d4a64299c5 Add missing header include guards in canvas library 2016-09-13 14:32:22 +10:00
0ff233d234 Update our MSVC project files to generate the most recent Ardour session file format (ver 5) rather than the older v3 format 2016-08-30 07:15:00 +01:00
eec294a97e the endless quest to plug memory leaks -- episode 378 2016-07-25 17:16:32 +02:00
062712c691 Remove 'i18n.h' from some VC projects where it's no longer needed 2016-07-18 09:41:46 +01:00
cf52d6e4b4 enough with umpteen "i18n.h" files. Consolidate on pbd/i18n.h 2016-07-14 14:45:23 -04:00
205fbb99ad canvas HSV color serialization needs LocaleGuard 2016-07-14 11:46:02 -04:00
a66ad18402 initialize some uninitialized variables 2016-07-13 04:31:34 +02:00
17b162c5da add fill-area feature to poly-line 2016-07-05 00:39:39 +02:00
nick_m
360f87b217 Fix FramedCurve Outside fill for curve. 2016-06-04 07:03:18 +10:00
nick_m
1eb8216408 More FramedCurve render work
- draw last point correctly if applicable

	- comment intent.
2016-06-04 06:40:59 +10:00
nick_m
62be6b2ed8 Fix framed curve thinko.
- in FramedCurve, the first _point is used for the bounding box.
	  Don't confuse this with actual data.
2016-06-04 06:00:41 +10:00
nick_m
575bb7792f Small cleanup in FramedCurve. 2016-06-03 02:02:50 +10:00
nick_m
8f88f42ba9 Fix assorted drawing bugs in framed curve.
- treat drawing area of boxes and curves similarly.

	- handle a redraw request between
	  the last sample and the last point.
2016-06-03 00:00:31 +10:00
81a2fe39e8 port 7e716d27 to XFadeCurve 2016-06-01 17:48:33 +02:00
nick_m
7e716d27a8 Fix conditional on uninitialised idx (via n_samples) in framed curve.
- possibly fixes drawing artefacts in the tempo curve.
2016-06-02 01:11:23 +10:00
nick_m
0d7f73cb27 Hopefully finally fix tempo curve flickering. 2016-05-29 05:12:07 +10:00
4c4bb98052 Accommodate newly introduced source(s) in our MSVC project (cairocanvas) 2016-05-28 10:43:50 +01:00
nick_m
2d31fa7bb1 Tempo ramps - finally fix flicker in framed curve. 2016-05-27 23:38:17 +10:00
nick_m
2a8104f2f8 Yr,[p ramps - fix flickering tempo curves when zoomed in. 2016-05-27 23:38:17 +10:00
nick_m
0c7ecc6cbb Tempo ramps - add Canvas::FramedCurve and use it in the tempo marker bar. 2016-05-27 23:38:16 +10:00
nick_m
6209b3f445 Tempo ramps - revert earlier change to Canvas::Curve 2016-05-27 23:38:16 +10:00
nick_m
86b0268e8b Tempo ramps - add visualtempo curve, dragging bbt or music rulers with constraint modifier dilates previous tempo. 2016-05-27 23:38:16 +10:00
nick_m
4f7a4cd233 Crapola - this is an experimental performance hack that must be reverted. 2016-05-27 23:38:14 +10:00
nick_m
7fc3b0c34c Initial stab at tempo ramps.
Replaces the list of points in TempoMap with TempoSection functions, which
compute tempo-at or tick-at time relative to tempo section start.
TempoMap consults them additively to determine things like bbt_time(),
frame_time() get_grid() etc.
This has a marked effect on scrolling speed along with the code simplification
in the places it has been attempted.

Several things are broken here.
Currently every ramp except the last one is an exponential ramp. this may
be simple to fix :).
Mouse-over midi grid doesn't match mouse click grid. should also be simple.

Many things seem to work, but their accuracy should be in question until
each area has been addressed.
2016-05-27 23:38:09 +10:00
742e113a7b backport canvas color functions from Mixbus 2016-05-17 18:17:51 +02:00
6d343ba3c6 fix LocaleGuard contstructor (3dc77280) 2016-05-07 12:19:41 +02:00