SDLPainter 0.1.0
QPainter benzeri SDL3 + OpenGL/Vulkan 2D çizim kütüphanesi
Yüklüyor...
Arıyor...
Eşleşme Yok
sdl_painter::Application Sınıf Referans

SDL pencere/olay-döngüsü boilerplate'ini soyutlayan uygulama çatısı. Ayrıntılar...

#include <application.h>

Public Üye Fonksiyonlar

 Application (AppConfig config={})
 Verilen yapılandırma ile uygulamayı oluştur (init Run içinde).
virtual ~Application ()
 Painter → pencere → SDL_Quit sırasıyla kaynakları serbest bırakır.
int Run ()
 Uygulamayı başlat ve olay döngüsünü çalıştır.
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).
int32_t Height () const noexcept
 Güncel pencere yüksekliği (piksel).
void SetTitle (const std::string &title)
 Pencere başlığını güncelle.
SDL_Window * GetWindow () const noexcept
 Alttaki SDL penceresi — belgelenmiş kaçış kapısı (ileri kullanım).

Korumalı Üye Fonksiyonlar

PainterGetPainter ()
 Aktif Painter — yalnızca Run çalışırken (OnInit dahil) geçerli.
virtual bool OnInit ()
 Döngü başlamadan bir kez çağrılır (kaynak yükleme vb.).
virtual void OnUpdate (float dt)
 Her frame'de güncelleme — dt saniye cinsinden delta zaman.
virtual void OnRender (Painter &painter)
 Her frame'de çizim.
virtual void OnRender (Painter &painter, float alpha)
 İnterpolasyonlu çizim — alpha son sabit adımdan bu yana biriken artık zamanın oranı [0,1].
virtual void OnKeyDown (const KeyEvent &event)
 Tuşa basıldı.
virtual void OnKeyUp (const KeyEvent &event)
 Tuş bırakıldı.
virtual void OnMouseButtonDown (const MouseButtonEvent &event)
 Fare düğmesine basıldı.
virtual void OnMouseButtonUp (const MouseButtonEvent &event)
 Fare düğmesi bırakıldı.
virtual void OnMouseMove (const MouseMoveEvent &event)
 Fare hareket etti.
virtual void OnMouseWheel (const MouseWheelEvent &event)
 Fare tekerleği döndü.
virtual void OnResize (const ResizeEvent &event)
 Pencere yeniden boyutlandı.
virtual bool OnRawEvent (const SDL_Event &event)
 Ham SDL olayı — kaçış kapısı.
virtual void OnShutdown ()
 Döngü bittikten sonra bir kez çağrılır (temizlik).

Ayrıntılı tanımlama

SDL pencere/olay-döngüsü boilerplate'ini soyutlayan uygulama çatısı.

Kullanıcı bu sınıftan türeyip korumalı sanal metotları override eder; SDL init, pencere oluşturma, GL context, olay döngüsü, zamanlama ve yıkım tamamen çatı tarafından yönetilir.

class MyApp : public sdl_painter::Application {
public:
protected:
void OnRender(sdl_painter::Painter& p) override {
p.Clear({30, 30, 30, 255});
p.DrawCircle(400, 300, 80);
}
void OnKeyDown(const sdl_painter::KeyEvent& e) override {
if (e.key == sdl_painter::Key::kEscape) Quit();
}
};
int main() {
sdl_painter::AppConfig cfg;
cfg.title = "Demo";
MyApp app(cfg);
return app.Run();
}
SDL pencere/olay-döngüsü boilerplate'ini soyutlayan uygulama çatısı.
Definition application.h:49
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 Quit() noexcept
Olay döngüsünden çıkışı iste (bir sonraki iterasyonda durur).
Ana çizim sınıfı — QPainter'a benzer API.
Definition painter.h:51
void DrawCircle(float cx, float cy, float radius)
Daire çerçeve çiz.
void Clear(const Color &color)
Ekranı belirtilen renkle temizle.
std::string title
Pencere başlığı.
Definition app_config.h:34
Klavye olayı.
Definition events.h:134
Uyarı
Yaşam döngüsü: Türeyen sınıfın Image / Font üyeleri, temel sınıf yıkıcısı çalışmadan önce (yani içteki Painter yıkılmadan önce) yok edilir. Bu sıralama kasıtlıdır ve Painter yaşam sözleşmesini otomatik olarak sağlar — kaynakları düz üye olarak tutmak güvenlidir.

Üye Fonksiyon Dokümantasyonu

◆ OnInit()

virtual bool sdl_painter::Application::OnInit ( )
inlineprotectedvirtual

Döngü başlamadan bir kez çağrılır (kaynak yükleme vb.).

Döndürdüğü değer
false dönerse Run 1 ile çıkar.

◆ OnRawEvent()

virtual bool sdl_painter::Application::OnRawEvent ( const SDL_Event & event)
inlineprotectedvirtual

Ham SDL olayı — kaçış kapısı.

Döndürdüğü değer
true dönerse olay tüketilmiş sayılır; çeviri ve varsayılan (quit dahil) işleme atlanır. Kullanan .cpp <SDL3/SDL.h> dahil etmelidir (SDL3, sdl_painter'a PUBLIC bağlıdır).

◆ OnRender() [1/2]

virtual void sdl_painter::Application::OnRender ( Painter & painter)
inlineprotectedvirtual

Her frame'de çizim.

Not
En az bir OnRender override edilmelidir. Basit uygulamalar bu tek-argümanlı sürümü override eder.

◆ OnRender() [2/2]

virtual void sdl_painter::Application::OnRender ( Painter & painter,
float alpha )
inlineprotectedvirtual

İnterpolasyonlu çizim — alpha son sabit adımdan bu yana biriken artık zamanın oranı [0,1].

Not
Döngü her zaman bu sürümü çağırır. Varsayılanı alpha'yı yoksayarak tek-argümanlı OnRender'a delege eder — böylece mevcut kod değişmeden çalışır. TimingMode::kVariable modunda alpha daima 1.0'dır. Oyunvari uygulamalar bu sürümü override edip önceki/geçerli state arasında interpolasyon yapabilir.
Uyarı
Yalnızca bu sürümü override eden türeyen sınıflar, -Woverloaded- virtual etkinken tek-argümanlı sürümü gizlediğine dair uyarı alabilir; gerekirse using Application::OnRender; ekleyin.

◆ OnUpdate()

virtual void sdl_painter::Application::OnUpdate ( float dt)
inlineprotectedvirtual

Her frame'de güncelleme — dt saniye cinsinden delta zaman.

Not
TimingMode::kFixed modunda sabit adımla (1/fixed_update_hz) frame başına 0..N kez çağrılır; kVariable'da her frame bir kez.

◆ Run()

int sdl_painter::Application::Run ( )

Uygulamayı başlat ve olay döngüsünü çalıştır.

Döndürdüğü değer
Başarıda 0; init veya OnInit hatasında 1.

Bu sınıf için dokümantasyon aşağıdaki dosyadan üretilmiştir: