载入中...
搜索中...
未找到
UIBackend.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
5#include <SDL2/SDL.h>
6#include <cstdint>
7#include <memory>
8
9namespace eve::graphics {
10class Graphics;
11class Texture;
12}
13
14namespace eve::ui {
15
20class UIBackend {
21public:
23 virtual ~UIBackend() = default;
24
26 virtual bool init(SDL_Window *window, eve::graphics::Graphics *gfx) = 0;
28 virtual void shutdown() = 0;
30 virtual bool isInitialized() const = 0;
31
33 virtual void processEvent(const SDL_Event *event) = 0;
35 virtual void newFrame() = 0;
36
38 virtual bool wantCaptureMouse() const { return false; }
40 virtual bool wantCaptureKeyboard() const { return false; }
41
43 virtual void setScale(float /*scale*/) {}
45 virtual float getScale() const { return 1.f; }
46
52 [[nodiscard("retain the UI texture registration id or explicitly handle failure")]]
54 virtual uint64_t registerTexture(graphics::Texture * /*tex*/) {
55 return 0;
56 }
58 virtual void unregisterTexture(uint64_t /*id*/) {}
61 virtual bool textureSize(uint64_t /*id*/, int * /*w*/, int * /*h*/) const { return false; }
70 virtual void *textureHandle(uint64_t /*id*/) const { return nullptr; }
71
82 virtual bool usesQueuedTextureDraws() const { return false; }
100 virtual void queueTextureDraw(uint64_t /*id*/, float /*x*/, float /*y*/, float /*w*/, float /*h*/,
101 float /*u0*/, float /*v0*/, float /*u1*/, float /*v1*/, float /*r*/,
102 float /*g*/, float /*b*/, float /*a*/, bool /*opaque*/) {}
103};
104
106EVENGINE_API_WORLD std::unique_ptr<UIBackend> createImGuiBackend();
107
108} // namespace eve::ui
#define EVENGINE_API_WORLD
Definition Export.h:109
GPU texture created via Graphics::newTexture. Owns GPU resources through an opaque backend handle.
Definition Texture.h:18
Platform / renderer backend for declarative UI. Concrete implementations live under ui/<backend>/ (e....
Definition UIBackend.h:20
virtual void processEvent(const SDL_Event *event)=0
Process event.
virtual void unregisterTexture(uint64_t)
Unregisters texture.
Definition UIBackend.h:58
virtual void queueTextureDraw(uint64_t, float, float, float, float, float, float, float, float, float, float, float, float, bool)
Queue one textured rectangle in the current UI coordinate space.
Definition UIBackend.h:100
virtual bool wantCaptureMouse() const
Want capture mouse.
Definition UIBackend.h:38
virtual bool usesQueuedTextureDraws() const
Whether textures require the backend's ordered texture draw bridge.
Definition UIBackend.h:82
virtual bool init(SDL_Window *window, eve::graphics::Graphics *gfx)=0
Initializes .
virtual void * textureHandle(uint64_t) const
Returns an opaque backend draw handle for a registered texture.
Definition UIBackend.h:70
virtual ~UIBackend()=default
Releases UIBackend resources.
virtual bool wantCaptureKeyboard() const
Want capture keyboard.
Definition UIBackend.h:40
virtual void shutdown()=0
Shutdown.
virtual float getScale() const
Returns the scale.
Definition UIBackend.h:45
virtual uint64_t registerTexture(graphics::Texture *)
Registers texture.
Definition UIBackend.h:54
virtual bool textureSize(uint64_t, int *, int *) const
Texture size.
Definition UIBackend.h:61
virtual void setScale(float)
Scale fonts + ImGui style metrics (1 = default desktop).
Definition UIBackend.h:43
virtual bool isInitialized() const =0
True when initialized.
virtual void newFrame()=0
Creates a frame. @ownership Caller deletes unless documented otherwise.
卡牌游戏 UI 工具模块:工厂 + 脚本绑定入口。 功能参考 ycarowr/UiCard:扇形手牌布局、抽牌/洗牌、悬浮放大、拖拽到落牌区、 敌方手牌(背面/偷看)、费用不足置灰,以及可实时调节的布局...
Definition Animation.h:25
std::unique_ptr< UIBackend > createImGuiBackend()
Default backend: Dear ImGui + SDL + Vulkan (see ui/imgui/).