Divide Framework 0.1
A free and open-source 3D Framework under heavy development
Loading...
Searching...
No Matches
Divide::WindowManager Class Referencefinal

#include <WindowManager.h>

+ Inheritance diagram for Divide::WindowManager:

Classes

struct  MonitorData
 

Public Member Functions

 WindowManager () noexcept
 
 ~WindowManager ()
 
void hideAll () noexcept
 
DisplayWindowcreateWindow (const WindowDescriptor &descriptor, ErrorCode &err)
 
bool destroyWindow (DisplayWindow *&window)
 
void drawToWindow (DisplayWindow &window)
 
void flushWindow ()
 
void toggleFullScreen () const
 
void increaseResolution ()
 
void decreaseResolution ()
 
void stepResolution (bool increment)
 
bool setCursorPosition (I32 x, I32 y) noexcept
 
void snapCursorToCenter ()
 
DisplayWindowgetFocusedWindow () noexcept
 
const DisplayWindowgetFocusedWindow () const noexcept
 
DisplayWindowgetHoveredWindow () noexcept
 
const DisplayWindowgetHoveredWindow () const noexcept
 
DisplayWindowgetWindow (I64 guid)
 
const DisplayWindowgetWindow (I64 guid) const
 
DisplayWindowgetWindow (U32 index)
 
const DisplayWindowgetWindow (U32 index) const
 
DisplayWindowgetWindowByID (U32 ID) noexcept
 
const DisplayWindowgetWindowByID (U32 ID) const noexcept
 
const vector< MonitorData > & monitorData () const noexcept
 
DisplayWindowactiveWindow () const noexcept
 
size_t pushActiveWindow (DisplayWindow *window)
 Returns the total number of active windows after the push.
 
size_t popActiveWindow ()
 Returns the remaining number of windows after the pop.
 
 POINTER_R (DisplayWindow, mainWindow, nullptr)
 

Static Public Member Functions

static bool SetGlobalCursorPosition (I32 x, I32 y) noexcept
 
static vec2< I32GetCursorPosition () noexcept
 
static vec2< I32GetGlobalCursorPosition () noexcept
 
static U32 GetMouseState (vec2< I32 > &pos, bool global) noexcept
 
static void SetCaptureMouse (bool state) noexcept
 
static vec2< U16GetFullscreenResolution () noexcept
 
static void CaptureMouse (bool state) noexcept
 
static void SetCursorStyle (CursorStyle style)
 
static void ToggleRelativeMouseMode (bool state) noexcept
 
static bool IsRelativeMouseMode () noexcept
 

Protected Member Functions

ErrorCode init (PlatformContext &context, RenderAPI renderingAPI, vec2< I16 > initialPosition, vec2< U16 > initialSize, WindowMode windowMode, I32 targetDisplayIndex)
 
void close ()
 

Static Protected Member Functions

static ErrorCode ConfigureAPISettings (const PlatformContext &context, const WindowDescriptor &descriptor)
 
static ErrorCode ApplyAPISettings (const PlatformContext &context, RenderAPI api, DisplayWindow *targetWindow, DisplayWindow *activeWindow)
 
static void DestroyAPISettings (DisplayWindow *window) noexcept
 

Protected Attributes

I64 _mainWindowGUID { -1 }
 
std::pair< vec2< U16 >, bool > _resolutionChangeQueued
 
PlatformContext_context { nullptr }
 
vector< MonitorData_monitors
 
vector< std::unique_ptr< DisplayWindow > > _windows
 
eastl::stack< DisplayWindow * > _activeWindows
 

Static Protected Attributes

static SDL_DisplayMode s_mainDisplayMode
 
static std::array< SDL_Cursor *, to_base(CursorStyle::COUNT)> s_cursors = create_array<to_base(CursorStyle::COUNT), SDL_Cursor*>(nullptr)
 

Friends

class Application
 
class DisplayWindow
 

Additional Inherited Members

- Private Member Functions inherited from Divide::NonCopyable
 NonCopyable (const NonCopyable &)=delete
 
NonCopyableoperator= (const NonCopyable &)=delete
 
 NonCopyable (NonCopyable &&)=default
 
NonCopyableoperator= (NonCopyable &&)=default
 
 NonCopyable ()=default
 
 ~NonCopyable ()=default
 

Detailed Description

Definition at line 53 of file WindowManager.h.

Constructor & Destructor Documentation

◆ WindowManager()

Divide::WindowManager::WindowManager ( )
noexcept

Definition at line 63 of file WindowManager.cpp.

◆ ~WindowManager()

Divide::WindowManager::~WindowManager ( )

Definition at line 67 of file WindowManager.cpp.

