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

Dolgu stili — düz renk veya gradient. Ayrıntılar...

#include <brush.h>

Public Üye Fonksiyonlar

 Brush ()=default
 Varsayılan fırça: siyah, tam opak.
 Brush (const Color &color)
 Renk ile fırça oluştur.
BrushType GetType () const noexcept
 Fırçanın dolgu türü.
bool IsGradient () const noexcept
 Gradient mi? (düz renk değil).
const ColorGetColor2 () const noexcept
 Gradient bitiş rengi (düz fırçada anlamsız).
const PointGetStart () const noexcept
 Doğrusal gradientte başlangıç, ışınsalda merkez.
const PointGetEnd () const noexcept
 Doğrusal gradientte bitiş noktası.
float GetRadius () const noexcept
 Işınsal gradientte yarıçap.
const ColorGetColor () const noexcept
 Dolgu rengini döndür.
void SetColor (const Color &color) noexcept
 Dolgu rengini ayarla.
bool IsVisible () const noexcept
 Fırça görünür mü? (alpha > 0).

Statik Public Üye Fonksiyonlar

static Brush LinearGradient (const Point &start, const Point &end, const Color &from, const Color &to) noexcept
 Doğrusal gradient fırça.
static Brush RadialGradient (const Point &center, float radius, const Color &from, const Color &to) noexcept
 Işınsal gradient fırça.
static Brush NoBrush () noexcept
 Şeffaf (dolgu yapmayan) fırça.

Ayrıntılı tanımlama

Dolgu stili — düz renk veya gradient.

Gradient shader gerektirmez. Vertex'ler zaten renk taşıyor (batch'leme bunun için yapıldı), bu yüzden geçiş tessellation sırasında köşe renkleri hesaplanarak üretilir ve enterpolasyonu donanım yapar. Sonuç: gradient hiçbir backend değişikliği gerektirmez ve batch'i kırmaz — opaklığın aksine.

Bunun bedeli, geçişin şeklin köşe yoğunluğu kadar hassas olmasıdır: iki üçgenden ibaret bir dikdörtgende doğrusal geçiş kusursuzdur (tam da donanımın enterpole ettiği şey), ama az segmentli bir şekilde ışınsal geçiş bantlanabilir. Daire ve elips segment sayısı yarıçapa göre uyarlandığı için pratikte sorun çıkarmaz.

Gradient koordinatları çizim koordinatlarıyla aynı uzaydadır (şekil yerel), yani transform yığınından etkilenir — Qt'nin QLinearGradient davranışı gibi.

Üye Fonksiyon Dokümantasyonu

◆ IsVisible()

bool sdl_painter::Brush::IsVisible ( ) const
inlinenodiscardnoexcept

Fırça görünür mü? (alpha > 0).

Fırça görünür mü?

Gradient'te iki uçtan biri bile opaksa görünürdür; yalnızca başlangıç rengine bakmak, saydamdan opağa giden bir geçişi yanlışlıkla görünmez sayardı.

◆ LinearGradient()

Brush sdl_painter::Brush::LinearGradient ( const Point & start,
const Point & end,
const Color & from,
const Color & to )
inlinestaticnodiscardnoexcept

Doğrusal gradient fırça.

Renk start noktasında from, end noktasında to olur; aradaki değerler bu iki nokta arasındaki izdüşüme göre enterpole edilir. Çizgiye dik yönde renk sabittir.

Parametreler
startGeçişin başladığı nokta (çizim koordinatı).
endGeçişin bittiği nokta. start ile aynıysa fırça düz from rengine döner (sıfıra bölme yok).

◆ RadialGradient()

Brush sdl_painter::Brush::RadialGradient ( const Point & center,
float radius,
const Color & from,
const Color & to )
inlinestaticnodiscardnoexcept

Işınsal gradient fırça.

Renk merkezde from, radius uzaklığında to olur; ötesi to ile doldurulur.

Parametreler
radiusYarıçap. Pozitif değilse fırça düz from rengine döner.

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