AUI Framework  develop
Cross-platform base for C++ UI apps
Loading...
Searching...
No Matches
APlatformAbstractionOptions Struct Reference

Defines core platform API priority and options for your application. More...

#include <AUI/Platform/linux/APlatformAbstractionOptions.h>

Classes#

struct  Adwaita1
 Uses libadwaita as core platform API, which is based on Gtk4. More...
 
struct  Gtk4
 Uses gtk4 as core platform API. More...
 
struct  X11
 Corresponds to X11 (legacy) mode. More...
 

Public Types#

using InitializationVariant = std::function<_unique<IPlatformAbstraction>()>
 

Static Public Member Functions#

static void set (APlatformAbstractionOptions options)
 
static const APlatformAbstractionOptionsget () noexcept
 
static AVector< InitializationVariant > defaultInitializationOrder ()
 

Signals and public fields#

AVector< InitializationVariant > initializationOrder = defaultInitializationOrder()
 Defines APIs to try to use (first is prioritized).
 

Detailed Description#

Linux-specific
This API is available on Linux (-based desktop OSes) only.

This API is similar to ARenderingContextOptions, but defines which core platform API to use.

Member Data Documentation#

◆ initializationOrder#

AVector<InitializationVariant> APlatformAbstractionOptions::initializationOrder = defaultInitializationOrder()

Defines a list of APIs to use. If the first API fails to initialize, the next one is probed, and so on, until a successful API initialization is found.

By default, this field is initialized as such:

    if (auto auiPa = std::getenv("AUI_PA")) {
        if (auiPa == "adw1"sv) {
            return { Adwaita1 {} };
        }
        if (auiPa == "gtk4"sv) {
            return { Gtk4 {} };
        }
        if (auiPa == "x11"sv) {
            return { X11 {} };
        }
        ALogger::err("APlatformAbstractionOptions") << "Unknown AUI_PA \"" << auiPa << "\", ignoring";
    }
    // TODO at the moment, lets deploy gtk/libadwaita support as an experimental feature, which can be enabled with AUI_PA.
    return { X11{} };
    /*
    Future order:
    AVector<APlatformAbstractionOptions::InitializationVariant> defaultOrder = {
        Gtk4{},
        X11{},
    };
    if (auto xdgCurrentDesktop = std::getenv("XDG_CURRENT_DESKTOP")) {
        if (xdgCurrentDesktop == "GNOME"sv) {
            defaultOrder.insert(defaultOrder.begin(), Adwaita1{});
        }
    }
    return defaultOrder;
     */