summaryrefslogtreecommitdiff
path: root/libs/canvas/canvas/canvas.h
AgeCommit message (Collapse)Author
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
2017-07-18Fix NSGLView invalidationRobin Gareus
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-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-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-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
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
2015-11-02fix crash when cleaning up canvas itemsRobin Gareus
Backport from Mixbus. In Ardour this does not currently matter since there is no top-level canvas destroyed top-down. ... Editor::session_going_away MixerStrip::~MixerStrip MixbusStripCanvas::~MixbusStripCanvas ArdourCanvas::GtkCanvas::~GtkCanvas ArdourCanvas::Canvas::~Canvas ArdourCanvas::Root::~Root ArdourCanvas::Container::~Container ArdourCanvas::Item::~Item ArdourCanvas::Item::clear_items GtkCanvas::item_going_away() queue_draw_item_area() ..expose can take place async to garbage collection: crash in one of the items.
2015-10-05NOOP, remove trailing tabs/whitespace.Robin Gareus
2015-10-04globally remove all trailing whitespace from ardour code base.Paul Davis
Paul Davis was responsible for introducing almost all of this.
2015-02-12add accessor methods for single_exposureBen Loftis
2015-02-12_single_exposure is now a member variable for each GtkCanvas.Ben Loftis
Gtk coalesces multiple exposes into a single combined rect. If _single_exposure is disabled, we break apart the individual expose rects for the canvas rendering.
2014-11-15Fix MIDI region keyboard editing (add key handling to canvas).David Robillard
2014-11-10add background color property to Canvas::Canvas ; rearrange expose handling ↵Paul Davis
and include background fill Conflicts: libs/canvas/canvas.cc libs/canvas/canvas/canvas.h
2014-10-28allow to use cairo-image/software surface for canvas & cairowidgetsRobin Gareus
2014-10-28remove unused old APIRobin Gareus
2014-09-26further tweaks to canvas tooltip mechanismPaul Davis
2014-09-26display and position canvas tooltip windowPaul Davis
2014-09-25basic design of Canvas item tooltip mechanism.Paul Davis
No window yet to actually display the tooltip.
2014-07-07Add Canvas::re_enter() which picks the current item again based on mouse ↵Paul Davis
pointer position and generates an enter event for it
2014-06-29Change some declarations from 'struct' to 'class' (and vice-versa)John Emmas
2014-06-26new API for TrackingText and similar itemsPaul Davis
2014-06-24add scroll wheel handler to canvasBen Loftis
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-09remove global canvas scroll offset, to provide no-scroll-parent == no-scroll ↵Paul Davis
behaviour
2014-06-05fix problems with expose/redraws from canvas where requested area goes way ↵Paul Davis
outside the integer range allowed by GTK/GDK
2014-06-03more profound changes to canvas scrolling, in particular find appropriate ↵Paul Davis
ScrollGroup for Canvas::{window,canvas}_to_{canvas,window}()
2014-06-03various changes to get independent scrolling to work better in canvas. ↵Paul Davis
mostly tweaks relating to how scroll offsets are used during rendering. Event handling offsets still require work.
2014-06-03avoid recursing through the entire canvas when scrolling - only scroll ↵Paul Davis
explicitly identified ScrollGroups
2014-06-03initial redesign of canvas scrolling to facilitate independent x- and y-axis ↵Paul Davis
scrolling of specific groups within the canvas. This commit should cause no change in behaviour, but contains all the code and changes necessary for the next step
2014-05-30smooth visual curve drawingRobin Gareus
2013-12-27add visibility/export control to libcanvasPaul Davis
2013-12-12change enter/exit event delivery to follow X Window model (inferior, ↵Paul Davis
ancestor, virtual, nonlinear)
2013-12-12change event propagation to be based on parent/child lineage, not z-axis ↵Paul Davis
stacking, plus some more alterations to try to get enter/leave working
2013-10-31handle enter/leave items when zooming and scrolling occurPaul Davis
2013-10-30notable changes to try to improve most of enter/leave handling for canvas itemsPaul Davis
2013-06-18basically operational switch to canvas drawing coordinates, although text ↵Paul Davis
and waves don't work, and redraw areas are too small