26enum class RailPlatformKind
35enum class RailBandMechanism
43enum class RailDragModel
56 RailPlatformKind kind = RailPlatformKind::None;
57 bool supportsWindowPositions =
true;
58 bool supportsTransparentWindows =
true;
59 bool supportsRestack =
false;
60 RailBandMechanism band = RailBandMechanism::None;
61 RailDragModel drag = RailDragModel::None;
75[[nodiscard]]
RailEdges railEdges(uint16_t moveType);
78void railPlatformPrepareWindow(SDL_Window* window);
81bool railPlatformSetWindowRect(SDL_Window* window,
const SDL_Rect& rect);
87 void* userdata =
nullptr;
88 void (*redraw)(
void* userdata) =
nullptr;
89 void (*resize)(
void* userdata, SDL_WindowID id,
int moveType,
bool end) =
nullptr;
94bool railPlatformSetBand(SDL_Window* window,
const SDL_Rect& insets);
97bool railPlatformRestack(
const std::vector<SDL_Window*>& topToBottom);
100bool railPlatformBeginDrag(SDL_Window* window, uint16_t moveType);
103void railPlatformRunModalDrag(SDL_Window* window, uint16_t moveType);
106bool railPlatformReleaseButton(SDL_Window* window);
109bool railPlatformRaiseOwned(SDL_Window* window);
111void railPlatformEndDrag(SDL_Window* window);