Documentation
¶
Index ¶
- func FiraCode() (*opentype.Font, error)
- func GoBold() (*opentype.Font, error)
- func GoMono() (*opentype.Font, error)
- func Lora() (*opentype.Font, error)
- func LoraBold() (*opentype.Font, error)
- type MonoFont
- type SyntaxPalette
- type TextFont
- type Theme
- func (t *Theme) Ascent() int
- func (t *Theme) BorderPx() int
- func (t *Theme) Caption() *TextFont
- func (t *Theme) Clone() (*Theme, error)
- func (t *Theme) DrawMono(dst *image.RGBA, s string, dot image.Point, c color.RGBA)
- func (t *Theme) DrawText(dst *image.RGBA, s string, dot image.Point, c color.RGBA)
- func (t *Theme) InputMinWidthPx() int
- func (t *Theme) LineHeight() int
- func (t *Theme) MeasureMono(s string) int
- func (t *Theme) MeasureString(s string) int
- func (t *Theme) Mono() *MonoFont
- func (t *Theme) MonoAdvance() int
- func (t *Theme) MonoAscent() int
- func (t *Theme) MonoLineHeight() int
- func (t *Theme) MonoSized(size float64) (*MonoFont, error)
- func (t *Theme) PaddingPx() int
- func (t *Theme) Px(v int) int
- func (t *Theme) RadiusPx() int
- func (t *Theme) Scale() float64
- func (t *Theme) SetScale(scale float64) error
- func (t *Theme) SpacingPx() int
- func (t *Theme) Subtitle() *TextFont
- func (t *Theme) Title() *TextFont
- func (t *Theme) UseDisplayFont(fnt *opentype.Font) error
- func (t *Theme) UseMonoFont(fnt *opentype.Font) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func FiraCode ¶ added in v0.7.0
FiraCode devolve a fonte Fira Code embutida, interpretada uma única vez — troque a mono do tema com UseMonoFont(theme.FiraCode()).
func GoBold ¶ added in v0.14.0
GoBold devolve a Go Bold (x/image, já dependência), interpretada uma única vez — a fonte de display PADRÃO dos temas Default/Dark: hierarquia por peso, sem asset novo.
func GoMono ¶ added in v0.7.0
GoMono devolve a fonte Go Mono embutida (a mono padrão do tema), interpretada uma única vez — o par de FiraCode para voltar atrás num UseMonoFont.
Types ¶
type MonoFont ¶ added in v0.7.0
type MonoFont struct {
// Face é a face rasterizada; não guarde referências entre mudanças de
// escala.
Face font.Face
// contains filtered or unexported fields
}
MonoFont é uma fonte monoespaçada pronta para desenhar: face na escala corrente, métricas e cache de glyphs próprio. O tema carrega a padrão (Mono) e fabrica variações de tamanho (MonoSized) — cada CodeEditor pode ter a sua.
func (*MonoFont) Advance ¶ added in v0.7.0
Advance devolve a largura da célula em pixels — todo glifo coberto avança isto (a base da conta coluna↔pixel).
func (*MonoFont) Draw ¶ added in v0.7.0
Draw desenha s GLIFO A GLIFO, um por célula (x avança Advance por rune): o desenho cai exatamente na grade da conta coluna↔pixel do CodeEditor, para qualquer fonte e tamanho — avanços fracionários (Fira Code em tamanhos ímpares) não derivam ao longo de tokens compridos. Cache de glyphs, sem alocação no caminho quente (fatias de s).
func (*MonoFont) LineHeight ¶ added in v0.7.0
LineHeight devolve a altura de linha em pixels.
type SyntaxPalette ¶ added in v0.5.0
type SyntaxPalette struct {
// Keyword colore palavras-chave da linguagem.
Keyword color.RGBA
// String colore literais de texto (incluindo runas e raw strings).
String color.RGBA
// Number colore literais numéricos.
Number color.RGBA
// Comment colore comentários.
Comment color.RGBA
// Builtin colore tipos e identificadores embutidos da linguagem.
Builtin color.RGBA
}
SyntaxPalette são as cores das classes léxicas do highlight de código (ver widget.SyntaxStyle); texto comum usa Theme.Text.
type TextFont ¶ added in v0.14.0
type TextFont struct {
// Face é a face rasterizada; não guarde referências entre mudanças de
// escala.
Face font.Face
// contains filtered or unexported fields
}
TextFont é uma fonte proporcional pronta para um PAPEL TIPOGRÁFICO do tema (Título, Subtítulo, Legenda): face na escala corrente, métricas e cache de glyphs próprios. O tema constrói os papéis no SetScale; widgets desenham por ela sem medir nem alocar no caminho quente.
func (*TextFont) Draw ¶ added in v0.14.0
Draw desenha s com a origem da baseline em dot, pelo cache de glyphs.
func (*TextFont) LineHeight ¶ added in v0.14.0
LineHeight devolve a altura de linha em pixels.
type Theme ¶
type Theme struct {
// Background é a cor de fundo da janela.
Background color.RGBA
// Text é a cor padrão de texto.
Text color.RGBA
// Placeholder é a cor do texto de sugestão do Input vazio.
Placeholder color.RGBA
// ButtonNormal, ButtonHover e ButtonPressed são as cores de fundo do
// Button em cada estado.
ButtonNormal color.RGBA
ButtonHover color.RGBA
ButtonPressed color.RGBA
// ButtonText é a cor do rótulo do Button.
ButtonText color.RGBA
// ButtonBorder é a cor da borda do Button; alfa zero desliga a borda
// (o visual clássico não tem borda de botão).
ButtonBorder color.RGBA
// InputBackground é o fundo do campo de texto.
InputBackground color.RGBA
// InputBorder é a borda do campo sem foco; InputBorderFocused, com foco.
InputBorder color.RGBA
InputBorderFocused color.RGBA
// Cursor é a cor da linha vertical do cursor de texto.
Cursor color.RGBA
// Selection é o fundo da seleção de texto no Input.
Selection color.RGBA
// FocusOutline é o contorno de indicação de foco em widgets focáveis
// não-textuais (ex.: Button).
FocusOutline color.RGBA
// Accent é a cor de destaque dos controles: a marca do Checkbox e o
// trilho ativo e a alça do Slider.
Accent color.RGBA
// HoverBackground é o fundo do item sob o ponteiro em listas (ex.: o
// popup do Dropdown).
HoverBackground color.RGBA
// TooltipBackground e TooltipText são as cores da caixa de dica.
TooltipBackground color.RGBA
TooltipText color.RGBA
// Danger é a cor de erros e ações destrutivas (mensagens de validação).
Danger color.RGBA
// Syntax é a paleta de highlight do CodeEditor (classes léxicas).
Syntax SyntaxPalette
// CurrentLine é a faixa sutil atrás da linha do cursor no CodeEditor.
CurrentLine color.RGBA
// Face é a fonte já rasterizada na escala atual (ver SetScale). É
// reconstruída a cada mudança de escala; não guarde referências a ela.
Face font.Face
// MonoFace é a fonte MONOESPAÇADA do tema (Go Mono, do mesmo projeto da
// fonte regular), na escala corrente — editores de código medem e
// desenham por ela (DrawMono/MeasureMono). Reconstruída no SetScale.
MonoFace font.Face
// FontSize é o tamanho LÓGICO da fonte (independente de escala). A face
// é criada com FontSize × escala.
FontSize float64
// Padding é o espaço interno padrão dos widgets, em unidades LÓGICAS.
// No desenho e no layout, use PaddingPx (ou Px) para converter.
Padding int
// Spacing é o espaço padrão entre widgets em containers de layout, em
// unidades lógicas (use SpacingPx).
Spacing int
// BorderWidth é a espessura padrão de bordas, em unidades lógicas (use
// BorderPx).
BorderWidth int
// Radius é o raio dos cantos arredondados dos controles, em unidades
// lógicas (use RadiusPx). Zero desliga o arredondamento e reproduz o
// visual clássico (retângulos retos) pixel a pixel — ver Classic.
Radius int
// InputMinWidth é a largura preferida mínima do Input, em unidades
// lógicas (use InputMinWidthPx).
InputMinWidth int
// SliderMinWidth é a largura preferida mínima do Slider, em unidades
// lógicas.
SliderMinWidth int
// SliderTrackThickness é a espessura do trilho do Slider, em unidades
// lógicas.
SliderTrackThickness int
// SliderHandleSize é o lado da alça do Slider, em unidades lógicas.
SliderHandleSize int
// ScrollStep é quantas unidades lógicas o conteúdo rola por passo da
// roda do mouse.
ScrollStep int
// ScrollbarWidth é a largura do indicador de rolagem, em unidades
// lógicas.
ScrollbarWidth int
// CaretBlink é o intervalo de piscada do cursor de texto; zero desliga
// a piscada (cursor sempre visível).
CaretBlink time.Duration
// TooltipDelay é quanto tempo o ponteiro precisa pausar sobre um widget
// com Tooltip até a dica aparecer.
TooltipDelay time.Duration
// ToastDuration é quanto tempo um toast (aviso transitório) fica na
// tela antes de sumir sozinho.
ToastDuration time.Duration
// ScrollAxisLock é a janela da TRAVA DE EIXO dos gestos de rolagem 2D:
// no trackpad o dedo raramente anda reto, então o gesto segue no eixo
// dominante do seu início enquanto os eventos continuarem chegando
// dentro desta janela (uma dominância forte do outro eixo retrava na
// hora). Zero desliga a trava.
ScrollAxisLock time.Duration
// DoubleClick é a janela do duplo clique (selecionar a palavra nos
// campos de texto). Zero desliga.
DoubleClick time.Duration
// TextAreaMinLines é a altura preferida da TextArea, em linhas.
TextAreaMinLines int
// SpinnerStep é o intervalo entre quadros do indicador de loading.
SpinnerStep time.Duration
// TransitionDuration é a duração das transições animadas de tela do
// Navigator. Zero desliga a animação (a troca vira um corte seco).
TransitionDuration time.Duration
// SplitterThickness é a espessura da faixa de arraste do SplitPane, em
// unidades lógicas (a linha desenhada é mais fina; a faixa é a área de
// pega).
SplitterThickness int
// TreeIndent é o recuo por nível da Tree, em unidades lógicas.
TreeIndent int
// RowPad é o respiro de linha de List e Tree, em unidades lógicas:
// entra na altura de cada linha (vertical) e é a margem da PÍLULA de
// seleção/hover (horizontal) — as linhas respiram e o realce é uma
// forma arredondada com margem, não uma faixa de ponta a ponta.
RowPad int
// Backdrop é a cor translúcida do pano de fundo do Modal.
Backdrop color.RGBA
// DisabledWash é a lavagem translúcida aplicada sobre widgets
// desabilitados, esmaecendo-os em direção ao fundo.
DisabledWash color.RGBA
// Surface é o fundo de superfícies elevadas (Card); SurfaceBorder é o
// fio que as contorna (também o Divider).
Surface color.RGBA
SurfaceBorder color.RGBA
// TitleSize, SubtitleSize e CaptionSize são os tamanhos LÓGICOS dos
// papéis tipográficos (ver Title/Subtitle/Caption e Text.Title). Título
// e subtítulo usam a fonte de DISPLAY (UseDisplayFont; Go Bold por
// padrão, Lora no tema Claude); a legenda usa a fonte do corpo.
TitleSize float64
SubtitleSize float64
CaptionSize float64
// contains filtered or unexported fields
}
Theme centraliza todas as cores, a fonte e os espaçamentos usados pelos widgets. Nenhum widget deve ter cor ou tamanho hardcoded: tudo vem daqui.
func Classic ¶
Classic constrói o tema claro com o visual clássico do JUIGo (anterior ao Theme.Radius): os mesmos valores de Default, sem cantos arredondados (Radius zero) e sem borda de botão. Com Radius zero as primitivas arredondadas degradam pixel a pixel para retângulos retos. Círculos (Radio, spinner) têm antialiasing em todos os temas — qualidade de desenho, não uma escolha de visual. Para um tema escuro clássico, zere os mesmos dois campos em um tema vindo de Dark:
t, _ := theme.Dark()
t.Radius = 0
t.ButtonBorder = color.RGBA{}
func Claude ¶ added in v0.13.0
Claude constrói o tema claro do design system "papel e tinta" do JUIGo, inspirado na linguagem visual pública do Claude (Anthropic): fundo de papel, texto em tinta quase-preta quente, terracota reservada a ações e estados ativos, neutros SEMPRE quentes (nada de cinza azulado) e cantos generosos (Radius 10). As cores são uma homenagem aproximada à identidade pública — o tema não usa marcas nem se propõe a representar a Anthropic.
As decisões de uso dos tokens estão documentadas em docs/DESIGN.md; o par escuro é ClaudeDark. Troque em runtime com App.SetTheme.
func ClaudeDark ¶ added in v0.13.0
ClaudeDark constrói o par escuro do design system "papel e tinta" (ver Claude): superfícies de grafite quente, texto de papel, a MESMA terracota de ação e neutros térreos reequilibrados para contraste. Métricas idênticas às do Claude claro — os dois alternam em runtime sem a interface pular.
func Dark ¶
Dark constrói o tema escuro do JUIGo na escala 1: mesma fonte, métricas e espaçamentos do tema padrão, com a paleta invertida — superfícies escuras, texto claro, o mesmo azul de destaque e tooltip/seleção reequilibrados para contraste. Troque em runtime com App.SetTheme.
func Default ¶
Default constrói o tema padrão do JUIGo na escala 1, interpretando a fonte embutida. Falhas na fonte são devolvidas como erro. O App ajusta a escala para o monitor via SetScale.
func (*Theme) Ascent ¶
Ascent devolve a distância do topo da linha até a baseline, em pixels. Útil para converter um Y de topo em um Y de baseline para DrawText.
func (*Theme) BorderPx ¶
BorderPx devolve BorderWidth convertido para pixels, no mínimo 1 para que bordas nunca desapareçam em escalas baixas.
func (*Theme) Caption ¶ added in v0.14.0
Caption devolve a fonte do papel de LEGENDA (CaptionSize, a MESMA fonte do corpo, menor).
func (*Theme) Clone ¶ added in v0.2.0
Clone devolve uma cópia independente do tema, na mesma escala: os campos de cores e métricas são copiados, a fonte interpretada é compartilhada (imutável) e a face e o cache de glyphs são reconstruídos. Cada JANELA precisa do próprio *Theme — a escala segue o monitor da janela, e SetScale num tema compartilhado desregularia as outras.
func (*Theme) DrawMono ¶ added in v0.4.0
DrawMono desenha s com a fonte mono PADRÃO do tema (ver Mono/MonoFont).
func (*Theme) DrawText ¶
DrawText desenha s em dst com a fonte do tema, baseline em dot e cor c, usando o cache de glyphs: cada glyph é rasterizado uma única vez, e o caminho quente de desenho não aloca.
func (*Theme) InputMinWidthPx ¶
InputMinWidthPx devolve InputMinWidth convertido para pixels.
func (*Theme) LineHeight ¶
LineHeight devolve a altura de uma linha de texto, em pixels.
func (*Theme) MeasureMono ¶ added in v0.4.0
MeasureMono devolve a largura de s em pixels na fonte mono padrão.
func (*Theme) MeasureString ¶
MeasureString devolve a largura de s em pixels com a fonte do tema. É a ÚNICA fonte de verdade para largura de texto: layout e posicionamento de cursor devem passar por aqui.
func (*Theme) Mono ¶ added in v0.7.0
Mono devolve a fonte mono padrão do tema (tamanho FontSize, na escala corrente).
func (*Theme) MonoAdvance ¶ added in v0.4.0
MonoAdvance devolve a largura da CÉLULA da fonte mono padrão — todo glifo coberto avança exatamente isso, o que torna a conta coluna↔pixel aritmética pura (a base do CodeEditor).
func (*Theme) MonoAscent ¶ added in v0.4.0
MonoAscent devolve o ascent da fonte mono padrão.
func (*Theme) MonoLineHeight ¶ added in v0.4.0
MonoLineHeight devolve a altura de linha da fonte mono padrão.
func (*Theme) MonoSized ¶ added in v0.7.0
MonoSized fabrica uma variação da fonte mono no tamanho LÓGICO dado (pontos), na escala corrente — cada CodeEditor pode ter o próprio tamanho. A variação vale até a próxima mudança de escala ou de fonte mono (detectável por Theme.MonoFace).
func (*Theme) Px ¶
Px converte um valor em unidades lógicas para pixels na escala atual, arredondando para o inteiro mais próximo.
func (*Theme) RadiusPx ¶
RadiusPx devolve Radius convertido para pixels na escala atual. Zero permanece zero (cantos retos) em qualquer escala.
func (*Theme) SetScale ¶
SetScale reconstrói a fonte, as métricas e o cache de glyphs para a escala dada, em pixels por unidade lógica (1 = tela comum, 2 = retina). O App a chama com a escala de conteúdo da janela e a cada mudança de monitor. Os campos lógicos do tema (FontSize, Padding, ...) não são alterados: a conversão para pixels acontece na face e nos métodos Px/*Px.
func (*Theme) Subtitle ¶ added in v0.14.0
Subtitle devolve a fonte do papel de SUBTÍTULO (SubtitleSize, fonte de display).
func (*Theme) Title ¶ added in v0.14.0
Title devolve a fonte do papel de TÍTULO (TitleSize, fonte de display).
func (*Theme) UseDisplayFont ¶ added in v0.14.0
UseDisplayFont troca a fonte de DISPLAY do tema em runtime — títulos e subtítulos são reconstruídos na escala corrente; corpo e legenda seguem na fonte regular. É como o Claude ganha a serif Lora:
lora, _ := theme.Lora() th.UseDisplayFont(lora)