63 #ifndef STAGE_TIMELINE_BODY_CANVAS_WIDGET_H 64 #define STAGE_TIMELINE_BODY_CANVAS_WIDGET_H 80 using PAdjustment = Glib::RefPtr<Gtk::Adjustment>;
81 using CairoC = Cairo::RefPtr<Cairo::Context>
const&;
91 using _Renderer = std::function<void(CairoC)>;
93 _Renderer renderGrounding_;
94 _Renderer renderOverlay_;
101 virtual bool on_draw (CairoC)
override;
139 Gtk::ScrolledWindow contentArea_;
140 Gtk::ScrolledWindow rulerArea_;
149 void installForkRoot (
TrackBody& rootTrackBody);
155 auto get_hadjustment() {
return contentArea_.get_hadjustment(); }
160 void hook (Gtk::Widget&,
int xPos=0,
int yPos=0)
override;
161 void move (Gtk::Widget&,
int xPos,
int yPos)
override;
162 void remove (Gtk::Widget&)
override;
178 void slotStructureChange() noexcept;
179 void maybeRebuildLayout();
180 void adjustCanvasSize(
int canvasWidth,
int totalHeight,
int rulerHeight);
void closeCanvas(CairoC)
Finish and close the virtual drawing canvas established by openCanvas().
std::function< TrackProfile &()> ProfileGetter
a way to get and possibly (re)compute the current TrackProfile
Mix-in interface to allow for concrete CanvasHooked widgets to adapt themselves to the metric current...
void openCanvas(CairoC)
Prepare the drawing canvas to work within our virtual canvas coordinate system.
Interface to represent _"some presentation layout entity",_ with the ability to place widgets (manage...
void drawOverlays(CairoC)
A collaboration to establish a globally coherent timeline display layout.
Visitor and state holder for a collaborative layout adjustment pass.
Specialised (abstracted) presentation context with positioning by coordinates.
Description of the structure and arrangement of tracks for display in the UI.
Lumiera GTK UI implementation root.
void drawGrounding(CairoC)
Establish and render the structure of (possibly nested) tracks and overview rulers.
Helper to organise and draw the space allocated for a fork of sub-tracks.
Presentation of the timeline workspace by custom drawing on a canvas.
virtual bool on_draw(CairoC) override
Custom drawing of the timeline content area.
Abstraction to build the layout for the track spaces within timeline display.
basic constant internal time value.
A set of basic GTK includes for the UI.
Interface for coordination of the overall timeline display.