72 #ifndef STAGE_TIMELINE_BODY_CANVAS_WIDGET_H 73 #define STAGE_TIMELINE_BODY_CANVAS_WIDGET_H 89 using PAdjustment = Glib::RefPtr<Gtk::Adjustment>;
90 using CairoC = Cairo::RefPtr<Cairo::Context>
const&;
100 using _Renderer = std::function<void(CairoC)>;
102 _Renderer renderGrounding_;
103 _Renderer renderOverlay_;
110 virtual bool on_draw (CairoC)
override;
148 Gtk::ScrolledWindow contentArea_;
149 Gtk::ScrolledWindow rulerArea_;
158 void installForkRoot (
TrackBody& rootTrackBody);
164 auto get_hadjustment() {
return contentArea_.get_hadjustment(); }
169 void hook (Gtk::Widget&,
int xPos=0,
int yPos=0)
override;
170 void move (Gtk::Widget&,
int xPos,
int yPos)
override;
171 void remove (Gtk::Widget&)
override;
187 void slotStructureChange() noexcept;
188 void maybeRebuildLayout();
189 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.