render

package
v0.18.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 25, 2026 License: MIT Imports: 8 Imported by: 0

Documentation

Overview

Package render contém o backend de renderização do JUIGo.

A renderização do JUIGo é feita por software (CPU) sobre um *image.RGBA; o OpenGL é usado exclusivamente como mecanismo de apresentação: o buffer vira uma textura que é desenhada em um quad cobrindo a janela inteira. Este pacote também oferece as primitivas de desenho (ver draw.go).

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Clip

func Clip(dst *image.RGBA, r image.Rectangle, out *image.RGBA) *image.RGBA

Clip preenche out com uma VISÃO de dst recortada a r — mesmos pixels, sem cópia e sem alocação (out é um scratch reutilizável, normalmente um campo do widget) — e a devolve. Desenhar na visão não alcança nada fora de r, pois todas as primitivas recortam contra os bounds do destino. Semântica idêntica à de image.RGBA.SubImage.

func CrossFade added in v0.11.0

func CrossFade(dst *image.RGBA, a, b *image.RGBA, r image.Rectangle, t float64)

CrossFade preenche a região r de dst com a mistura linear entre a e b: t=0 copia a, t=1 copia b, valores intermediários fundem os dois canal a canal. a e b devem estar ALINHADOS a dst (mesmo sistema de coordenadas — como os snapshots do Navigator, criados com os bounds do widget); a região é recortada à interseção dos três. É a base da transição de fade entre telas. Não aloca.

func DrawText

func DrawText(dst *image.RGBA, face font.Face, s string, dot image.Point, c color.RGBA)

DrawText desenha s em dst com a face dada, com a origem da baseline em dot e cor c. O texto não é recortado além dos limites de dst.

func FillCircle

func FillCircle(dst *image.RGBA, c image.Point, r int, col color.RGBA)

FillCircle preenche o círculo de centro c e raio r (em pixels), sobrescrevendo como FillRect, com antialiasing na borda: os pixels do traço do arco misturam a cor com o conteúdo já desenhado em dst (rampa de 1px de cobertura) — desenhe o fundo antes. O miolo de cada linha é preenchido em faixa cheia. Não aloca.

func FillRect

func FillRect(dst *image.RGBA, r image.Rectangle, c color.RGBA)

FillRect preenche o retângulo r de dst com a cor sólida c, sem blending. A área é recortada para os limites de dst. Não aloca.

func FillRectOver

func FillRectOver(dst *image.RGBA, r image.Rectangle, c color.RGBA)

FillRectOver preenche r com a cor c APLICANDO blending alfa (src-over) — ao contrário de FillRect, que sobrescreve. A cor é interpretada com alfa NÃO pré-multiplicado (straight): informe R/G/B plenos e A com a opacidade; a pré-multiplicação exigida pelo draw.Over da stdlib acontece aqui dentro. Usa o caminho rápido da stdlib; não aloca.

func FillRoundRect

func FillRoundRect(dst *image.RGBA, r image.Rectangle, radius int, c color.RGBA)

FillRoundRect preenche r com a cor c e cantos arredondados de raio radius (em pixels), sobrescrevendo como FillRect; nos arcos dos cantos o traço é suavizado (antialiasing) misturando c com o conteúdo já desenhado em dst — desenhe o fundo antes. radius <= 0 equivale exatamente a FillRect (é o que preserva o visual clássico com Theme.Radius zero); raios maiores do que cabe no retângulo são reduzidos à metade do menor lado. Não aloca.

func FillRoundRectOver

func FillRoundRectOver(dst *image.RGBA, r image.Rectangle, radius int, c color.RGBA)

FillRoundRectOver é FillRoundRect com blending alfa (src-over) em toda a área, como FillRectOver: a cor é interpretada com alfa straight e a pré-multiplicação acontece aqui dentro; nos arcos a cobertura do canto multiplica o alfa. radius <= 0 equivale exatamente a FillRectOver. Não aloca.

func MeasureText

func MeasureText(face font.Face, s string) int

MeasureText devolve a largura de s em pixels para a face dada. É a base de Theme.MeasureString, a única fonte de verdade para largura de texto.

func StrokeCircle

func StrokeCircle(dst *image.RGBA, c image.Point, r, w int, col color.RGBA)

StrokeCircle desenha um anel (contorno de círculo) com a espessura dada e antialiasing nos dois arcos — a versão vazada do FillCircle. Não aloca.

