b02ea3d435
alter implementation of ArdourCanvas::contrasting_text_color() to use gamma-adjusted luminance values rather than simple contrast
2014-11-05 11:13:28 -05:00
70e95f951d
add ArdourCanvas::Fill::set_pattern() to allow any filled canvas item to be filled using an arbitrary Cairo Pattern
2014-11-05 11:13:09 -05:00
f1e6b28ab7
use ArdourCanvas::TimeRectangle for regions, notes, markers
2014-11-03 21:48:08 -05:00
56994e785e
add new TimeRectangle to ArdourCanvas
2014-11-03 21:48:08 -05:00
90872c2b31
more changes for rectangle outlining
2014-10-31 10:56:08 -04:00
a942493565
comment fix and expansion re: Canvas::Rectangle outline
2014-10-31 10:56:08 -04:00
973d40e3ac
Add support for USE_CAIRO_IMAGE_SURFACE when building with MSVC
...
(new preprocessor directive - greatly improves CPU loading)
2014-10-29 17:36:30 +00:00
b04414d170
allow to use cairo-image/software surface for canvas & cairowidgets
2014-10-28 02:15:10 +01:00
6dc3a4bf61
remove unused old API
2014-10-28 01:27:14 +01:00
65036cf3eb
add #include that had gone unnoticed before
2014-10-24 12:18:46 -04:00
d3a4a92bd5
Containers should not consider the size of invisible items when computing their own bounding boxes.
...
This fixes issues related to the rulers container believing it was taller than it actually is, and possibly other issues also
2014-10-13 22:40:08 -04:00
b945fa69ba
remove default/testing tooltips from the canvas
2014-10-13 13:53:07 -04:00
1bde96be09
there's no random() on window, but no matter
2014-09-30 19:08:16 +02:00
b4438942ca
fix compiler warning from missing default statement in switch
2014-09-27 18:09:22 -04:00
2a53154892
end tooltip timeout and display for relevant leave notify events
2014-09-26 17:06:38 -04:00
df5a188825
further tweaks to canvas tooltip mechanism
2014-09-26 12:24:47 -04:00
bb68d83e43
display and position canvas tooltip window
2014-09-26 11:05:24 -04:00
d0dafc171c
basic design of Canvas item tooltip mechanism.
...
No window yet to actually display the tooltip.
2014-09-25 21:43:15 -04:00
2e2390d053
alter the way the border of Canvas::Rectangle is drawn to meet the intent that a single pixel border passes through the corner coordinates
2014-09-22 11:36:04 -04:00
3da9c3b740
NOOP, remove trailing whitespace
2014-09-13 01:48:10 +02:00
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
878797d13e
waveform: really draw 1px lines.
2014-09-12 16:43:20 +02:00
98249a2563
update waveform drawing for zoomed-in, non-overlapping min/max peaks
2014-09-12 16:42:55 +02:00
94adde7ebb
add Canvas::Ruler::set_metric() to allow ruler metrics to be changed dynamically
2014-09-07 10:19:42 -04:00
1a6136e1e3
change Metric element of a Canvas::Ruler item into a pointer internally
2014-09-07 10:19:31 -04:00
158037bba2
Match canvas outline to rectangle
...
It looks like we're currently [consistently] off by 1px
everywhere. The width-1 is compensated by
TimeAxisViewItem::RIGHT_EDGE_SHIFT = 1
2014-09-01 18:05:09 +02:00
65715dd298
Make sure all our VC projects agree that the product is called 'Mixbus3' (as opposed to just 'Mixbus')
...
It'd be nice if we could use 'ARDOUR::config_dir_name' for this purpose (or perhaps 'PROGRAM_VERSION'). However, neither is implemented widely enough at present to make this practical. Keep an eye on them though, as possible future strategies.
2014-08-28 07:57:20 +01:00
5424119b55
Merge branch 'waveview_hacks' of https://github.com/nmains/ardour into cairocanvas
2014-07-18 10:46:22 -04:00
5044feec95
more canvas debugging for current item tracing
2014-07-18 10:43:52 -04:00
b2b736d596
tweaks for the monitor section. refactoring of some buttons, using new ArdourKnob instead of VolumeController. New ArdourDisplay shows a controllables user value, and provides support for preset values (hardcoded at present). Further refactoring to come, so that ArdourWidgets are derived from a common class. Controllable now has more responsibility for scaling between internal, user, and interface (knob percent) values. This also needs more refactoring and might have some unintended consequences. tested with audio and nothing seems amiss, yet.
2014-07-18 08:47:45 -05:00
928881b24a
Update vcproj files for changed LILV config define.
2014-07-15 15:50:12 -04: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
a1bc2cb10e
fix potential crash if certain Canvas methods are used before its window is realized
2014-07-07 08:00:20 -04:00
69a92e67f0
Add Canvas::re_enter() which picks the current item again based on mouse pointer position and generates an enter event for it
2014-07-07 07:53:17 -04:00
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
d816c225a4
more extensive canvas debug message for canvas-enter-leave tracing
2014-06-30 16:32:01 -04:00
79b9a044b8
add event-insensitivity to the list of conditions that causes a container to NOT add its children to the list of items-at-point
2014-06-30 16:31:31 -04:00
4eb565e0a9
verbose cursor text is always outlined
2014-06-30 10:39:41 -04:00
5974f4730b
allow Canvas::Text to have outline drawn in a contrasting color (based on actual color)
2014-06-30 10:39:26 -04:00
471570705d
move contrasting_text_color() into ArdourCanvas
2014-06-30 10:38:45 -04:00
33339090c3
invisible items/containers should not add their children to "items-at-point"
2014-06-30 08:32:26 -04:00
cf075743e4
additional DEBUG_TRACE message for canvas current item selection
2014-06-30 08:32:26 -04:00
cef26a4e1e
Change some declarations from 'struct' to 'class' (and vice-versa)
2014-06-29 13:56:41 +01:00
22ce7c0762
Add (newly introduced) sources to our MSVC projects
2014-06-28 11:56:19 +01:00
ef78ad0d83
Remove (no longer needed) sources from our MSVC projects
2014-06-28 11:48:08 +01:00
c2dcd7eacd
slightly increase size of a Canvas::PolyItem, to avoid left-over pixels when dragging (as well as other general incorrectness
2014-06-27 10:30:09 -04:00
a0cb2f95f0
if CANVAS_DEBUG is defined, then the env variable CANVAS_HARLEQUIN_DEBUGGING will turn on drawing the expose areas for canvas render debugging
2014-06-27 10:27:04 -04:00
6cc673f0a6
in Canvas::window_to_canvas(), if either x or y coordinate is less than zero, search for the scroll group on the relevant edge.
...
If we don't do this then we find no scroll group covering the event coordinate, and the translation for scroll fails to be applied
2014-06-27 10:19:21 -04:00
3accf1d2af
new API for TrackingText and similar items
2014-06-26 15:10:24 -04:00
ae4c4c8f90
add tracking_text.cc to canvas wscript
2014-06-26 15:10:24 -04:00
f5d62b1486
new TrackingText canvas item, to resolve conceptual issues with the Editor::VerboseCursor
2014-06-26 15:10:24 -04:00
cd12698b9c
Rename PBD::find_file_in_search_path to just PBD::find_file
...
saves a bit of typing and not necessary if you look at how it is used.
2014-06-25 12:40:10 -04:00
663f9827f9
last piece of scroll-wheel checkin, oops
2014-06-24 10:46:53 -05:00
2cc25a9d79
add scroll wheel handler to canvas
2014-06-24 10:33:28 -05:00
199ac89d40
return of the zero line
2014-06-23 15:24:08 -04:00
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
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
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
6a5d805b38
more canvas refactoring.
...
Remove Canvas::Layout, use Canvas::Container for the same purpose, move child-rendering into Item::render_children() so that it
could theoretically be used by any derived type.
2014-06-22 11:41:05 -04:00
f0933bf005
add missing new files for canvas redesign
2014-06-22 09:53:14 -04:00
99f9b3456a
explicitly qualify cast to ArdourCanvas::Container so that it works.
...
I assume that gcc is failing to complain about ambiguity with Gtk::Container even though there should
really be no ambiguity
2014-06-22 09:29:16 -04:00
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
c1045881dd
if we're not going to notify parents of bbox changes while an item is hidden, we need to remind it when the item is hidden or shown
2014-06-18 21:02:30 -04:00
36a34dc1a4
Merge branch 'canvas_tweaks' of https://github.com/nmains/ardour into cairocanvas
2014-06-18 11:20:10 -04:00
becf857f48
a whole slew of changes related to centralizing and rationalizing cursor management.
...
Debugging output left in place to help address the reports that will come in as people test this more
2014-06-18 10:24:59 -04:00
nick_m
0bd17ed2e4
Canvas tweaks.
...
* Only queue a draw for changed items that are set visible and in-window.
2014-06-19 00:06:32 +10:00
47efeb9f21
Merge branch 'cache_fixes' of https://github.com/nmains/ardour into cairocanvas
2014-06-17 11:35:13 -04:00
93bc93b6f6
a set of 3 fixes that cure Canvas::Text leaving dirty pixels when being dragged. or might not - testing is non-deterministic, which is alarming
2014-06-17 11:34:54 -04:00
f98e0a0707
use a different approach for indicating expose rects (from robin gareus). #ifdef'd out by default
2014-06-17 11:34:54 -04:00
nick_m
b31608f64e
Cache entries are now region colour aware.
2014-06-18 00:16:51 +10:00
8050712503
comment correction regarding Canvas::visible_area()
2014-06-15 12:18:47 -04:00
dae45f1d75
initialize _scroll_parent in Canvas::item
2014-06-15 12:17:12 -04:00
69af017315
initialize uninitialized variable
2014-06-15 13:24:40 +02:00
55d51d38ce
Add newly introduced sources to our MSVC projects
2014-06-15 09:56:49 +01:00
e59210c402
Remove no longer needed sources from MSVC projects
2014-06-15 09:55:34 +01:00
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
23d7893910
remove drag handle canvas object - it was just a stupid unfinished experiment
2014-06-12 10:40:43 -04:00
87a6f633a1
derive ArdourCanvas::Ruler from Rectangle
2014-06-12 10:35:16 -04:00
e1825361b5
remove hard-coded colors
2014-06-12 01:07:58 -04:00
143f9509ea
many fixes and improvements for a now-working ArdourCanvas::Ruler item
2014-06-11 23:54:28 -04:00
f5fc4a6b09
add ruler.cc to canvas wscript
2014-06-11 23:54:28 -04:00
2cab65062d
add Ruler to Canvas fwd.h
2014-06-11 23:54:28 -04:00
5ee4f41925
add initial (untested) implementation of canvas ruler item
2014-06-11 23:54:28 -04:00
7a3a66db72
fix Canvas::LineSet implementation to support horizontal and vertical linesets
2014-06-09 15:39:19 -04:00
f0c18abf55
remove global canvas scroll offset, to provide no-scroll-parent == no-scroll behaviour
2014-06-09 08:39:48 -04:00
b86e1204ec
fix borked logic controlling whether/when to draw clip/outline pixels/lines in waveviews
2014-06-08 13:13:44 -04:00
c22e96522d
Merge branch 'waveview_caching_for_upstream' of https://github.com/nmains/ardour into cairocanvas
2014-06-08 13:01:47 -04:00
nick_m
e495577f98
Use global clip level from prefs. Restore clip colour, \
2014-06-09 02:50:14 +10:00
5e281d3b44
when delivering enter/leave events to canvas items, ensure that the event coordinates are in canvas space, not window space
...
This fixes a variety of borkage in the canvas at present
2014-06-08 11:26:32 -04:00
153befa92c
add Item::canvas_origin() for convenience
2014-06-08 11:26:32 -04: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
b54a2713a1
When rendering a Canvas::Rectangle take its _position into account, even though in general this is always (0,0) within its parent
2014-06-06 08:33:13 -04:00
792fe016e7
clip rendering of ScrollGroup to just the part of the canvas covered by the scroll group.
...
This stops tracks from appearing to scroll up under the rulers, among other things.
2014-06-05 18:18:28 -04:00
ef9bf58359
fix problems with expose/redraws from canvas where requested area goes way outside the integer range allowed by GTK/GDK
2014-06-05 14:42:46 -04:00
8c79f70eef
remove debugging output
2014-06-05 12:04:42 -04:00
1d354f746a
basic, initial structure for canvas widget item
2014-06-05 12:04:42 -04:00
236926e7ca
Add newly introduced sources to MSVC project
...
(scroll_group stuff)
2014-06-04 13:50:06 +01:00
8fa81c1436
merge onecanvas and cairocanvas branches, and manually resolve conflicts, including rounding in item_to_window() methods
2014-06-03 16:37:53 -04:00
e0533e9dd7
more profound changes to canvas scrolling, in particular find appropriate ScrollGroup for Canvas::{window,canvas}_to_{canvas,window}()
2014-06-03 16:13:12 -04:00
d4989ed9ce
fix missing leftover Canvas::pick_current_item() which was confusing button release event coordinates
2014-06-03 16:12:00 -04:00
073df89c4d
use window-based coordinates when picking current item so that we get per-item (per-scroll-group,really) computation of position and coverage.
2014-06-03 16:12:00 -04:00
54a56cd3c6
various changes to get independent scrolling to work better in canvas. mostly tweaks relating to how scroll offsets are used during rendering.
...
Event handling offsets still require work.
2014-06-03 16:12:00 -04:00
f17b84ad10
clean up ArdourCanvas::Arrow implementation to remove unshown polygon/head
2014-06-03 16:11:24 -04:00
bf7b35388b
rationalize and centralize computation of positional offset and scroll offset for canvas items
2014-06-03 16:11:24 -04:00
22e7252729
inline ScrollGroup::canvas_position() for no particular reason
2014-06-03 16:10:27 -04:00
c9f890bd7c
avoid recursing through the entire canvas when scrolling - only scroll explicitly identified ScrollGroups
2014-06-03 16:10:27 -04:00
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
97109672c7
initial redesign of canvas scrolling to facilitate independent x- and y-axis scrolling of specific groups within the canvas.
...
This commit should cause no change in behaviour, but contains all the code and changes necessary
for the next step
2014-06-03 16:09:06 -04:00
ab60429efc
test possible 'flickering' with nvidia
2014-05-31 18:22:34 +02:00
2342b7d611
don't allow waveform to bleed into TimeAxisViewItem frame border
2014-05-31 14:06:10 +02:00
161a3258ee
Add newly introduced sources to MSVC project
...
(xfade_curve stuff)
2014-05-30 12:52:03 +01:00
33412421f6
Rearrange some #includes to keep MSVC happy
2014-05-30 12:50:49 +01:00
fed5599baa
smooth visual curve drawing
2014-05-30 03:04:02 +02:00
202d926916
smoothen rendering of x-fades
2014-05-29 07:48:43 +02:00
604abffeb5
fix prev commit
2014-05-29 05:30:13 +02:00
86e7d86089
renice x-fade rendering w/cairo-antialiasing
2014-05-29 05:06:02 +02:00
30f204b90e
Canvas: new x-fade drawing, two curve widget
2014-05-29 03:09:57 +02:00
034f3dafd7
Revert "cairo sub-surface prototype & example
...
This reverts commit c57fcde78c
.
and also commit f1f8f89fcb
.
2014-05-28 19:13:25 +02:00
f1f8f89fcb
exercise subsurface rendering for x-fade curves
2014-05-28 17:38:42 +02:00
c57fcde78c
cairo sub-surface prototype - intermediate flattened group renderer.
2014-05-28 17:38:42 +02:00
c03b658531
Curve: anti-aliasing.
...
use cairo for anti-aliasing, and ignore explicit Catmull-Rom
points for that fall on the same x-cordinate.
2014-05-27 19:36:10 +02:00
99c953514b
implement Curve in/outside fill
2014-05-27 16:37:01 +02:00
432611113d
directly apply waveform clip-level changes
2014-05-27 16:37:01 +02:00
bf4819ab0e
"We brake for nobody." oh wait. - fixes Rectified Waveform view.
2014-05-26 22:45:42 +02:00
bdb342123f
fix prev commit, window-offset for x-fade drawing
2014-05-26 18:22:21 +02:00
791c668756
fix x-fade drawing
...
Catmull-Rom curve samples are not equally spaced on the x-axis.
Furthermore, Curve::map_value() is not needed, cairo line_to
already interpolates.
2014-05-26 17:02:21 +02:00
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
1b989a93c2
remove redundant os.path.join() calls when specifying install path as bld.env['LIBDIR']
2014-04-28 21:18:02 -04:00
058986f77b
finish unfinished work at basing all install paths on the program name
2014-04-28 21:11:08 -04:00
077a194430
Add the main VC project files for building Ardour3 with Microsoft Visual Studio
...
Note that there's no 'VS Solution' file at present and some targets haven't been built yet (e.g. 'fst')
2014-04-08 09:49:35 +01:00
9df3157dfc
big rework of scrolling, horizontal part considered almost 100% done.
...
Many more changes than I would typically like in a single commit, but this was all very intertwined.
Vertical scrolling using track-stepping still to follow.
2014-03-20 13:29:45 -04:00
c2946ee00f
don't queue redraws when various canvas item properties are "reset" to the same value, plus supporting functions
2014-03-11 07:36:09 -04:00
032f394b2a
tiny red dots, be gone (expand poly_item bounding box by correct (?) amount)
2014-03-10 11:10:38 -04:00
ec0be1310f
missing iterator advance
2014-03-10 11:10:38 -04:00
52c8b6d66a
stupid hack to fix rectangle damage noise
2014-03-09 11:39:57 -04:00
6d3bd4e53c
use fill transparency detection to avoid rendering transparent (invisible) rectangle fill area
2014-03-07 12:29:26 -05:00
12ef19d90a
if a Fill object is given a zero-alpha (transparent) color, note that
2014-03-07 12:28:52 -05:00
52cfbb45e1
alter ArdourCanvas::Rect::expand() to not clamp to all-positive values because we now definitely have items that have negative coordinates.
...
This could have drastic consequences but I think the all-positive was a hack to fix a problem that was solved separately by means currently unknown.
2014-03-07 11:26:27 -05:00
621887cfaa
slightly optimize bounding box computation for ArdourCanvas::PolyItem by avoiding inner conditional
2014-03-07 11:24:51 -05:00
e5802bdbea
move an assert to cover only cases where it is needed
2014-03-07 11:23:22 -05:00
2a6fc5af74
tweak Polygon::render() to work whether or not fill or outline are unset
2014-03-06 23:15:59 -05:00
a08c0ea1da
manually revert change to canvas expose handling in fee026c5ef
...
Breaking out the rectangles implies a z-axis ordering of drawing,because the rect drawn last will implicitly be "on top".
But redraw areas are not submitted with any z-axis information, and so drawing like this breaks canvas layering. It
would be more efficient to draw the rects separately, but we don't have any ordering information and so we cannot do it
correctly.
2014-03-05 13:12:18 -05:00
58a30da03d
use a centripetal catmull-rom curve to smooth ArdourCanvas::Curve
...
See http://en.wikipedia.org/wiki/Centripetal_Catmull-Rom to understand the benefits of this.
2014-03-05 11:38:30 -05:00
e6849e9c7e
"correct" curve drawing (no artifacts during redraw)
...
Interpolation errors still need addressing.
2014-03-04 21:58:17 -05:00
c29d392b0c
tentative intermediate state for ArdourCanvas::Curve
2014-03-04 21:58:17 -05:00
dde4d3bbc3
only queue an item redraw from Item::show() or Item::Hide() if the call changes the visibility status of the item (i.e. make no-ops really be no-ops)
2014-03-04 21:58:17 -05:00
fee026c5ef
break down GdkEventExpose into distinct rectangles for canvas expose rather than drawing the entire region as a single rect
2014-03-04 21:58:16 -05:00
912f07b919
mingw build fixes (tested with i686-w64-mingw32 on linux-x86_64)
2014-03-04 15:25:58 +01:00
e6c3cece64
remove recently added conflation of mingw64 and msvc with respect to symbol export
2014-03-02 14:59:08 -05:00
560c667ea9
fix compilation of libcanvas so that when built as a shared lib (the default), -DLIBCANVAS_DLL_EXPORTS=1 is not lost
2014-03-01 16:52:08 -05:00