added App::focused and System::open_url apis

This commit is contained in:
Noel Berry 2022-01-25 22:50:20 -08:00
parent 4620b1bd70
commit ccd02fa9ef
5 changed files with 42 additions and 1 deletions

View File

@ -149,6 +149,9 @@ namespace Blah
// macOS is usually 2.0, other platforms vary. // macOS is usually 2.0, other platforms vary.
float content_scale(); float content_scale();
// If the window is currently focused or has mouse input
bool focused();
// Toggles fullscreen if supported on the platform. // Toggles fullscreen if supported on the platform.
// Otherwise this function does nothing. // Otherwise this function does nothing.
void fullscreen(bool enabled); void fullscreen(bool enabled);
@ -162,4 +165,10 @@ namespace Blah
// Reference to the window's back buffer // Reference to the window's back buffer
extern const TargetRef backbuffer; extern const TargetRef backbuffer;
} }
namespace System
{
// Tries to open the given URL in a web browser
void open_url(const char* url);
}
} }

View File

@ -274,6 +274,11 @@ void App::fullscreen(bool enabled)
Platform::set_fullscreen(enabled); Platform::set_fullscreen(enabled);
} }
bool App::focused()
{
return Platform::get_focused();
}
Renderer App::renderer() Renderer App::renderer()
{ {
return Graphics::renderer(); return Graphics::renderer();
@ -284,6 +289,11 @@ const RendererFeatures& Blah::App::renderer_features()
return Graphics::features(); return Graphics::features();
} }
void System::open_url(const char* url)
{
Platform::open_url(url);
}
namespace namespace
{ {
// A dummy Frame Buffer that represents the Back Buffer // A dummy Frame Buffer that represents the Back Buffer

View File

@ -146,5 +146,10 @@ FilePath Path::normalize(const FilePath& path)
FilePath Path::join(const FilePath& a, const FilePath& b) FilePath Path::join(const FilePath& a, const FilePath& b)
{ {
if (a.length() <= 0)
return normalize(b);
else if (b.length() <= 0)
return normalize(a);
else
return normalize(FilePath(a).append("/").append(b)); return normalize(FilePath(a).append("/").append(b));
} }

View File

@ -43,6 +43,9 @@ namespace Blah
// Sets the Application Window Position, in Screen Coordinates // Sets the Application Window Position, in Screen Coordinates
void set_position(int x, int y); void set_position(int x, int y);
// Gets whether the Window has focus
bool get_focused();
// Sets the Window Fullscreen if enabled is not 0 // Sets the Window Fullscreen if enabled is not 0
void set_fullscreen(bool enabled); void set_fullscreen(bool enabled);
@ -102,5 +105,8 @@ namespace Blah
// D3D11 Methods // D3D11 Methods
void* d3d11_get_hwnd(); void* d3d11_get_hwnd();
// Tries to open a URL in a web browser
void open_url(const char* url);
} }
} }

View File

@ -494,6 +494,12 @@ void Platform::set_position(int x, int y)
SDL_SetWindowPosition(g_platform.window, x, y); SDL_SetWindowPosition(g_platform.window, x, y);
} }
bool Platform::get_focused()
{
auto flags = SDL_GetWindowFlags(g_platform.window);
return (flags & SDL_WINDOW_INPUT_FOCUS) != 0 && (flags & SDL_WINDOW_MINIMIZED) == 0;
}
void Platform::set_fullscreen(bool enabled) void Platform::set_fullscreen(bool enabled)
{ {
if (enabled) if (enabled)
@ -768,4 +774,9 @@ void* Platform::d3d11_get_hwnd()
#endif #endif
} }
void Platform::open_url(const char* url)
{
SDL_OpenURL(url);
}
#endif // BLAH_PLATFORM_SDL2 #endif // BLAH_PLATFORM_SDL2