3#include "sdl_painter/brush.h"
4#include "sdl_painter/color.h"
5#include "sdl_painter/font.h"
6#include "sdl_painter/geometry.h"
7#include "sdl_painter/pen.h"
8#include "sdl_painter/renderer.h"
24namespace sdl_painter {
54 Painter(SDL_Window* window, RendererBackend backend);
64 [[nodiscard]]
bool IsValid() const noexcept {
return mRenderer !=
nullptr; }
96 void DrawLine(
float x1,
float y1,
float x2,
float y2);
99 void DrawRect(
float x,
float y,
float w,
float h);
135 const Rect& dest_rect);
140 void DrawText(
float x,
float y,
const std::string& text);
144 Alignment alignment = Alignment::kLeft);
176 void UpdateProjection();
179 void FlushTransform();
184 void ApplyScissor(
const Rect& rect);
186 [[nodiscard]]
bool CanDrawPen() const noexcept {
187 return mRenderer && mBatcher && mCurrentState.pen.IsVisible();
189 [[nodiscard]]
bool CanDrawBrush() const noexcept {
190 return mRenderer && mBatcher && mCurrentState.brush.
IsVisible();
193 SDL_Window* mWindow{
nullptr};
195 std::unique_ptr<IRenderer> mRenderer;
196 std::unique_ptr<RenderBatcher> mBatcher;
197 std::vector<RenderState> mStateStack;
198 RenderState mCurrentState;
199 std::shared_ptr<Font> mCurrentFont;
201 int32_t mViewportWidth{0};
202 int32_t mViewportHeight{0};
Dolgu stili — renk tabanlı düz dolgu.
Definition brush.h:8
bool IsVisible() const noexcept
Fırça görünür mü? (alpha > 0).
Definition brush.h:23
Backend-agnostik soyut renderer arayüzü.
Definition renderer.h:32
Yüklenmiş görüntü — texture sarmalayıcı.
Definition image.h:25
void DrawPolygon(const std::vector< Point > &points)
Çok kenarlı kapalı şeklin çerçevesini çiz.
void ClearClip()
Kırpma dikdörtgenini kaldır.
void SetBrush(const Brush &brush)
Aktif fırçayı ayarla (dolgu rengi).
void Translate(float dx, float dy)
Öteleme uygula.
void Begin()
Frame başlangıcı — her frame başında çağrılmalı.
void End()
Frame sonu — her frame sonunda çağrılmalı, ekrana sunar.
void DrawPolyline(const std::vector< Point > &points)
Açık çizgi dizisi çiz.
void DrawEllipse(float cx, float cy, float rx, float ry)
Elips çerçeve çiz.
void Restore()
Son kaydedilen durumu geri yükle.
void Save()
Mevcut render durumunu stack'e kaydet.
void DrawText(const Rect &rect, const std::string &text, Alignment alignment=Alignment::kLeft)
Dikdörtgen içine hizalanmış metin çiz.
void SetOpacity(float alpha)
Global opaklığı ayarla [0.0, 1.0].
void DrawCircle(float cx, float cy, float radius)
Daire çerçeve çiz.
void ResetTransform()
Transform'u birim matrise sıfırla.
void Clear(const Color &color)
Ekranı belirtilen renkle temizle.
Painter(SDL_Window *window, RendererBackend backend)
Belirtilen pencere ve backend ile Painter oluştur.
void SetClipRect(const Rect &rect)
Scissor kırpma dikdörtgeni ayarla.
void FillPolygon(const std::vector< Point > &points)
Çok kenarlıyı doldur (ear clipping tessellation).
void SetPen(const Pen &pen)
Aktif kalemi ayarla (çizgi rengi ve kalınlığı).
void Scale(float sx, float sy)
Ölçekleme uygula.
void DrawLine(float x1, float y1, float x2, float y2)
İki nokta arasına çizgi çiz.
void DrawImage(const Image &image, float x, float y)
Görüntüyü orijinal boyutuyla çiz.
void FillCircle(float cx, float cy, float radius)
Daireyi doldur.
bool IsValid() const noexcept
Renderer başarıyla başlatıldı mı?
Definition painter.h:64
void FillRect(float x, float y, float w, float h)
Dikdörtgeni doldur.
void DrawImage(const Image &image, const Rect &src_rect, const Rect &dest_rect)
Görüntünün kaynak dikdörtgenini hedef dikdörtgene çiz.
void FillEllipse(float cx, float cy, float rx, float ry)
Elipsi doldur.
void DrawText(float x, float y, const std::string &text)
Noktaya metin çiz.
void DrawRect(float x, float y, float w, float h)
Dikdörtgen çerçeve çiz (dolgu yok).
void DrawImage(const Image &image, const Rect &dest_rect)
Görüntüyü hedef dikdörtgene ölçekleyerek çiz.
void SetFont(std::shared_ptr< Font > font)
Aktif fontu ayarla (Phase 4).
void Rotate(float angle_degrees)
Döndürme uygula (derece).
Çizgi stili — renk, kalınlık ve isteğe bağlı dış kontur.
Definition pen.h:8
RGBA renk temsili. Her kanal [0, 255] aralığında.
Definition color.h:8
2D dikdörtgen — sol üst köşe + genişlik/yükseklik.
Definition geometry.h:34
Aktif render durumu — transform stack elemanı.
Definition painter.h:31
glm::mat3 transform
3x3 affine dönüşüm (column-major, birim).
Definition painter.h:32