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.
float content_scale();
// If the window is currently focused or has mouse input
bool focused();
// Toggles fullscreen if supported on the platform.
// Otherwise this function does nothing.
void fullscreen(bool enabled);
@ -162,4 +165,10 @@ namespace Blah
// Reference to the window's back buffer
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);
}
bool App::focused()
{
return Platform::get_focused();
}
Renderer App::renderer()
{
return Graphics::renderer();
@ -284,6 +289,11 @@ const RendererFeatures& Blah::App::renderer_features()
return Graphics::features();
}
void System::open_url(const char* url)
{
Platform::open_url(url);
}
namespace
{
// 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)
{
return normalize(FilePath(a).append("/").append(b));
if (a.length() <= 0)
return normalize(b);
else if (b.length() <= 0)
return normalize(a);
else
return normalize(FilePath(a).append("/").append(b));
}

View File

@ -43,6 +43,9 @@ namespace Blah
// Sets the Application Window Position, in Screen Coordinates
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
void set_fullscreen(bool enabled);
@ -102,5 +105,8 @@ namespace Blah
// D3D11 Methods
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);
}
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)
{
if (enabled)
@ -768,4 +774,9 @@ void* Platform::d3d11_get_hwnd()
#endif
}
void Platform::open_url(const char* url)
{
SDL_OpenURL(url);
}
#endif // BLAH_PLATFORM_SDL2