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

Doğru parçaları ve Bézier eğrilerinden oluşan çizim yolu. Ayrıntılar...

#include <path.h>

Public Üye Fonksiyonlar

 Path ()=default
 Varsayılan toleransla (kDefaultFlatness) boş yol.
 Path (float flatness)
 Düzleştirme toleransını belirterek boş yol oluştur.
void MoveTo (float x, float y)
 Yeni bir alt yol başlat ve imleci oraya taşı.
void MoveTo (const Point &point)
 Yeni bir alt yol başlat ve imleci oraya taşı.
void LineTo (float x, float y)
 İmleçten verilen noktaya doğru parçası ekle.
void LineTo (const Point &point)
 İmleçten verilen noktaya doğru parçası ekle.
void QuadTo (float cx, float cy, float x, float y)
 İkinci dereceden (quadratic) Bézier eğrisi ekle.
void QuadTo (const Point &control, const Point &end)
 İkinci dereceden (quadratic) Bézier eğrisi ekle.
void CubicTo (float c1x, float c1y, float c2x, float c2y, float x, float y)
 Üçüncü dereceden (cubic) Bézier eğrisi ekle.
void CubicTo (const Point &control1, const Point &control2, const Point &end)
 Üçüncü dereceden (cubic) Bézier eğrisi ekle.
void Close ()
 Yürürlükteki alt yolu kapat.
void Clear () noexcept
 Tüm alt yolları sil; tolerans korunur.
bool IsEmpty () const noexcept
 Çizilecek hiçbir parça yok mu?
Point CurrentPoint () const noexcept
 Yürürlükteki imleç konumu (yol boşsa orijin).
const std::vector< SubPath > & SubPaths () const noexcept
 Düzleştirilmiş alt yollar.
float Flatness () const noexcept
 Yürürlükteki düzleştirme toleransı (piksel).
std::size_t PointCount () const noexcept
 Bu yolun toplam nokta sayısı (tanı ve test için).

Ayrıntılı tanımlama

Doğru parçaları ve Bézier eğrilerinden oluşan çizim yolu.

QPainter'daki QPainterPath karşılığı. Yol, birbirinden bağımsız alt yollardan (SubPath) oluşur; her MoveTo yeni bir alt yol başlatır. Painter::DrawPath yolun çerçevesini, Painter::FillPath dolgusunu çizer.