func StrokeLine added in v0.17.0

func StrokeLine(dst *image.RGBA, a, b image.Point, w int, col color.RGBA)

StrokeLine desenha o segmento de a a b com espessura w (pixels), antialiasing nas bordas e pontas redondas. As coordenadas são CENTROS de pixel: uma linha horizontal de espessura 1 acende exatamente a linha dos pontos, sem meio-tom — eixos de gráfico saem nítidos e diagonais saem suaves. A varredura anda pelo eixo maior do segmento com uma janela perpendicular estreita (custo ~comprimento × espessura). Não aloca.

func StrokePolyline added in v0.17.0

func StrokePolyline(dst *image.RGBA, pts []image.Point, w int, col color.RGBA)

StrokePolyline liga os pontos na sequência com StrokeLine — a base das séries de gráficos. Nas juntas os caps redondos se sobrepõem (com cor opaca, invisível; com alfa parcial, a junta escurece de leve — limitação documentada). Não aloca.

func StrokeRect

func StrokeRect(dst *image.RGBA, r image.Rectangle, w int, c color.RGBA)

StrokeRect desenha o contorno do retângulo r com espessura w (em pixels), por dentro dos limites de r. Não aloca.

func StrokeRoundRect

func StrokeRoundRect(dst *image.RGBA, r image.Rectangle, radius, w int, c color.RGBA)

StrokeRoundRect desenha o contorno de r com espessura w (em pixels) e cantos arredondados de raio radius, por dentro dos limites de r, com antialiasing nos arcos. radius <= 0 equivale exatamente a StrokeRect. Não aloca.

Types

type Blitter

type Blitter struct {
	// contains filtered or unexported fields
}

Blitter apresenta um *image.RGBA na tela: mantém uma textura OpenGL do tamanho do buffer e a desenha em um quad que cobre a janela inteira. Deve ser criado e usado apenas na main thread, com um contexto GL corrente.

func NewBlitter

func NewBlitter(width, height int) (*Blitter, error)

NewBlitter inicializa as funções OpenGL, compila o shader do quad e aloca a textura de apresentação com o tamanho dado (em pixels do buffer). Requer um contexto OpenGL 3.3 core corrente na thread chamadora.

func (*Blitter) Destroy

func (b *Blitter) Destroy()

Destroy libera os recursos OpenGL do Blitter.

func (*Blitter) Draw

func (b *Blitter) Draw(fbWidth, fbHeight int)

Draw desenha o quad texturizado cobrindo o framebuffer inteiro. fbWidth e fbHeight são o tamanho do framebuffer da janela em pixels físicos (pode diferir do tamanho lógico em telas HiDPI).

func (*Blitter) Upload

func (b *Blitter) Upload(img *image.RGBA)

Upload envia o conteúdo do buffer para a textura de apresentação. Se o tamanho do buffer mudou (resize da janela), a textura é realocada.

func (*Blitter) UploadRegion

func (b *Blitter) UploadRegion(img *image.RGBA, r image.Rectangle)

UploadRegion envia apenas a região r do buffer para a textura — o caminho das dirty regions: o resto da textura permanece válido de frames anteriores. Se o tamanho do buffer mudou, faz o upload completo.

type GlyphCache

type GlyphCache struct {
	// contains filtered or unexported fields
}

GlyphCache rasteriza cada glyph de uma face UMA única vez e o reutiliza em todos os desenhos seguintes, eliminando as alocações de rasterização do caminho quente. Os glyphs são rasterizados em posições inteiras de pixel — com font.HintingFull os avanços também são inteiros, então o resultado é idêntico ao de um font.Drawer.

O cache cresce sob demanda, uma entrada por rune, e vale para uma única face: ao trocar de fonte ou tamanho (ex.: mudança de escala HiDPI), crie um cache novo. Como todo o JUIGo, não é seguro para uso concorrente.

func NewGlyphCache

func NewGlyphCache(face font.Face) *GlyphCache

NewGlyphCache cria um cache vazio para a face dada.

func (*GlyphCache) DrawString

func (c *GlyphCache) DrawString(dst *image.RGBA, s string, dot image.Point, col color.RGBA)

DrawString desenha s em dst com a baseline começando em dot e cor col. Aplica kerning e, com o cache aquecido, não aloca.

func (*GlyphCache) Face

func (c *GlyphCache) Face() font.Face

Face devolve a face para a qual este cache rasteriza.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL