Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
track_canvas.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: © 2018-2024 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
4#ifndef __GUI_WIDGETS_TRACK_CANVAS_H__
5#define __GUI_WIDGETS_TRACK_CANVAS_H__
6
12
13#include "common/utils/types.h"
14#include "gui/backend/gtk_widgets/gtk_wrapper.h"
15
16#define TRACK_CANVAS_WIDGET_TYPE (track_canvas_widget_get_type ())
17G_DECLARE_FINAL_TYPE (
18 TrackCanvasWidget,
19 track_canvas_widget,
20 Z,
21 TRACK_CANVAS_WIDGET,
22 GtkWidget)
23
24TYPEDEF_STRUCT_UNDERSCORED (TrackWidget);
25
26using TrackCanvasWidget = struct _TrackCanvasWidget
27{
28 GtkWidget parent_instance;
29
30 TrackWidget * parent;
31
33 PangoLayout * layout;
34
36 PangoLayout * automation_value_layout;
37
39 PangoLayout * lane_layout;
40
42 int last_width;
43 int last_height;
44
45 std::string last_track_icon_name;
46
47 GdkTexture * track_icon;
48};
49
50void
51track_canvas_widget_setup (TrackCanvasWidget * self, TrackWidget * parent);
52
53#endif
struct _TrackWidget { GtkWidget parent_instance; GtkBox *main_box; GtkBox *group_colors_box; GtkGestureDrag * drag; GtkGestureClick *click; GtkGestureClick *right_click; int dragged; int n_press; bool bg_hovered; bool color_area_hovered; bool icon_hovered; int resize; int resizing; TrackWidgetResizeTarget resize_target_type; void *resize_target; Track *track; int ctrl_held_at_start; GtkBox *highlight_top_box; GtkBox *highlight_bot_box; TrackWidgetHighlight highlight_loc; int selected_in_dnd; double start_x; double start_y; double last_offset_y; double last_x; double last_y; CustomButtonWidget *last_hovered_btn; int button_pressed; CustomButtonWidget *clicked_button; AutomationModeWidget *clicked_am; TrackCanvasWidget *canvas; std::vector< std::unique_ptr< CustomButtonWidget > > top_buttons; std::vector< std::unique_ptr< CustomButtonWidget > > bot_buttons; MeterWidget *meter_l; MeterWidget *meter_r; char *tooltip_text; SteadyTimePoint last_midi_out_trigger_time; int redraw; bool was_armed; cairo_t * cached_cr; cairo_surface_t *cached_surface; GtkPopoverMenu *popover_menu; GtkPopover * track_name_popover; FaderButtonsWidget *fader_buttons_for_popover;} TrackWidget
The TrackWidget is split into 3 parts.
Definition track.h:107