Eğriler eklenirken düzleştirilir
Kontrol noktaları saklanmaz. Bir eğri eklendiği anda, Flatness toleransını sağlayacak sayıda doğru parçasına bölünür ve yalnızca sonuç noktaları tutulur. Bu, çizim yolunu basit tutar (mevcut kalın çizgi ve ear clipping tessellation'ı olduğu gibi kullanılır) ve aynı yolu birçok kez çizen kodun düzleştirme bedelini bir kez ödemesini sağlar.
Uyarı
Bunun bedeli: yol kurulduktan sonra Painter::Scale ile büyütülürse düzleştirme o ölçeğe göre yapılmadığı için eğride köşelenme görünebilir. Büyük ölçekte çizilecek bir yol, daha küçük bir Flatness değeriyle kurulmalıdır.
Dolgu ve delikler
Painter::FillPath her alt yolu bağımsız olarak doldurur; bir alt yolun diğerinin içinde kalması onu delik yapmaz (even-odd / nonzero dolgu kuralı uygulanmaz). "O" harfi gibi delikli şekiller bu sürümde doğru doldurulmaz.
path.MoveTo(20.0F, 100.0F);
path.CubicTo(60.0F, 20.0F, 140.0F, 180.0F, 180.0F, 100.0F);
painter.SetPen(sdl_painter::Pen(sdl_painter::Color::White(), 3.0F));
painter.DrawPath(path);
Doğru parçaları ve Bézier eğrilerinden oluşan çizim yolu.
Definition path.h:66
void MoveTo(float x, float y)
Yeni bir alt yol başlat ve imleci oraya taşı.
void CubicTo(float c1x, float c1y, float c2x, float c2y, float x, float y)
Üçüncü dereceden (cubic) Bézier eğrisi ekle.
Çizgi stili — renk, kalınlık ve isteğe bağlı dış kontur.
Definition pen.h:49

Constructor & Destructor Dokümantasyonu

◆ Path()

sdl_painter::Path::Path ( float flatness)
explicit

Düzleştirme toleransını belirterek boş yol oluştur.

Parametreler
flatnessAzami sapma (piksel). Pozitif değilse kDefaultFlatness kullanılır.

Üye Fonksiyon Dokümantasyonu

◆ Close()

void sdl_painter::Path::Close ( )

Yürürlükteki alt yolu kapat.

Kapanış doğrusu nokta olarak eklenmez; parça yalnızca kapalı işaretlenir ve çizim aşamasında son nokta ilkine bağlanır. Böylece kapanış köşesi de birleşim (join) alır.

Kapatmadan sonra imleç alt yolun başlangıç noktasına döner (QPainter ve SVG davranışı). Sonraki LineTo oradan devam eder ve yeni bir alt yol başlatır — kapalı bir parçaya ekleme yapılamaz.

◆ CubicTo() [1/2]

void sdl_painter::Path::CubicTo ( const Point & control1,
const Point & control2,
const Point & end )

Üçüncü dereceden (cubic) Bézier eğrisi ekle.

Font kavisleri ve vektör çizim programlarının kullandığı eğri tipi.

Parametreler
c1xBirinci kontrol noktasının x'i.
c1yBirinci kontrol noktasının y'si.
c2xİkinci kontrol noktasının x'i.
c2yİkinci kontrol noktasının y'si.
xBitiş noktasının x'i.
yBitiş noktasının y'si.

◆ CubicTo() [2/2]

void sdl_painter::Path::CubicTo ( float c1x,
float c1y,
float c2x,
float c2y,
float x,
float y )

Üçüncü dereceden (cubic) Bézier eğrisi ekle.

Font kavisleri ve vektör çizim programlarının kullandığı eğri tipi.

Parametreler
c1xBirinci kontrol noktasının x'i.
c1yBirinci kontrol noktasının y'si.
c2xİkinci kontrol noktasının x'i.
c2yİkinci kontrol noktasının y'si.
xBitiş noktasının x'i.
yBitiş noktasının y'si.

◆ IsEmpty()

bool sdl_painter::Path::IsEmpty ( ) const
nodiscardnoexcept

Çizilecek hiçbir parça yok mu?

Tek noktadan ibaret parçalar çizim üretmez ve burada da yok sayılır.

◆ LineTo() [1/2]

void sdl_painter::Path::LineTo ( const Point & point)

İmleçten verilen noktaya doğru parçası ekle.

Yol boşsa önce (x, y) noktasında örtük bir MoveTo yapılır, yani çizgi eklenmez; ilk çağrı yalnızca başlangıcı belirler.

◆ LineTo() [2/2]

void sdl_painter::Path::LineTo ( float x,
float y )

İmleçten verilen noktaya doğru parçası ekle.

Yol boşsa önce (x, y) noktasında örtük bir MoveTo yapılır, yani çizgi eklenmez; ilk çağrı yalnızca başlangıcı belirler.

◆ MoveTo() [1/2]

void sdl_painter::Path::MoveTo ( const Point & point)

Yeni bir alt yol başlat ve imleci oraya taşı.

Yürürlükteki alt yol tek noktadan ibaretse (hiç çizgi eklenmemişse) atılır — boş parça üretilmez.

◆ MoveTo() [2/2]

void sdl_painter::Path::MoveTo ( float x,
float y )

Yeni bir alt yol başlat ve imleci oraya taşı.

Yürürlükteki alt yol tek noktadan ibaretse (hiç çizgi eklenmemişse) atılır — boş parça üretilmez.

◆ QuadTo() [1/2]

void sdl_painter::Path::QuadTo ( const Point & control,
const Point & end )

İkinci dereceden (quadratic) Bézier eğrisi ekle.

Parametreler
cxKontrol noktasının x'i.
cyKontrol noktasının y'si.
xBitiş noktasının x'i.
yBitiş noktasının y'si.

◆ QuadTo() [2/2]

void sdl_painter::Path::QuadTo ( float cx,
float cy,
float x,
float y )

İkinci dereceden (quadratic) Bézier eğrisi ekle.

Parametreler
cxKontrol noktasının x'i.
cyKontrol noktasının y'si.
xBitiş noktasının x'i.
yBitiş noktasının y'si.

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