AUI Framework  develop
Cross-platform base for C++ UI apps
Loading...
Searching...
No Matches
IPlatformAbstraction.h
    1#pragma once
    2
    3#include "AUI/Platform/AWindow.h"
    4#include "AUI/Platform/AMessageBox.h"
   39class IPlatformAbstraction {
   40public:
   41    IPlatformAbstraction();
   42    static IPlatformAbstraction& current();
   43    virtual ~IPlatformAbstraction() = default;
   44
   45    virtual void init() = 0;
   46
   47    // CURSOR
   48    virtual _<ACursor::Custom> createCustomCursor(AImageView image) = 0;
   49    virtual void applyNativeCursor(const ACursor& cursor, AWindow* pWindow) = 0;
   50
   51    // CLIPBOARD
   52    virtual void copyToClipboard(const AString& text) = 0;
   53    virtual AString pasteFromClipboard() = 0;
   54
   55
   56    // DESKTOP
   57    virtual glm::ivec2 desktopGetMousePosition() = 0;
   58    virtual void desktopSetMousePosition(glm::ivec2 pos) = 0;
   59
   60    virtual float platformGetDpiRatio() = 0;
   61
   62    // INPUT
   63    virtual AInput::Key inputFromNative(int k) = 0;
   64    virtual int inputToNative(AInput::Key key) = 0;
   65    virtual bool inputIsKeyDown(AInput::Key k) = 0;
   66
   67    // WINDOW
   68    virtual void windowSetStyle(AWindow& window, WindowStyle ws) = 0;
   69    virtual float windowFetchDpiFromSystem(AWindow& window) = 0;
   70    virtual void windowRestore(AWindow& window) = 0;
   71    virtual void windowMinimize(AWindow& window) = 0;
   72    virtual bool windowIsMinimized(AWindow& window) const = 0;
   73    virtual bool windowIsMaximized(AWindow& window) const = 0;
   74    virtual void windowMaximize(AWindow& window) = 0;
   75    virtual glm::ivec2 windowGetPosition(AWindow& window) const = 0;
   76    virtual void windowFlagRedraw(AWindow& window) = 0;
   77    virtual void windowShow(AWindow& window) = 0;
   78    virtual void windowSetSize(AWindow& window, glm::ivec2 size) = 0;
   79    virtual void windowSetGeometry(AWindow& window, int x, int y, int width, int height) = 0;
   80    virtual void windowSetIcon(AWindow& window, const AImage& image) = 0;
   81    virtual void windowHide(AWindow& window) = 0;
   82    virtual void windowManagerNotifyProcessMessages() = 0;
   83    virtual void windowManagerLoop() = 0;
   84    virtual void windowBlockUserInput(AWindow& window, bool blockUserInput) = 0;
   85    virtual void windowAllowDragNDrop(AWindow& window) = 0;
   86    virtual void windowShowTouchscreenKeyboardImpl(AWindow& window) = 0;
   87    virtual void windowHideTouchscreenKeyboardImpl(AWindow& window) = 0;
   88    virtual void windowMoveToCenter(AWindow& window) = 0;
   89    virtual void windowQuit(AWindow& window) = 0;
   90    virtual void windowAnnounceMinMaxSize(AWindow& window) = 0;
   91    virtual void windowManagerInitNativeWindow(const IRenderingContext::Init& init) = 0;
   92    virtual float windowGetDpiRatio(AWindow& window);
   93
   94    // MESSAGE BOXES
   95    virtual AMessageBox::ResultButton messageBoxShow(
   96        AWindow* parent, const AString& title, const AString& message, AMessageBox::Icon icon,
   97        AMessageBox::Button b) = 0;
   98
   99    // some helper functions to pass through visibility.
  100    static void setCurrentWindow(AWindowBase* window);
  101
  102    static bool& redrawFlag(AWindow& window) {
  103        return window.mRedrawFlag;
  104    }
  105
  106    static AWindowNativePtr& nativeHandle(AWindow& window) {
  107        return window.mHandle;
  108    }
  109
  110    static AWindow*& parentWindow(AWindow& window) {
  111        return window.mParentWindow;
  112    }
  113#if AUI_PLATFORM_LINUX
  114    static bool& wasMaximized(AWindow& window) {
  115        return window.mWasMaximized;
  116    }
  117#endif
  118};
Represents cursor type.
Definition ACursor.h:26
Non-owning read-only image representation of some format.
Definition AImageView.h:58
Owning image representation.
Definition AImage.h:25
Represents a Unicode character string.
Definition AString.h:38
Definition AWindowBase.h:33
Represents a window in the underlying windowing system.
Definition AWindow.h:45
An std::weak_ptr with AUI extensions.
Definition SharedPtrTypes.h:179
ResultButton
Button that the user has clicked.
Definition AMessageBox.h:104
Button
Specifies button(s) to be displayed.
Definition AMessageBox.h:79
Icon
Specifies icon to be displayed.
Definition AMessageBox.h:51
Definition IRenderingContext.h:38