use crate::makepad_widgets::*; live_design! { use link::widgets::* use link::theme::* use link::shaders::* use makepad_example_ironfish::sequencer::Sequencer; use makepad_audio_widgets::display_audio::DisplayAudio; use makepad_audio_widgets::piano::Piano; SPACING_OS = 40.0; SPACING_CONTROLS = 7.5; SPACING_BASE_PADDING = 6.0; SSPACING_0 = 0.0 SSPACING_1 = 4.0 SSPACING_2 = (SSPACING_1 * 2) SSPACING_3 = (SSPACING_1 * 3) SSPACING_4 = (SSPACING_1 * 4) SPACING_0 = {top: (SSPACING_0), right: (SSPACING_0), bottom: (SSPACING_0), left: (SSPACING_0)} SPACING_1 = {top: (SSPACING_1), right: (SSPACING_1), bottom: (SSPACING_1), left: (SSPACING_1)} SPACING_2 = {top: (SSPACING_2), right: (SSPACING_2), bottom: (SSPACING_2), left: (SSPACING_2)} SPACING_3 = {top: (SSPACING_3), right: (SSPACING_3), bottom: (SSPACING_3), left: (SSPACING_3)} SPACING_4 = {top: (SSPACING_4), right: (SSPACING_4), bottom: (SSPACING_4), left: (SSPACING_4)} COLOR_CLEAR = #x3; COLOR_PLAYARROW_INNER = #xFFFDDDFF; COLOR_DOWN_OFF = #x00000000; COLOR_DOWN_1 = #x00000022; COLOR_DOWN_2 = #x00000044; COLOR_DOWN_3 = #x00000066; COLOR_DOWN_4 = #x00000088; COLOR_DOWN_5 = #x000000AA; COLOR_DOWN_FULL = #x000000FF; COLOR_UP_OFF = #xFFFFFF00; COLOR_UP_2 = #xFFFFFF11; COLOR_UP_3 = #xFFFFFF22; COLOR_UP_4 = #xFFFFFF33; COLOR_UP_5 = #xFFFFFF44; COLOR_UP_6 = #xFFFFFF66; COLOR_UP_7 = #xFFFFFF88; COLOR_UP_8 = #xFFFFFFCC; COLOR_UP_FULL = #xFFFFFFFF; GRADIENT_A = #x08221D; GRADIENT_B = #x3F3769; FONT_SIZE_H1 = 15.0; FONT_SIZE_H2 = 12.0; FONT_SIZE_H3 = 9.0; H2_TEXT_BOLD = { font_size: (FONT_SIZE_H2), font: {path: dep("crate://makepad-widgets/resources/IBMPlexSans-SemiBold.ttf")} } H2_TEXT_REGULAR = { font_size: (FONT_SIZE_H2), font: {path: dep("crate://makepad-widgets/resources/IBMPlexSans-Text.ttf")} } H3_TEXT_REGULAR = { font_size: (FONT_SIZE_H3), font: {path: dep("crate://makepad-widgets/resources/IBMPlexSans-Text.ttf")} } ICO_ARP = dep("crate://self/resources/icons/Icon_Arp.svg") ICO_BROWSE = dep("crate://self/resources/icons/Icon_Browse.svg") ICO_DOWN = dep("crate://self/resources/icons/Icon_Down.svg") ICO_FAV = dep("crate://self/resources/icons/Icon_Favorite.svg") ICO_FILTER_BP = dep("crate://self/resources/icons/Icon_Filters_BP.svg") ICO_FILTER_BR = dep("crate://self/resources/icons/Icon_Filters_BR.svg") ICO_FILTER_HP = dep("crate://self/resources/icons/Icon_Filters_HP.svg") ICO_LIVEPLAY = dep("crate://self/resources/icons/Icon_LivePlaying.svg") ICO_NEXT = dep("crate://self/resources/icons/Icon_Next.svg") ICO_OSC_HARMONIC = dep("crate://self/resources/icons/Icon_OSC_Harmonic.svg") ICO_OSC_SAW = dep("crate://self/resources/icons/Icon_OSC_Saw.svg") ICO_OSC_SINE = dep("crate://self/resources/icons/Icon_OSC_Sine.svg") ICO_OSC_SUPERSAW = dep("crate://self/resources/icons/Icon_OSC_Supersaw.svg") ICO_OSC_TRI = dep("crate://self/resources/icons/Icon_OSC_Tri.svg") ICO_PANIC = dep("crate://self/resources/icons/Icon_Panic.svg") ICO_PLAT_MOBILE = dep("crate://self/resources/icons/Icon_Platform_Mobile.svg") ICO_PLAT_DESKTOP = dep("crate://self/resources/icons/Icon_Platform_Desktop.svg") ICO_PLAY = dep("crate://self/resources/icons/Icon_Play.svg") ICO_PRESET = dep("crate://self/resources/icons/Icon_Presets.svg") ICO_PREV = dep("crate://self/resources/icons/Icon_Prev.svg") ICO_REDO = dep("crate://self/resources/icons/Icon_Redo.svg") ICO_SAVE = dep("crate://self/resources/icons/Icon_Save.svg") ICO_SEARCH = dep("crate://self/resources/icons/Icon_Search.svg") ICO_SEQ_SWEEP = dep("crate://self/resources/icons/Icon_Seq_Sweep.svg") ICO_SEQ = dep("crate://self/resources/icons/Icon_Seq.svg") ICO_SETTINGS = dep("crate://self/resources/icons/Icon_Settings.svg") ICO_SHARE = dep("crate://self/resources/icons/Icon_Share.svg") ICO_UP = dep("crate://self/resources/icons/Icon_Up.svg") // WIDGETS DividerX = { width: Fit, height: Fill, margin: {top: 2.5, right: 1.0, bottom: 2.5, left: 1.0} flow: Right { width: 4.0, height: Fill draw_bg: {color: (COLOR_UP_2)} } } DividerY = { width: Fill, height: Fit, margin: {top: (SPACING_BASE_PADDING), right: (SPACING_BASE_PADDING), bottom: (SPACING_BASE_PADDING), left: (SPACING_BASE_PADDING)} flow: Down { width: Fill, height: 1.0 draw_bg: {color: (COLOR_DOWN_5)} } } FillerX = { width: Fill, height: Fit } FillerY = { width: Fit, height: 10 draw_bg: {color: #f00} } ElementBox = { width: Fill, height: Fit flow: Down, padding: {left: (SPACING_CONTROLS), top: (SPACING_CONTROLS), bottom: (SPACING_CONTROLS), right: (SPACING_CONTROLS)} spacing: (SPACING_CONTROLS) } FishPanelContainer = { flow: Down width: Fill, height: Fit } FishTab = { height: Fill, width: Fit align: {x: 0.0, y: 0.5} draw_radio: { radio_type: Tab, color_inactive: (COLOR_UP_OFF), } draw_text: { color: (COLOR_UP_6), color_active: (COLOR_UP_FULL), color_hover: (COLOR_UP_6), text_style: {} } } FishDropDown = { width: Fit padding: {top: (SPACING_BASE_PADDING), right: 18.0, bottom: (SPACING_BASE_PADDING), left: (SPACING_BASE_PADDING)} draw_text: { text_style: {}, fn get_color(self) -> vec4 { return mix( mix( (COLOR_UP_6), (COLOR_UP_6), self.focus ), (COLOR_UP_6), self.pressed ) } } popup_menu: { menu_item: { indent_width: 10.0 width: Fit, height: Fit padding: {left: 15, top: 5, bottom: 5, right: 15 } } } draw_bg: { fn get_bg(self, inout sdf: Sdf2d) { sdf.box( 1, 1, self.rect_size.x - 2, self.rect_size.y - 2, 3 ) sdf.stroke_keep( mix((COLOR_UP_OFF), (COLOR_UP_OFF), pow(self.pos.y, .25)), 1. ); sdf.fill((COLOR_UP_OFF)); } } } FishButton =