summaryrefslogtreecommitdiff
path: root/libs/canvas/wscript
AgeCommit message (Collapse)Author
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-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-03-20Move NSGlView into libgtkmm2extRobin Gareus
This allows to re-use the concept with CairoWidget
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-01-15include Canvas::Grid in build scriptPaul Davis
2016-09-27add canvas-based Meter objectPaul Davis
2016-09-27add new Box container for Canvas.Paul Davis
API subject to change and improvement
2016-05-27Tempo ramps - add Canvas::FramedCurve and use it in the tempo marker bar.nick_m
2016-02-28prepare for update to waf 1.8Robin Gareus
uselib is no longer implicit (inherited by .use). This is still incomplete, some uselibs for non-linux variants may be missing. bld.is_defined("HAVE_XXX") also no longer works and will have to be changed (I think to bld.env["HAVE_XXX"]) in countless places.
2015-11-29NOOP, remove trailing whitespace, replace tabs in python scriptsRobin Gareus
2015-06-29conditionalize background fades depending on whether this is a tracks or ↵Paul Davis
other build
2015-06-29tweak for static library buildPaul Davis
2015-06-23several changes, major and minor, to improve threaded waveview renderingPaul Davis
2015-01-09remove cruft (old unused pre-git version files)Robin Gareus
2014-11-26massive reworking of color selection implementationPaul Davis
2014-11-07use new canvas colors header as necessaryPaul Davis
2014-06-26add tracking_text.cc to canvas wscriptPaul Davis
2014-06-22more canvas refactoring.Paul Davis
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-21refactor Canvas so that all Items have children; add Container abstract base ↵Paul Davis
class; rename Group as "Layout" and retain only drawing semantics
2014-06-12remove drag handle canvas object - it was just a stupid unfinished experimentPaul Davis
2014-06-11add ruler.cc to canvas wscriptPaul Davis
2014-06-05basic, initial structure for canvas widget itemPaul Davis
2014-06-03different approach to independent scrolling, involving ArdourCanvas::ScrollGroupPaul Davis
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-05-29Canvas: new x-fade drawing, two curve widgetRobin Gareus
2014-05-28Revert "cairo sub-surface prototype & exampleRobin Gareus
This reverts commit c57fcde78cc0fb393fb7420f1edbc71edf572bd0. and also commit f1f8f89fcb9312065a818233dff4a3f1871fa7fe.
2014-05-28cairo sub-surface prototype - intermediate flattened group renderer.Robin Gareus
2014-04-28remove redundant os.path.join() calls when specifying install path as ↵Paul Davis
bld.env['LIBDIR']
2014-04-28finish unfinished work at basing all install paths on the program namePaul Davis
2014-03-01fix compilation of libcanvas so that when built as a shared lib (the ↵Paul Davis
default), -DLIBCANVAS_DLL_EXPORTS=1 is not lost
2014-02-17make stateful image canvas item actually compilePaul Davis
2014-01-12move -fvisibility=hidden to the top of the source tree, and remove its ↵Paul Davis
internal use; use libtimecode as a shared lib again
2014-01-02add drag handle source to wscriptPaul Davis
2013-12-27add visibility/export control to libcanvasPaul Davis
2013-07-14expand tabs to spaces in wscriptRobin Gareus
2013-04-18part two of ... add Canvas::Arc and derive Canvas::Circle from itPaul Davis
2013-04-18add Canvas::CirclePaul Davis
2013-04-15remove all XML related API from canvas. it may have been useful during ↵Paul Davis
development, but it is just a distraction - we will NEVER be saving or restoring canvas state via XML or any kind of serialized state
2013-04-15add new canvas Image item, with somewhat optimized API for asynchronous, ↵Paul Davis
threaded rendering directly into an image buffer suitable for use by cairo as a source surface (currently untested)
2013-04-11add (bezier) curves to canvas, use for automation lines; fix issue with ↵Paul Davis
rectangles missing their upper line segment; more cairo canvas fixes
2013-04-04initial commit of hand merging, plus getting "ancient" waf script to work ↵Paul Davis
correctly