SDLPainter 0.1.0
QPainter benzeri SDL3 + OpenGL/Vulkan 2D çizim kütüphanesi
Yüklüyor...
Arıyor...
Eşleşme Yok
application.h
1#pragma once
2
3#include "sdl_painter/app/app_config.h"
4#include "sdl_painter/app/events.h"
5#include "sdl_painter/painter.h"
6
7#include <cstdint>
8#include <memory>
9#include <string>
10
11// SDL forward declaration'ları — public başlığa SDL sızmasın.
12struct SDL_Window;
13union SDL_Event; // SDL3'te SDL_Event bir union'dır (typedef ile aynı etiket).
14
15namespace sdl_painter {
16
50 public:
52 explicit Application(AppConfig config = {});
53
55 virtual ~Application();
56
57 Application(const Application&) = delete;
58 Application& operator=(const Application&) = delete;
59 Application(Application&&) = delete;
60 Application& operator=(Application&&) = delete;
61
64 int Run();
65
67 void Quit() noexcept;
68
70 [[nodiscard]] int32_t Width() const noexcept { return mWidth; }
71
73 [[nodiscard]] int32_t Height() const noexcept { return mHeight; }
74
76 void SetTitle(const std::string& title);
77
79 [[nodiscard]] SDL_Window* GetWindow() const noexcept { return mWindow; }
80
81 protected:
83 [[nodiscard]] Painter& GetPainter() { return *mPainter; }
84
87 virtual bool OnInit() { return true; }
88
92 virtual void OnUpdate(float dt) { (void)dt; }
93
97 virtual void OnRender(Painter& painter) { (void)painter; }
98
109 virtual void OnRender(Painter& painter, float alpha) {
110 (void)alpha;
111 OnRender(painter);
112 }
113
115 virtual void OnKeyDown(const KeyEvent& event) { (void)event; }
116
118 virtual void OnKeyUp(const KeyEvent& event) { (void)event; }
119
121 virtual void OnMouseButtonDown(const MouseButtonEvent& event) { (void)event; }
122
124 virtual void OnMouseButtonUp(const MouseButtonEvent& event) { (void)event; }
125
127 virtual void OnMouseMove(const MouseMoveEvent& event) { (void)event; }
128
130 virtual void OnMouseWheel(const MouseWheelEvent& event) { (void)event; }
131
133 virtual void OnResize(const ResizeEvent& event) { (void)event; }
134
139 virtual bool OnRawEvent(const SDL_Event& event) {
140 (void)event;
141 return false;
142 }
143
145 virtual void OnShutdown() {}
146
147 private:
148 bool Initialize();
149 void Teardown() noexcept;
150 void ProcessEvents();
151
152 AppConfig mConfig;
153 SDL_Window* mWindow{nullptr};
154 std::unique_ptr<Painter> mPainter;
155 bool mRunning{false};
156 bool mSdlInitialized{false};
157 uint64_t mLastTickNs{0};
158 int32_t mWidth{0};
159 int32_t mHeight{0};
160};
161
162} // namespace sdl_painter
int32_t Height() const noexcept
Güncel pencere yüksekliği (piksel).
Definition application.h:73
virtual void OnMouseWheel(const MouseWheelEvent &event)
Fare tekerleği döndü.
Definition application.h:130
virtual bool OnRawEvent(const SDL_Event &event)
Ham SDL olayı — kaçış kapısı.
Definition application.h:139
virtual void OnShutdown()
Döngü bittikten sonra bir kez çağrılır (temizlik).
Definition application.h:145
virtual void OnResize(const ResizeEvent &event)
Pencere yeniden boyutlandı.
Definition application.h:133
SDL_Window * GetWindow() const noexcept
Alttaki SDL penceresi — belgelenmiş kaçış kapısı (ileri kullanım).
Definition application.h:79
virtual void OnMouseButtonUp(const MouseButtonEvent &event)
Fare düğmesi bırakıldı.
Definition application.h:124
virtual ~Application()
Painter → pencere → SDL_Quit sırasıyla kaynakları serbest bırakır.
virtual void OnKeyDown(const KeyEvent &event)
Tuşa basıldı.
Definition application.h:115
Application(AppConfig config={})
Verilen yapılandırma ile uygulamayı oluştur (init Run içinde).
virtual void OnRender(Painter &painter)
Her frame'de çizim.
Definition application.h:97
void SetTitle(const std::string &title)
Pencere başlığını güncelle.
virtual void OnRender(Painter &painter, float alpha)
İnterpolasyonlu çizim — alpha son sabit adımdan bu yana biriken artık zamanın oranı [0,...
Definition application.h:109
int Run()
Uygulamayı başlat ve olay döngüsünü çalıştır.
Painter & GetPainter()
Aktif Painter — yalnızca Run çalışırken (OnInit dahil) geçerli.
Definition application.h:83
void Quit() noexcept
Olay döngüsünden çıkışı iste (bir sonraki iterasyonda durur).
int32_t Width() const noexcept
Güncel pencere genişliği (piksel).
Definition application.h:70
virtual void OnMouseMove(const MouseMoveEvent &event)
Fare hareket etti.
Definition application.h:127
virtual bool OnInit()
Döngü başlamadan bir kez çağrılır (kaynak yükleme vb.).
Definition application.h:87
virtual void OnMouseButtonDown(const MouseButtonEvent &event)
Fare düğmesine basıldı.
Definition application.h:121
virtual void OnKeyUp(const KeyEvent &event)
Tuş bırakıldı.
Definition application.h:118
virtual void OnUpdate(float dt)
Her frame'de güncelleme — dt saniye cinsinden delta zaman.
Definition application.h:92
Ana çizim sınıfı — QPainter'a benzer API.
Definition painter.h:51
Application penceresi ve backend yapılandırması.
Definition app_config.h:32
Klavye olayı.
Definition events.h:134
Fare düğmesi olayı.
Definition events.h:141
Fare hareketi olayı.
Definition events.h:149
Fare tekerleği olayı.
Definition events.h:157
Pencere yeniden boyutlandırma olayı.
Definition events.h:165