module d2d.window.windowflags;

import d2d;

/// Window creation flags.
enum WindowFlags : SDL_WindowFlags
{
	/// Fullscreen window with custom resolution.
	Fullscreen     = SDL_WINDOW_FULLSCREEN,
	/// Fullscreen window without automatic resolution.
	FullscreenAuto = SDL_WINDOW_FULLSCREEN_DESKTOP,
	/// Directly show the window without calling `show();`
	Shown          = SDL_WINDOW_SHOWN,
	/// Window is hidden by default and needs to be shown by `show();`
	Hidden         = SDL_WINDOW_HIDDEN,
	/// Window has no border or title bar.
	Borderless     = SDL_WINDOW_BORDERLESS,
	/// Window is resizable.
	Resizable      = SDL_WINDOW_RESIZABLE,
	/// Window is initially started in minimized mode.
	Minimized      = SDL_WINDOW_MINIMIZED,
	/// Window is initially started in maximized mode.
	Maximized      = SDL_WINDOW_MAXIMIZED,
	/// Window directly gains input and mouse focus on startup.
	Focused        = SDL_WINDOW_INPUT_FOCUS | SDL_WINDOW_MOUSE_FOCUS,
	/// Window allows high DPI monitors.
	HighDPI        = SDL_WINDOW_ALLOW_HIGHDPI,
	/// Combination of `Shown | Focused`
	Default        = Shown | Focused,
}

unittest
{
	assert((WindowFlags.Default | WindowFlags.HighDPI) == (WindowFlags.Shown | WindowFlags.Focused | WindowFlags.HighDPI));
}