Member Function Documentation

◆ activeWindow()

DisplayWindow * Divide::WindowManager::activeWindow ( ) const
inlinenoexcept

Definition at line 63 of file WindowManager.inl.

◆ ApplyAPISettings()

ErrorCode Divide::WindowManager::ApplyAPISettings ( const PlatformContext context,
RenderAPI  api,
DisplayWindow targetWindow,
DisplayWindow activeWindow 
)
staticprotected

Definition at line 489 of file WindowManager.cpp.

◆ CaptureMouse()

void Divide::WindowManager::CaptureMouse ( bool  state)
staticnoexcept

Definition at line 668 of file WindowManager.cpp.

◆ close()

void Divide::WindowManager::close ( )
protected

Definition at line 213 of file WindowManager.cpp.

◆ ConfigureAPISettings()

ErrorCode Divide::WindowManager::ConfigureAPISettings ( const PlatformContext context,
const WindowDescriptor descriptor 
)
staticprotected

Definition at line 427 of file WindowManager.cpp.

◆ createWindow()

DisplayWindow * Divide::WindowManager::createWindow ( const WindowDescriptor descriptor,
ErrorCode err 
)

Definition at line 233 of file WindowManager.cpp.

◆ decreaseResolution()

void Divide::WindowManager::decreaseResolution ( )

Definition at line 616 of file WindowManager.cpp.

◆ DestroyAPISettings()

void Divide::WindowManager::DestroyAPISettings ( DisplayWindow window)
staticprotectednoexcept

Definition at line 409 of file WindowManager.cpp.

◆ destroyWindow()

bool Divide::WindowManager::destroyWindow ( DisplayWindow *&  window)

Definition at line 384 of file WindowManager.cpp.

◆ drawToWindow()

void Divide::WindowManager::drawToWindow ( DisplayWindow window)

Definition at line 548 of file WindowManager.cpp.

◆ flushWindow()

void Divide::WindowManager::flushWindow ( )

Definition at line 573 of file WindowManager.cpp.

◆ GetCursorPosition()

vec2< I32 > Divide::WindowManager::GetCursorPosition ( )
staticnoexcept

Definition at line 738 of file WindowManager.cpp.

◆ getFocusedWindow() [1/2]

const DisplayWindow * Divide::WindowManager::getFocusedWindow ( ) const
inlinenoexcept

Definition at line 93 of file WindowManager.inl.

◆ getFocusedWindow() [2/2]

DisplayWindow * Divide::WindowManager::getFocusedWindow ( )
inlinenoexcept

Definition at line 80 of file WindowManager.inl.

◆ GetFullscreenResolution()

vec2< U16 > Divide::WindowManager::GetFullscreenResolution ( )
staticnoexcept

Definition at line 72 of file WindowManager.cpp.

◆ GetGlobalCursorPosition()

vec2< I32 > Divide::WindowManager::GetGlobalCursorPosition ( )
staticnoexcept

Definition at line 731 of file WindowManager.cpp.

◆ getHoveredWindow() [1/2]

const DisplayWindow * Divide::WindowManager::getHoveredWindow ( ) const
inlinenoexcept

Definition at line 119 of file WindowManager.inl.

◆ getHoveredWindow() [2/2]

DisplayWindow * Divide::WindowManager::getHoveredWindow ( )
inlinenoexcept

Definition at line 106 of file WindowManager.inl.

◆ GetMouseState()

U32 Divide::WindowManager::GetMouseState ( vec2< I32 > &  pos,
bool  global 
)
staticnoexcept

Definition at line 745 of file WindowManager.cpp.

◆ getWindow() [1/4]

DisplayWindow & Divide::WindowManager::getWindow ( I64  guid)
inline

Definition at line 37 of file WindowManager.inl.

◆ getWindow() [2/4]

const DisplayWindow & Divide::WindowManager::getWindow ( I64  guid) const
inline

Definition at line 50 of file WindowManager.inl.

◆ getWindow() [3/4]

DisplayWindow & Divide::WindowManager::getWindow ( U32  index)
inline

Definition at line 132 of file WindowManager.inl.

◆ getWindow() [4/4]

const DisplayWindow & Divide::WindowManager::getWindow ( U32  index) const
inline

Definition at line 138 of file WindowManager.inl.

◆ getWindowByID() [1/2]

const DisplayWindow * Divide::WindowManager::getWindowByID ( U32  ID) const
inlinenoexcept

Definition at line 157 of file WindowManager.inl.

◆ getWindowByID() [2/2]

DisplayWindow * Divide::WindowManager::getWindowByID ( U32  ID)
inlinenoexcept

