summaryrefslogtreecommitdiff
path: root/libs/canvas
AgeCommit message (Collapse)Author
2018-09-10Initial changes needed for building Mixbus (with MSVC) as version 5John Emmas
(Mixbus itself will probably need extra changes)
2018-07-08make velocity bars thinner (from alex mitchell)Paul Davis
2018-07-05Accommodate newly introduced source(s) in our MSVC project (cairocanvas)John Emmas
2018-07-03method for setting whether or not to show velocity barsPaul Davis
2018-07-03fix rectangle computation, and re-use alex' color computationPaul Davis
2018-07-03add a guess at appropriate color management for note velocity displayPaul Davis
I think that HSV::opposite() is probably too strong here. HSV::darker() might be better. Experimentation needed.
2018-07-03use new Canvas::Note object for (sustained) note displayPaul Davis
2018-07-03initial implementation of a more specialized canvas item for (sustained) notesPaul Davis
2018-07-03minor code optimization for Rectangle::render()Paul Davis
2018-02-15When building with MSVC, allow for the fact that Mixbus and Ardour can be ↵John Emmas
using different versions of the SESSION_FILE format
2018-02-14Accommodate the change from libtimecode to libtemporalJohn Emmas
2017-09-18globally change all use of "frame" to refer to audio into "sample".Paul Davis
Generated by tools/f2s. Some hand-editing will be required in a few places to fix up comments related to timecode and video in order to keep the legible
2017-09-18add basic data members and methods for adding an explicit size allocation ↵Paul Davis
for Canvas::Item
2017-07-19MSVC changes needed to implement the new 'waveview' libraryJohn Emmas
2017-07-18Fix NSGLView invalidationRobin Gareus
2017-07-17Purify libcanvas, remove libardour dependencyRobin Gareus
A canvas is just a canvas. Move WaveView into its own library.
2017-07-17Clean up library inheritance (colors.h, utils.h)Robin Gareus
make libwidget independent of libcanvas. Confine basics to pbd and gtkmm2ext.
2017-06-29Accommodate newly introduced source(s) in our MSVC project (cairocanvas)John Emmas
2017-06-28fix OSX builds (llmath compat)Robin Gareus
2017-06-26Fix friend declaration in WaveView code for non-c++11 buildsTim Mayberry
2017-06-26Reimplementation of large parts of the WaveView classTim Mayberry
The drawing itself should be unchanged but much of the rest of the implementation has changed. The WaveViewThreads and WaveViewDrawingThread classes were added and allow multiple drawing threads. The Item::prepare_for_render interface is implemented by WaveView to enable queuing draw requests for the drawing threads to process as soon as the state change occurs during Editor::visual_changer, which often means the images will be finished by the time they are needed in WaveView::render. This can significantly reduce total render time and also flickering caused by images not being ready for display. If the drawing thread/s cannot finish the request by the time it is required in WaveView::render then cancel it and draw the WaveViewImage in the GUI thread if it is likely it can be completed in the current render pass/frame. This change also helps reduce the flickering caused by images not being ready with threaded rendering, but with several drawing threads, drawing in the GUI thread may not often occur (unless explicitly requested). Allow unfinished images to be returned from the cache in WaveView::prepare_for_render so that new draw requests aren't queued for duplicate images. This reduces the amount of drawing for instance in compositions where there are many instances of the same sample/waveform displayed on the canvas as only a single image should be drawn. Use a random width within a certain range for WaveView::optimal_image_width_samples so that image drawing is less likely to occur at the same time (which will cause a spike in render/draw time and increase the chance of flickering waveforms). Move implementations of the private WaveView classes into wave_view_private.h and wave_view_private.cc source files. Incorporate a fix for limiting the waveview image size to the cairo image size limit. Should hopefully Resolve: #6478
2017-06-26Add Canvas::get_microseconds_since_render_start() methodTim Mayberry
Initial use is for the WaveView class to determine whether on not to draw the waveform in the GUI thread.
2017-06-26Add Canvas::get_last_render_start_timestamp methodTim Mayberry
2017-06-26Only call Gtk::Widget::queue_draw_area in canvas when item and visible area ↵Tim Mayberry
intersect Refactor GtkCanvas::request_redraw to use Rect::intersection
2017-06-26Add an optional ArdourCanvas::Item::prepare_for_render interfaceTim Mayberry
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-26Add PreRender signal to the canvasTim Mayberry
Emitted by the canvas immediately before rendering.
2017-06-26Whitespace fixes in canvas.hTim Mayberry
2017-06-22Remove unused ArdourCanvas::HSV constructorTim Mayberry
Using stringstream for this is not locale independant. If this constructor is needed at a later stage it should be reimplemented.
2017-06-22Remove LocaleGuards from SVAModifier and HSV classesTim Mayberry
float <=> string conversion now done using PBD::to_string/string_to so LocaleGuards are no longer needed.
2017-05-14Fix out-of-bounds waveform image rendering.5.9Robin Gareus
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-04-19Use PBD::to_string from pbd/string_convert.h in WaveView debug codeTim Mayberry
2017-04-19Use locale independent string conversion functions in SVAModifier classTim Mayberry
2017-04-17Stop tooltip timeout when a canvas-widget or item is hidden.Robin Gareus
2017-03-21consolidate NSGLViewRobin Gareus
2017-03-21Allow to selectively use NSGLView CanvasRobin Gareus
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-20Towards a consistent render() API.Robin Gareus
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-20Forward un/map events to NSGLViewRobin Gareus
2017-03-20Move NSGlView into libgtkmm2extRobin Gareus
This allows to re-use the concept with CairoWidget
2017-03-20Fix OSX canvas when used without openGL NSViewRobin Gareus
2017-03-20Use NSGLView with patched gdkRobin Gareus
Special case Ardour's Canvas NSView to forward gdk-events which are otherwise special-cased to read AU-views..
2017-03-19Prepare NSView/OpenGL Canvas (to speed up rendering on [mac]OS[X]Robin Gareus
This avoids Coregraphics (cairo_quartz_surface..) competely. The openGL texture bypasses CG's slow argb_image and CGSColorMask methods.
2017-03-17Snow White and the Pharaoh (mac rendering)Robin Gareus
Once upon a time there was a beautiful Apple tree in palace of GtkAnkhAmun in Cairo...
2017-03-17NO-OP: whitespaceRobin Gareus
2017-03-11Disable Retina/Appple pango text-width workaroundRobin Gareus
Fix right-alignment (tempo-markers) and oversized bounding-boxes. _width_correction should be removed after testing on various systems.
2017-02-01canvas::grid - more tweaks and improvementsPaul Davis
2017-02-01canvas::grid : compute all row/col extentsPaul Davis
2017-02-01basics of row/col span for Canvas::GridPaul Davis
2017-02-01change Grid API to avoid unnecessary Duple and open door for row/col spanPaul Davis
2017-02-01clear up some CSS padding/margin confusion, and add row/col spacingPaul Davis
2017-02-01canvas::grid starts being able to do its job a littlePaul Davis