d65f03d074
fixes for canvas text display on Retina (from Valeriy)
2015-06-16 07:52:00 -04:00
b86a8edcff
NOOP, reindent code.
2015-06-13 22:05:29 +02:00
c8e16998bf
fix crash on OSX displaying MIDI sysex, or similar text.
2015-06-13 22:04:31 +02:00
cc543280d9
We were 2 more debug "bits" away from overflow, so recast PBD::DEBUG mechanism away from a 64bit integer and toward std::bitset.
...
Clean up a few minor related PBD::DEBUG issues along the way
2015-06-12 18:14:09 -04:00
10643779b6
more refactoring of WaveView threaded code to try to get to heart of crash bug
2015-06-11 17:04:08 -04:00
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
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
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
1c6c9e95ba
add PBD::DEBUG::WaveView
2015-06-10 18:48:12 -04:00
801af5df9e
Add the new (UINTSDEFINED) preprocessor directive to all out MSVC projects (just to be on the safe side)
2015-06-09 13:18:42 +01:00
bc945bb3d3
use existing partial existing waveview images (if they exist) while waiting for the full ones
2015-06-04 17:46:53 -04:00
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
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
95c991ba35
reinstate absent image.
...
Then go back to bed and be ill some more.
2015-06-01 21:08:56 -04:00
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
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
d7a9c11315
fix x-fade display access beyond array boundaries
2015-05-19 19:28:22 +02:00
198c4d1d88
gfx-card & performance testing
2015-05-02 04:54:59 +02:00
89f5e22896
fix double precision abs value computation
2015-04-29 19:56:35 +02:00
84aab564b4
enable fade-out display by default in A4.
...
..because fade outs are implicit in A4.
Eventually the GUI needs to set_show_background_fade() as needed.
2015-04-29 19:55:53 +02:00
c36504f2ec
NOOP: fix indentation
2015-04-29 09:05:15 -04:00
GZharun
1a84fa3c42
[Summary] Should have been committed with previous: made background fade optional and not shown by default
2015-04-29 08:59:24 -04:00
80ae2bbe23
fix issue with manual merge conflict
2015-04-29 08:23:13 -04:00
2828dcaaf9
make computation of OS X pango text width correction less intrusive/more efficient.
...
Compute the correction only once after each font specification setting.
Conflicts:
libs/canvas/canvas/text.h
2015-04-29 08:20:31 -04:00
a83050a255
manually apply grygorii's API to manage a correction for pango errors in text size computation on OS X
2015-04-29 08:19:22 -04:00
5ab699f898
manually apply grygorii's waveform amplitude implementation
2015-04-29 07:54:21 -04:00
GZharun
96371c8327
[Summary] Fixed issue when width request from Cavas text returned old width value
...
[Reviewed by] Paul Davis
Conflicts:
libs/canvas/canvas/text.h
2015-04-29 07:27:34 -04:00
84cb8913b0
change placement of ruler divider so that the lower line is at the specified height, rather than the upper
2015-04-29 07:26:29 -04:00
697d8a2732
do the right thing when TrackingText::offset is changed
2015-04-29 07:26:18 -04:00
d9cb8a807e
Fix method hiding in Canvas::Text
2015-04-29 07:25:58 -04:00
2673ef4af4
change ruler rendering to change tick heights and move text down
2015-04-29 07:23:36 -04:00
065c6d813e
add missing API
2015-04-29 07:22:48 -04:00
4cf402bdcf
add API to Ruler to optionally draw a divider (2 single pixel horizontal lines) at some position within the vertical extent of the ruler
2015-04-29 07:22:36 -04:00
38728f0835
correct implementation for Rectangle::vertical_fraction()
2015-04-29 07:22:21 -04:00
59ce8663f9
add Rectangle::vertical_fraction() as a convenience method
...
Conflicts:
libs/canvas/rectangle.cc
2015-04-29 07:22:05 -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
b3fb73812c
Position (and size) canvas tooltips such that they better resemble Gtk tooltips
...
Mixbus in particular uses both types of tooltip so we might as well make them look the same.
N.B. The appearance is fine now on Windows but needs to be tested on the other platforms (i.e. some tweaking might be necessary).
2015-04-09 15:46:12 +01:00
2234fd4b8a
Delete a canvas tooltip after we've finished with it
...
All canvas objects share just one tooltip object which is based around Gtk::Label. The Label expands if the current tooltip text is wider than the previous text. However, it doesn't shrink again if the next tooltip has shorter text. Eventually, this results in some very strange looking tooltips (especially in Mixbus where they're used quite extensively).
Deleting the object after use will force a new object to get generated next time (at the correct size). There's still only ever one object per canvas but it's no longer persistent.
2015-04-09 15:42:00 +01:00
47110c983c
fix OSX/PPC 10.4 long maths
2015-03-31 16:05:15 +02:00
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
0f2ead3d6b
fix redraw of automation ControlPoints
2015-03-20 23:31:21 +01:00
86c6541323
Move PC flags to avoid obscuring region name.
...
Fixes bug #6179 . Top vs. bottom seems pretty arbitrary to me, and this solves
the obscuring issue (which is quite common since there are often PC events at
the start of MIDI files), so bottom it is.
2015-03-14 00:21:29 -04: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
bd6ef95989
add accessor methods for single_exposure
2015-02-12 11:35:35 -06:00
b8ec035b24
_single_exposure is now a member variable for each GtkCanvas.
...
Gtk coalesces multiple exposes into a single combined rect.
If _single_exposure is disabled, we break apart the individual expose rects for the canvas rendering.
2015-02-12 11:35:35 -06:00
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
a992a2e6e0
simplify Canvas::Rectangle rendering to avoid unnecessary nonsense, and remove TimeRectangle
2015-02-11 21:59:38 -05:00
2a5921ecf1
Canvas::Rect::contains() should treat its right/left coordinates as exclusive
2015-02-11 21:59:38 -05:00
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
c679d616f6
correct drawing of rectangle borders.
...
They need to use fractional coordinates, and the border position needed
generalizing for other border widths. See verbose comment for details
2015-02-09 16:41:28 -05:00
736038556f
canvas items must be able to use fractional positions when rendering.
...
This is required to be able to draw precise single pixel lines, as described
in the Cairo FAQ
2015-02-09 16:40:10 -05:00
b4a0136155
tweak to help with uncoalesced renders
2015-02-03 17:35:37 -06:00
9fab39358a
render canvas using the GDK region rather than the GDK area.
...
The region is the un-coalesced set of rectangles that were requested for redraw. The area
is the coalesced single rectangle. In the worst cases, the coalesced rectangle could span
the entire window even though just two pixels in opposite corners were to be redrawn.
There is a problem with the verbose cursor as it is dragged across MIDI tracks. TO BE
FIXED.
2015-02-03 15:38:14 -05:00
ccd881d518
ScrollGroup::covers_{window,canvas}() need to account for possible non-zero position of the group.
...
They also do NOT need to consider scroll offset
2015-01-24 18:48:28 -05:00
e84e1f7403
ScrollGroups are kept in their own list, so ::window_to_canvas() does not need to inspect root group children to find them
...
Conflicts:
libs/canvas/canvas.cc
2015-01-24 18:48:15 -05:00
f282884094
apply Theme > “Show waveform clipping”
...
fixes http://tracker.ardour.org/view.php?id=5589#c15515
2015-01-21 19:35:04 +01:00
d2fa2450aa
use C locale, because POSIX locale is not supported on windows, and operation is undefined. C works on all platforms
2015-01-19 07:29:25 -06:00
a58730e8f9
Revert "Kludgey fix for invisible playhead when scrolled."
...
This reverts commit 8f823388d9
.
2015-01-16 22:06:10 -05:00
fc70b5a9f9
Compute arrow bbox manually to appease crazy canvas.
2015-01-16 22:04:26 -05:00
8f823388d9
Kludgey fix for invisible playhead when scrolled.
...
The problem this is avoiding makes absolutely no sense. Either I'm dumb, or
something is more deeply wrong with scroll group bounding boxes, or both, but I
don't care anymore. This works. Viva release mode.
2015-01-16 21:04:38 -05:00
b759fd5879
Put playhead on top of everything.
...
Achieve this by adding a new hscroll group just for cursors.
That requires a slightly smarter window_to_canvas() to deal with overlapping
sensitive scroll groups. New rule is that scroll groups can overlap, but the
most sensitive one found from the top down will be chosen to translate
coordinates. This basically means don't overlap scroll groups with different
sensitivities.
In the presence of scroll groups, having a canvas-wide window_to_canvas()
and/or canvas_to_window() fundamentally makes no sense. At some point in the
glorious future we should kill those and use only item-relative coordinate
translation.
2015-01-16 19:13:56 -05:00
d194ec9135
Update arrow bbox when geometry changes.
2015-01-16 19:13:56 -05:00
e48ff6b6a0
Fix clipping for scroll groups an offset bbox.
2015-01-16 19:13:56 -05:00
55278fb3b0
Fix mouse event position offset bug.
...
Search scroll groups for event delivery from top to bottom rather than bottom
to top. Overlapping scroll groups still aren't properly supported by the
canvas, but currently all we care about is that the top one gets the event, so
the hscroll group (tempo lines) can be below the hvscroll group (tracks), but
the latter gets events.
2015-01-12 01:05:01 -05:00
0367aa5825
remove cruft (old unused pre-git version files)
2015-01-09 06:11:57 +01:00
ec17b5388f
Fix bounding box of rectangles with wide outlines.
2015-01-08 18:36:10 -05:00
7985624037
Close polygon borders (fix partially drawn hits).
2015-01-08 11:09:38 -05:00
2558e52e22
Fix alleged use of uninitialized variable.
...
Looks like a guaranteed else branch to me, but who am I to argue with gcc?
2014-12-31 17:32:21 -05:00
86242348ec
Fix crash when getting width of item with no bbox.
2014-12-24 16:02:56 -05:00
a494211e73
add ArdourCanvas::change_alpha()
...
Time to move away from rgba macros
2014-12-19 09:53:26 -05:00
74be550698
change Item::visible() to Item::self_visible(); add Item::visible() which returns accurate visibility
...
Child items will be hidden when their ancestors are hidden. The old ::visible() implementation didn't reflect this. In addition,
when changes are made to hidden items (new definition of visible/not visible), don't bother to request redraws, since this will
be done when the item becomes visible again.
2014-12-18 10:30:38 -05:00
9831006c8e
add getters for SVAModifier
2014-12-15 12:06:53 -05:00
995bcd3aa0
fix typo
2014-12-15 09:29:04 -05:00
aa57e9e032
more fixes to SVAModifier constructor(s)
2014-12-15 09:03:52 -05:00
3fa4063d9b
fix up SVAModifier constructors
2014-12-14 23:41:31 -05:00
427b93055f
add SVAModifier to ArdourCanvas color code
2014-12-14 23:34:36 -05:00
624a86c39d
lots more color work, closer and closer to being ready for ... being taken apart again
2014-12-08 22:02:38 -05:00
9ac7ddb31d
remove all explicit button text colors; use contrasting_text_color() instead.
...
Also, use a slightly off-white rather than pure white, which should really be configurable
2014-12-07 13:55:40 -05:00
60f4f5b9d8
Fix inappropriately massive flag font.
2014-12-06 16:07:32 -05:00
9266e7524a
experimental drawing optimization.
...
Q: is bounding_box(); etc more complex than queuing draw?
either way, canvas should eventually switch to
use an optimized OptimizingLookupTable.
2014-12-05 22:40:26 +01:00
207fd04587
include alpha-delta computation in HSV::delta()
2014-12-05 09:01:55 -05:00
db3d42d551
first pass at optimization for low-level canvas code
2014-12-02 05:32:34 -05:00
f190e630ab
Show discrete/toggled automation as stepped line.
2014-11-28 21:15:28 -05:00
ea35595370
Add some newly introduced source files to our MSVC project (cairocanvas)
2014-11-28 14:42:17 +00:00
3d4b1d324e
Fix calculation using uninitialized value.
...
Implicit "this" is the devil.
2014-11-27 04:15:30 -05:00
6edd81e4f6
get correct ::distance() and ::delta() implementations for cases involving achromatics
2014-11-26 18:22:22 +02:00
318a9edab9
massive reworking of color selection implementation
2014-11-26 18:22:22 +02:00
ea5876b836
Remove dead code.
2014-11-25 02:11:44 -05:00
bd577a0663
Avoid possible use of uninitialized values.
...
This could only happen with a broken widget, but it shuts up clang and doesn't
hurt.
2014-11-18 02:55:03 -05:00
333c776e0e
Fix MIDI region keyboard editing (add key handling to canvas).
2014-11-15 02:04:28 -05:00
9a9a8f78ef
fix define
2014-11-13 19:05:58 +01:00
12b715e6fa
tweak canvas on_expose_event() handler to avoid unnecessary save/paint/restore
2014-11-10 20:34:20 -05:00
fdcb792358
further work on new color manipulation code
2014-11-10 20:33:54 -05:00
1317b57221
add required header for compilation
2014-11-10 11:46:17 -05:00
ef56948d4a
add background color property to Canvas::Canvas ; rearrange expose handling and include background fill
...
Conflicts:
libs/canvas/canvas.cc
libs/canvas/canvas/canvas.h
2014-11-10 10:43:25 -05:00
373caeede8
Add some newly introduced source files to our MSVC project (cairocanvas)
2014-11-08 10:48:26 +00:00
4260d0ca0e
use new canvas colors header as necessary
2014-11-07 14:24:27 -05:00
69fd25f6f4
move canvas colors code into its own file(s)
2014-11-07 14:24:13 -05:00
a441de1a18
when drawing only part of a Canvas::Rectangle outline, we only need to do the cairo-pixel alignment math for the axis perpendicular to the edge
2014-11-07 12:58:56 -05:00
0fedfab593
tentative fix for canvas background/image surface
2014-11-07 16:50:21 +01:00
7670e463cc
add API to extract color from ArdourCanvas::Text and tidy up member declarations
...
Conflicts:
libs/canvas/canvas/text.h
2014-11-06 20:38:02 -05:00
787f9748b6
changing the clamp_width of an ArdourCanvas::Text needs to potentially provoke an entire redraw
...
This fixes missing range marker text in sessions where the initial zoom value causes an initial clamp_width of zero
2014-11-06 20:38:02 -05:00
c9c4a5c29d
raising/lowering canvas items should trigger a redraw
2014-11-06 10:58:37 -05:00
ecd618c343
correct the rendering of Rectangle outlines, and the computation of their bounding box
2014-11-05 19:45:23 -05:00
857719f2e1
add Rect::shrink(Distance) even though it arguably should be handled by Rect::expand()
2014-11-05 19:45:23 -05:00
f3d349bc9a
add some more outline enums to ArdourCanvas::Rectangle
2014-11-05 19:45:23 -05:00
589e59d7a1
allow derived classes to access Item::{scroll,position}_offset(), mostly for debugging purposes
2014-11-05 19:45:23 -05:00
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