Files
reasampler/src/shell/panel/panel_layout.h
T

44 lines
2.3 KiB
C++

#pragma once
// panel_layout — the vertical-split layout STATE seam of the bank panel (Q-W2 split of
// bank_panel.h; Phase B3/B4). The panel window splits vertically — pool on top,
// named-banks region below — and two toggles collapse the split. This header carries
// that public state surface; the geometry derivation itself (toolbar/footer/menu rects,
// row/cluster builders, region rects, the L7 slot-order display bridge) is internal to
// panel_layout.cpp (see panel_state.h for the intra-panel seam).
//
// REAPER-free: main.cpp / bank_actions.cpp drive these through plain free functions.
namespace reasampler {
// The vertical-split full-height layout state (Phase B). The bank window splits
// vertically — pool on top, named-banks region below — and two toggles collapse the
// split: pool full-height (hide the named-banks region) and banks full-height (hide
// the pool). The two are mutually exclusive with the default (both regions shown),
// so one enum captures the whole state.
//
// This bit is B3-owned (the actions flip it); B4's panel RENDERS from it. It lives
// beside the tail setting — the other session-level view-layout bit the panel
// reads — NOT in the persisted ReaSamplerSession: it is a UI-layout preference, not
// project state, so it must not travel with the .rpp. In-memory for the extension's
// lifetime; resets to Split on unload.
enum class BankPanelFullHeight {
Split, // default: pool region on top, named-banks region below
PoolOnly, // pool full-height — named-banks region hidden
BanksOnly, // banks full-height — pool region hidden
};
// The current full-height layout state (default Split). READ by B4's panel to decide
// which region(s) to draw. Safe before the panel has ever opened.
BankPanelFullHeight bankPanelFullHeight();
// Toggles pool full-height: Split <-> PoolOnly. From PoolOnly returns to Split; from
// either other state (Split or BanksOnly) enters PoolOnly. Bound to the "pool
// full-height" action. Requests a repaint so an open panel reflects the change.
void bankPanelToggledPoolFullHeight();
// Toggles banks full-height: Split <-> BanksOnly, symmetric to the pool toggle.
// Bound to the "banks full-height" action. Requests a repaint.
void bankPanelToggledBanksFullHeight();
} // namespace reasampler