Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
Having the velocity bar inset from note causes distracting space at beginning of note
when viewing a MIDI note that is zoomed out
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
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.
|
|
For MacOS/X this is equivalent, rendering happens using a
CGBitmapContext + image-surface. Windows and Linux needs profiling
for respective equivalent surfaces.
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Same as be826f363522dbca96c8263d404c57c4fe9ff0e2
Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
|
|
|
|
extended to the other libs)
Stage 3 of 3
|
|
(Mixbus itself will probably need extra changes)
|
|
|
|
|
|
|
|
|
|
I think that HSV::opposite() is probably too strong here. HSV::darker() might be better. Experimentation needed.
|
|
|
|
|
|
|
|
using different versions of the SESSION_FILE format
|
|
|
|
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
|
|
for Canvas::Item
|
|
|
|
|
|
A canvas is just a canvas. Move WaveView into its own library.
|
|
make libwidget independent of libcanvas.
Confine basics to pbd and gtkmm2ext.
|
|
|
|
|
|
|
|
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
|
|
Initial use is for the WaveView class to determine whether on not to draw the
waveform in the GUI thread.
|
|
|
|
intersect
Refactor GtkCanvas::request_redraw to use Rect::intersection
|