Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
chord_editor_space.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: © 2019, 2022 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
9
10#ifndef __GUI_WIDGETS_CHORD_EDITOR_SPACE_H__
11#define __GUI_WIDGETS_CHORD_EDITOR_SPACE_H__
12
13#include "gui/backend/gtk_widgets/gtk_wrapper.h"
14
15#define CHORD_EDITOR_SPACE_WIDGET_TYPE (chord_editor_space_widget_get_type ())
16G_DECLARE_FINAL_TYPE (
18 chord_editor_space_widget,
19 Z,
20 CHORD_EDITOR_SPACE_WIDGET,
21 GtkBox)
22
23typedef struct _ArrangerWidget ArrangerWidget;
24typedef struct _ChordKeyWidget ChordKeyWidget;
25
31
32#define MW_CHORD_EDITOR_SPACE MW_CLIP_EDITOR_INNER->chord_editor_space
33
38typedef struct _ChordEditorSpaceWidget
39{
40 GtkBox parent_instance;
41
44
48
51 GtkBox * left_box;
52
56
58 ChordKeyWidget * chord_keys[128];
59
61 GtkBox * chord_key_boxes[128];
62
63 GtkScrolledWindow * chord_keys_scroll;
64
68
72
73int
74chord_editor_space_widget_get_chord_height (ChordEditorSpaceWidget * self);
75
76int
77chord_editor_space_widget_get_all_chords_height (ChordEditorSpaceWidget * self);
78
79void
80chord_editor_space_widget_setup (ChordEditorSpaceWidget * self);
81
85void
88 int visible);
89
90void
91chord_editor_space_widget_set_chord_keys_scroll_start_y (
93 int y);
94
95void
96chord_editor_space_widget_refresh (ChordEditorSpaceWidget * self);
97
98void
99chord_editor_space_widget_refresh_chords (ChordEditorSpaceWidget * self);
100
104
105#endif
struct _ArrangerWidget { GtkWidget parent_instance; ArrangerWidgetType type; GtkGestureDrag * drag; GtkGestureClick * click; GtkGestureClick * right_click; GtkEventControllerMotion *motion_controller; double last_offset_x; double last_offset_y; double offset_x_from_scroll; double offset_y_from_scroll; UiOverlayAction action; double start_x; double start_y; double start_pos_px; bool drag_update_started; std::unique_ptr< Position > earliest_obj_start_pos; Position fade_pos_at_start; std::unique_ptr< ArrangerObject > start_object; std::weak_ptr< ArrangerObject > prj_start_object; std::weak_ptr< ArrangerObject > hovered_object; bool start_object_was_selected; std::unique_ptr< ArrangerSelections > sel_at_start; std::unique_ptr< Region > region_at_start; std::unique_ptr< ArrangerSelections > sel_to_delete; Position start_pos; bool was_paused; Position playhead_pos_at_start; double curr_ticks_diff_from_start; double adj_ticks_diff; double last_adj_ticks_diff; Position curr_pos; Position end_pos; gboolean key_is_pressed; double hover_x; double hover_y; bool hovered; int n_press; std::shared_ptr< SnapGrid > snap_grid; int shift_held; int ctrl_held; int alt_held; gint64 last_frame_time; int visible_track_diff; int lane_diff; int visible_at_diff; int is_pinned; int resizing_range; int resizing_range_start; AutomationTrack *hovered_at; TrackLane * hovered_lane; Track * hovered_track; GdkTexture *symbolic_link_texture; GdkTexture *music_note_16th_texture; GdkTexture *fork_awesome_snowflake_texture; GdkTexture *media_playlist_repeat_texture; int region_icon_texture_size; GskRenderNode *loop_line_node; GskRenderNode *clip_start_line_node; GskRenderNode *cut_line_node; int hovered_note; int start_vel_val; int vel_diff; int hovered_chord_index; float fval_at_start; double dval_at_start; int last_playhead_px; bool redraw; graphene_rect_t last_rect; bool can_link; bool is_highlighted; GdkRectangle highlight_rect; GdkRectangle last_selection_rect; guint drag_start_btn; bool first_draw; double new_hadj_val; Transport::Display ruler_display; PangoLayoutUniquePtr vel_layout; PangoLayoutUniquePtr ap_layout; PangoLayoutUniquePtr audio_layout; PangoLayoutUniquePtr debug_layout; int queued_playhead_px; GtkPopoverMenu *popover_menu; guint unlisten_notes_timeout_id;} ArrangerWidget
A canvas widget for drawing and interacting with arranger objects.
Definition arranger.h:95
void chord_editor_space_widget_update_size_group(ChordEditorSpaceWidget *self, int visible)
See CLIP_EDITOR_INNER_WIDGET_ADD_TO_SIZEGROUP.
The piano roll widget is the whole space inside the clip editor tab when a CHORD region is selected.
GtkSizeGroup * arranger_and_keys_vsize_group
Vertical size goup for the keys and the arranger.
ChordKeyWidget * chord_keys[128]
The chord keys (see ChordEditor).
GtkBox * chord_keys_slash_arranger_box
The box dividing the chord keys and the arranger.
GtkPaned * main_top_bot_paned
The main vertical paned.
ArrangerWidget * arranger
The arranger.
GtkBox * chord_keys_box
The box wrapped inside a scroll that will host the ChordKeyWidget's.
GtkBox * chord_key_boxes[128]
Containers for each chord key.
GtkBox * left_box
The box on the left of the arranger containing the chord keys.
Piano roll note widget to be shown on the left side of the piano roll (128 of these).
Definition chord_key.h:32