3#include "sdl_painter/app/app_config.h"
4#include "sdl_painter/app/events.h"
5#include "sdl_painter/app/export.h"
6#include "sdl_painter/painter.h"
16namespace sdl_painter {
77 [[nodiscard]] int32_t
Width() const noexcept {
return mWidth; }
80 [[nodiscard]] int32_t
Height() const noexcept {
return mHeight; }
86 [[nodiscard]] SDL_Window*
GetWindow() const noexcept {
return mWindow; }
94 [[nodiscard]]
double Fps() const noexcept;
175 void Teardown() noexcept;
176 void ProcessEvents();
179 void UpdateDrawableSize();
182 void UpdateTitleFps(uint64_t frame_ns);
185 SDL_Window* mWindow{
nullptr};
186 std::unique_ptr<Painter> mPainter;
187 bool mRunning{
false};
188 bool mSdlInitialized{
false};
190 uint64_t mLastTickNs{0};
195 std::unique_ptr<app_detail::StatsOverlay> mStatsOverlay;
196 StatsOverlayMode mStatsMode{StatsOverlayMode::kNone};
197 uint64_t mTitleUpdateNs{0};
int32_t Height() const noexcept
Güncel çizim yüzeyi yüksekliği (framebuffer piksel).
Definition application.h:80
virtual void OnMouseWheel(const MouseWheelEvent &event)
Fare tekerleği döndü.
Definition application.h:156
double Fps() const noexcept
Yumuşatılmış kare hızı (kare/saniye).
virtual bool OnRawEvent(const SDL_Event &event)
Ham SDL olayı — kaçış kapısı.
Definition application.h:165
StatsOverlayMode GetStatsOverlay() const noexcept
Güncel gösterge modu.
Definition application.h:103
virtual void OnShutdown()
Döngü bittikten sonra bir kez çağrılır (temizlik).
Definition application.h:171
virtual void OnResize(const ResizeEvent &event)
Pencere yeniden boyutlandı.
Definition application.h:159
SDL_Window * GetWindow() const noexcept
Alttaki SDL penceresi — belgelenmiş kaçış kapısı (ileri kullanım).
Definition application.h:86
virtual void OnMouseButtonUp(const MouseButtonEvent &event)
Fare düğmesi bırakıldı.
Definition application.h:150
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:141
Application(AppConfig config={})
Verilen yapılandırma ile uygulamayı oluştur (init Run içinde).
const FrameStats & GetFrameStats() const noexcept
Son tamamlanan karenin çizim istatistikleri.
virtual void OnRender(Painter &painter)
Her frame'de çizim.
Definition application.h:123
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:135
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:109
void Quit() noexcept
Olay döngüsünden çıkışı iste (bir sonraki iterasyonda durur).
int32_t Width() const noexcept
Güncel çizim yüzeyi genişliği (framebuffer piksel).
Definition application.h:77
virtual void OnMouseMove(const MouseMoveEvent &event)
Fare hareket etti.
Definition application.h:153
void SetStatsOverlay(StatsOverlayMode mode) noexcept
Ekran üstü gösterge modunu değiştir.
Definition application.h:100
virtual bool OnInit()
Döngü başlamadan bir kez çağrılır (kaynak yükleme vb.).
Definition application.h:113
virtual void OnMouseButtonDown(const MouseButtonEvent &event)
Fare düğmesine basıldı.
Definition application.h:147
virtual void OnKeyUp(const KeyEvent &event)
Tuş bırakıldı.
Definition application.h:144
virtual void OnUpdate(float dt)
Her frame'de güncelleme — dt saniye cinsinden delta zaman.
Definition application.h:118
Ana çizim sınıfı
Definition painter.h:58
Application penceresi ve backend yapılandırması.
Definition app_config.h:43
Bir karenin çizim maliyeti — profilleme ve ekran üstü gösterim için.
Definition frame_stats.h:16
Klavye olayı.
Definition events.h:134
Fare hareketi olayı.
Definition events.h:149
Fare tekerleği olayı.
Definition events.h:157
Pencere yeniden boyutlandırma olayı.
Definition events.h:165