_ArrangerWidget struct

The arranger widget is a canvas that draws all the arranger objects it contains.

Contents

Public variables

ArrangerWidgetType type
Type of arranger this is.
double last_offset_x
Used when dragging.
double start_x
X-axis coordinate at start of drag.
double start_y
Y-axis coordinate at start of drag.
double start_pos_px
X-axis coordinate at the start of the drag, in pixels.
bool drag_update_started
Whether a drag update operation started.
bool earliest_obj_exists
Whether an object exists, so we can use the earliest_obj_start_pos.
Position earliest_obj_start_pos
Start Position of the earliest object at the start of the drag.
Position fade_pos_at_start
Fade in/out position at start.
ArrangerObject* start_object
The object that was clicked in this drag cycle, if any.
ArrangerObject* hovered_object
Object currently hovered.
int start_object_was_selected
Whether the start object was selected before drag_begin.
ArrangerSelections* sel_at_start
A clone of the ArrangerSelections on drag begin.
ZRegion* region_at_start
Region on drag begin, if editing automation.
ArrangerSelections* sel_to_delete
Selections to delete, used with the eraser tool.
Position start_pos
Start Position of the earliest object currently.
bool was_paused
Whether playback was paused during drag begin.
Position playhead_pos_at_start
Playhead position at start of drag.
double curr_ticks_diff_from_start
The absolute (not snapped) current diff in ticks from the curr_pos to the start_pos.
double adj_ticks_diff
The adjusted diff in ticks to use for moving objects starting from their cached start positions.
double last_adj_ticks_diff
adj_ticks_diff in last cycle.
Position curr_pos
The absolute (not snapped) Position as of the current action.
Position end_pos
for moving regions
double hover_x
Current hovering positions.
int n_press
Number of clicks in current action.
SnapGrid* snap_grid
Associated SnapGrid.
int shift_held
Whether shift button is held down.
int ctrl_held
Whether Ctrl button is held down.
int alt_held
Whether Alt is currently held down.
int visible_track_diff
The number of visible tracks moved during a moving operation between tracks up to the last cycle.
int lane_diff
The number of lanes moved during a moving operation between lanes, up to the last cycle.
int is_pinned
Whether this TimelineArrangerWidget is for the PinnedTracklist or not.
int resizing_range
1 if resizing range.
int resizing_range_start
1 if this is the first call to resize the range, so range1 can be set.
AutomationTrack* hovered_at
Cache for chord object height, used during child size allocation.
int region_icon_texture_size
Size of above textures.
GskRenderNode* loop_line_node
Cached nodes for region loop lines.
int hovered_note
The note currently hovering over.
int start_vel_val
1-127.
int vel_diff
Maximum Velocity diff applied in this action.
int hovered_chord_index
Index of the chord being hovered on.
float fval_at_start
Float value at start.
int last_playhead_px
Px the playhead was last drawn at, so we can redraw this and the new px only when the playhead changes position.
bool redraw
Set to 1 to redraw.
graphene_rect_t last_rect
Rectangle in the last call.
bool can_link
Whether the current selections can link (ie, only regions are selected).
bool is_highlighted
Whether a rectangle is highlighted for DND.
GdkRectangle highlight_rect
The rectangle to highlight.
GdkRectangle last_selection_rect
Last selection rectangle, used to redraw the union of the new selection and this.
guint drag_start_btn
Drag start button (primary, secondary, etc.).
bool first_draw
Whether this is the first time the widget is drawn.
double new_hadj_val
New temporary hadjustment value used when zooming in/out.
TransportDisplay ruler_display
Cached setting.
PangoLayout* vel_layout
Layout for drawing velocity text.
PangoLayout* ap_layout
Layout for drawing automation point text.
PangoLayout* audio_layout
Layout for drawing audio editor text.
PangoLayout* debug_layout
Layout for debug text.
int queued_playhead_px
Cached playhead x to draw.
GPtrArray* hit_objs_to_draw
Array of objects to draw.
GtkPopoverMenu* popover_menu
Popover to be reused for context menus.

Variable documentation

bool _ArrangerWidget::drag_update_started

Whether a drag update operation started.

drag_update will be skipped unless this is true or gtk_drag_check_threshold() returns true.

Position _ArrangerWidget::fade_pos_at_start

Fade in/out position at start.

Used when moving fade in/out points.

ArrangerObject* _ArrangerWidget::start_object

The object that was clicked in this drag cycle, if any.

This is the ArrangerObject that was clicked, even though there could be more selected.

This is also used when changing values via the event viewer.

FIXME this sometimes stores project objects (that should not be free'd) and sometimes clones (eg, arranger_object_edit_begin/finish()). Only allow one type.

ArrangerSelections* _ArrangerWidget::sel_at_start

A clone of the ArrangerSelections on drag begin.

When autofilling velocities, this is used to store the affected objects before editing.

This must contain clones only.

Position _ArrangerWidget::start_pos

Start Position of the earliest object currently.

The absolute (not snapped) Position at the start of a drag, translated from start_x.

int _ArrangerWidget::vel_diff

Maximum Velocity diff applied in this action.

Used in drag_end to create an UndableAction. This can have any value, even greater than 127 and it will be clamped when applying it to a Velocity.

float _ArrangerWidget::fval_at_start

Float value at start.

Used when changing the audio region gain.

bool _ArrangerWidget::can_link

Whether the current selections can link (ie, only regions are selected).

To be set on drag begin.

guint _ArrangerWidget::drag_start_btn

Drag start button (primary, secondary, etc.).

Can be tested against GDK_BUTTON_SECONDARY and GDK_BUTTON_PRIMARY.

bool _ArrangerWidget::first_draw

Whether this is the first time the widget is drawn.

This is used for loading back the scroll positions saved in the project.

PangoLayout* _ArrangerWidget::vel_layout

Layout for drawing velocity text.

TODO move to Velocity if parallel processing is needed - no need now.

PangoLayout* _ArrangerWidget::ap_layout

Layout for drawing automation point text.

TODO move to AutomationPoint if parallel processing is needed - no need now.

int _ArrangerWidget::queued_playhead_px

Cached playhead x to draw.

This is used to avoid queuing drawing at x and then drawing after it (if playhead moved). The playhead will be drawn at the location it was when the draw was queued.

GPtrArray* _ArrangerWidget::hit_objs_to_draw

Array of objects to draw.

To be reused in snapshot().