summaryrefslogtreecommitdiff
path: root/libs/canvas/canvas
AgeCommit message (Collapse)Author
2020-04-10NO-OP: consistent function and variable namingRobin Gareus
2020-04-10Remove unused functionRobin Gareus
Cairo::curve_to renders cubic Bézier splines, those are not generally useful in a DAW context. Canvas::Curve implements centripetal catmull-rom spline drawing which can be used for fades and automation interpolation.
2020-04-10Interpolate poly-line with view-point #6481Robin Gareus
2020-04-10NO-OP: whitespaceRobin Gareus
2020-02-24Remove unused forward declaration.André Nusser
2020-01-04Return of image-surface backed canvas (windows graphics performance)Robin Gareus
This partially reverts 2edbda252619b. Using cairo-groups increases performance on MacOS, and retains retina-resolution. However it adds a performance regression for MS Windows graphics rendering. cairo-groups use a "similar" surface, not an image surface. Empirically this adds significant overhead compared to rendering using the CPU and using bitblt.
2019-12-27Replace explicit image-surface with cairo pattern/groupRobin Gareus
For MacOS/X this is equivalent, rendering happens using a CGBitmapContext + image-surface. Windows and Linux needs profiling for respective equivalent surfaces.
2019-12-27Allow for per-widget image-surface backingRobin Gareus
This is an intermediate commit, before replacing image surfaces with cairo pattern groups. The eventual goal is to reduce flickering and/or use CPU + bitblt for specific widgets instead of cairo graphics-cards accel. This also removes excessive calls to getenv() for every rendering operation.
2019-09-30Fix remaining doxygen warnings (!)Robin Gareus
2019-09-30NO-OP: whitespace, indentRobin Gareus
2019-08-03Update canvas/UI lib GPL boilerplate and (C) from git logRobin Gareus
2018-07-03method for setting whether or not to show velocity barsPaul 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-03initial implementation of a more specialized canvas item for (sustained) notesPaul Davis
2018-07-03minor code optimization for Rectangle::render()Paul Davis
2017-09-18add basic data members and methods for adding an explicit size allocation ↵Paul Davis
for Canvas::Item
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-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-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-04-17Stop tooltip timeout when a canvas-widget or item is hidden.Robin 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-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-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-02-01canvas::grid - more tweaks and improvementsPaul 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
2017-02-01add basic data members and methods for adding an explicit size allocation ↵Paul Davis
for Canvas::Item
2017-01-24This wasn't supposed to be pushed to master.Paul Davis
Revert "add basic data members and methods for adding an explicit size allocation for Canvas::Item" This reverts commit d1c1d8df614672b00a9835ae04566b12d21be697.
2017-01-24add basic data members and methods for adding an explicit size allocation ↵Paul Davis
for Canvas::Item
2017-01-19remove use of boost::optional to define "undefined" Canvas::Rect, and use ↵Paul Davis
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-19fix up Canvas::Grid child layoutPaul Davis
2017-01-19do not add items twice to their canvas parent!Paul Davis
2017-01-15basic (and probably wrong) Canvas::Grid child placementPaul Davis
2017-01-15initial skeleton for a Grid canvas itemPaul Davis
2016-12-29add ArdourCanvas::Flag::width()nick_m
2016-12-19Towards packing CairoWidgets on ArdourCanvas.Robin Gareus
2016-10-13stop using gkd_pango_context_get() in ArdourCanvas::Canvas and require ↵Paul Davis
concrete instances to supply a Pango::Context; do this for GtkCanvas and Push2Canvas
2016-09-27provide ArdourCanvas::Text::{width,height}()Paul Davis
2016-09-27add canvas-based Meter objectPaul Davis