summaryrefslogtreecommitdiff
path: root/libs/canvas
AgeCommit message (Collapse)Author
2020-04-10NO-OP: whitespaceRobin Gareus
2020-04-10Remove hardcoded 2^15 cairo-boundary, prefer window-areaRobin Gareus
2020-04-10NO-OP: consistent function and variable namingRobin Gareus
2020-04-10NO-OP: whitespaceRobin 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-03-26change velocity bar inside notes to extend to edges of note6.0-pre1Paul Davis
Having the velocity bar inset from note causes distracting space at beginning of note when viewing a MIDI note that is zoomed out
2020-03-25remove accumulated debug outputPaul Davis
2020-03-25more playhead-drag/click locate debuggingPaul Davis
2020-02-24Remove unused forward declaration.André Nusser
2020-01-25Explicitly use OSXRobin Gareus
Previously this was inherited via PBD. On MacOS/X, this adds "-undefined dynamic_lookup -flat_namespace" and various "-framework .." options to linkflags Without this flag, .dylibs fail to link usually because of missing `-lintl` (Undefined symbols: "_libintl_dgettext") On other systems this is a NO-OP: CFLAGS_OSX, CXXFLAGS_OSX and LINKFLAGS_OSX are only set on the darwin platform.
2020-01-14NO-OP: whitespaceRobin Gareus
2020-01-05Add a missing semicolonJohn Emmas
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-09-25goodbye USE_TRACKS_CODE_FEATURES and is_tracks_buildPaul Davis
2019-08-03Update canvas/UI lib GPL boilerplate and (C) from git logRobin Gareus
2019-04-08Undo more incorrect sample/frame replacementsRobin Gareus
2019-02-28Remove ancient, unmaintained xcode project filesRobin Gareus
2018-10-17Prevent excessive meter redraws for inactive meters at zero IIAndreas Müller
Same as be826f363522dbca96c8263d404c57c4fe9ff0e2 Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
2018-10-14remove use of hardcoded -fPIC compiler flag, and use compiler flag dict insteadPaul Davis
2018-09-30Adapt our remaining MSVC projects for 'boost::atomic' (in case it later gets ↵John Emmas
extended to the other libs) Stage 3 of 3
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