#pragma once
// editor_geometry.h — the shared geometry vocabulary for the VST3 editor's pure modules:
// the one concrete `Rect` (aliased from core/ui), its half-open `contains()`, and
// `OverlayArea` (the waveform band's shared overlay rect — see the contract in
// waveform_view.h). Every instrument UI module speaks these types, so they live in one
// place rather than each module reaching into core/ui separately. The Sample face's own
// layout lives in sample_bands (the band-stack allocator) and the per-band modules.

#include "core/ui/rect.h"

namespace reasampler::instrument::ui {

using Rect = ::reasampler::ui::Rect;
using ::reasampler::ui::contains;

// Distinct from Rect on purpose (no implicit Rect->OverlayArea conversion): only
// waveformOverlayArea/WaveformSurface::overlay construct one, so an overlay-only API can
// require this type and reject a lane rect at compile time instead of silently accepting it.
struct OverlayArea {
    Rect rect;
    bool operator==(const OverlayArea& o) const { return rect == o.rect; }
    bool operator!=(const OverlayArea& o) const { return !(*this == o); }
};

}  // namespace reasampler::instrument::ui
