Skip to content

Util ​

General utility functions.

Header: #include <asw/modules/util.h>
Namespace: asw::util

Functions ​

abort_on_error ​

cpp
[[noreturn]] void abort_on_error(const std::string& message);

Abort the program and display an error message.

get_texture_size ​

cpp
asw::Vec2<float> get_texture_size(const asw::Texture& tex);

Get the width and height of a texture as a Vec2<float>.

get_text_size ​

cpp
asw::Vec2<int> get_text_size(const asw::Font& font, std::string_view text);

Get the rendered size of a string with the given font. Results are cached. When the cache is full, the least recently used sizes are removed.

get_font_height ​

cpp
int get_font_height(const asw::Font& font);

Get the height of one line of text in a font, in pixels. Returns 0 if the font is not loaded.

open_url ​

cpp
bool open_url(const std::string& url);

Open a web page in the player's browser, e.g. a login or store page. Web builds open it in a new tab. Returns true if the browser was asked to open it.

clear_text_size_cache ​

cpp
void clear_text_size_cache();

Clear the cached text sizes. Call this when you unload fonts.

lerp ​

cpp
template <typename T>
T lerp(const T& a, const T& b, float t);

Linearly interpolate between two values. The t parameter is clamped to 0.0 - 1.0.

ParameterTypeDescription
aconst T&Start value
bconst T&End value
tfloatInterpolation factor (0.0 - 1.0)

Works with any type that supports +, -, and * with a float (e.g., float, Vec2<float>). Integer types are calculated in floating point, so a falling unsigned range does not wrap. The result is clamped to the range of the type.

Example ​

cpp
// Get texture dimensions
auto size = asw::util::get_texture_size(texture);
float width = size.x;
float height = size.y;

// Smooth interpolation
float smoothed = asw::util::lerp(current_value, target_value, 0.1f);

// Interpolate positions
asw::Vec2<float> pos = asw::util::lerp(start_pos, end_pos, progress);

Released under the MIT License.