Definition at line 144 of file WindowManager.inl.

◆ hideAll()

void Divide::WindowManager::hideAll ( )
noexcept

Definition at line 772 of file WindowManager.cpp.

◆ increaseResolution()

void Divide::WindowManager::increaseResolution ( )

Definition at line 611 of file WindowManager.cpp.

◆ init()

ErrorCode Divide::WindowManager::init ( PlatformContext context,
RenderAPI  renderingAPI,
vec2< I16 initialPosition,
vec2< U16 initialSize,
WindowMode  windowMode,
I32  targetDisplayIndex 
)
protected

Definition at line 77 of file WindowManager.cpp.

◆ IsRelativeMouseMode()

bool Divide::WindowManager::IsRelativeMouseMode ( )
staticnoexcept

Definition at line 726 of file WindowManager.cpp.

◆ monitorData()

const vector< WindowManager::MonitorData > & Divide::WindowManager::monitorData ( ) const
inlinenoexcept

Definition at line 170 of file WindowManager.inl.

◆ POINTER_R()

Divide::WindowManager::POINTER_R ( DisplayWindow  ,
mainWindow  ,
nullptr   
)

◆ popActiveWindow()

size_t Divide::WindowManager::popActiveWindow ( )
inline

Returns the remaining number of windows after the pop.

Definition at line 74 of file WindowManager.inl.

◆ pushActiveWindow()

size_t Divide::WindowManager::pushActiveWindow ( DisplayWindow window)
inline

Returns the total number of active windows after the push.

Definition at line 68 of file WindowManager.inl.

◆ SetCaptureMouse()

void Divide::WindowManager::SetCaptureMouse ( bool  state)
staticnoexcept

Definition at line 755 of file WindowManager.cpp.

◆ setCursorPosition()

bool Divide::WindowManager::setCursorPosition ( I32  x,
I32  y 
)
noexcept

Definition at line 673 of file WindowManager.cpp.

◆ SetCursorStyle()

void Divide::WindowManager::SetCursorStyle ( CursorStyle  style)
static

Definition at line 710 of file WindowManager.cpp.

◆ SetGlobalCursorPosition()

bool Divide::WindowManager::SetGlobalCursorPosition ( I32  x,
I32  y 
)
staticnoexcept

Definition at line 695 of file WindowManager.cpp.

◆ snapCursorToCenter()

void Divide::WindowManager::snapCursorToCenter ( )

Definition at line 760 of file WindowManager.cpp.

◆ stepResolution()

void Divide::WindowManager::stepResolution ( bool  increment)

Definition at line 621 of file WindowManager.cpp.

◆ toggleFullScreen()

void Divide::WindowManager::toggleFullScreen ( ) const

Definition at line 593 of file WindowManager.cpp.

◆ ToggleRelativeMouseMode()

void Divide::WindowManager::ToggleRelativeMouseMode ( bool  state)
staticnoexcept

Definition at line 720 of file WindowManager.cpp.

Friends And Related Function Documentation

◆ Application

friend class Application
friend

Definition at line 124 of file WindowManager.h.

◆ DisplayWindow

friend class DisplayWindow
friend

Definition at line 137 of file WindowManager.h.

Member Data Documentation

◆ _activeWindows

eastl::stack<DisplayWindow*> Divide::WindowManager::_activeWindows
protected

Definition at line 150 of file WindowManager.h.

◆ _context

PlatformContext* Divide::WindowManager::_context { nullptr }
protected

Definition at line 145 of file WindowManager.h.

◆ _mainWindowGUID

I64 Divide::WindowManager::_mainWindowGUID { -1 }
protected

Definition at line 143 of file WindowManager.h.

◆ _monitors

vector<MonitorData> Divide::WindowManager::_monitors
protected

Definition at line 146 of file WindowManager.h.

◆ _resolutionChangeQueued

std::pair<vec2<U16>, bool> Divide::WindowManager::_resolutionChangeQueued
protected

Definition at line 144 of file WindowManager.h.

◆ _windows

vector<std::unique_ptr<DisplayWindow> > Divide::WindowManager::_windows
protected

Definition at line 147 of file WindowManager.h.

◆ s_cursors

std::array< SDL_Cursor *, to_base(CursorStyle::COUNT)> Divide::WindowManager::s_cursors = create_array<to_base(CursorStyle::COUNT), SDL_Cursor*>(nullptr)
staticprotected

Definition at line 149 of file WindowManager.h.

◆ s_mainDisplayMode

SDL_DisplayMode Divide::WindowManager::s_mainDisplayMode
staticprotected

Definition at line 148 of file WindowManager.h.


The documentation for this class was generated from the following files: