func (t *DefaultTextBoxLine) PaintText(c gxui.Canvas) { runes := []rune(t.textbox.controller.Line(t.lineIndex)) f := t.textbox.font offsets := f.Layout(&gxui.TextBlock{ Runes: runes, AlignRect: t.Size().Rect().OffsetX(t.caretWidth), H: gxui.AlignLeft, V: gxui.AlignBottom, }) c.DrawRunes(f, runes, offsets, t.textbox.textColor) }
// parts.DrawPaint overrides func (l *Label) Paint(c gxui.Canvas) { r := l.outer.Size().Rect() t := l.text if !l.multiline { t = strings.Replace(t, "\n", " ", -1) } runes := []rune(t) offsets := l.font.Layout(&gxui.TextBlock{ Runes: runes, AlignRect: r, H: l.horizontalAlignment, V: l.verticalAlignment, }) c.DrawRunes(l.font, runes, offsets, l.color) }
func (t *CodeEditorLine) PaintGlyphs(c gxui.Canvas, info CodeEditorLinePaintInfo) { start, _ := info.LineSpan.Span() runes, offsets, font := info.Runes, info.GlyphOffsets, info.Font remaining := interval.IntDataList{info.LineSpan} for _, l := range t.ce.layers { if l != nil && l.Color() != nil { color := *l.Color() for _, span := range l.Spans().Overlaps(info.LineSpan) { interval.Visit(&remaining, span, func(vs, ve uint64, _ int) { s, e := vs-start, ve-start c.DrawRunes(font, runes[s:e], offsets[s:e], color) }) interval.Remove(&remaining, span) } } } for _, span := range remaining { s, e := span.Span() s, e = s-start, e-start c.DrawRunes(font, runes[s:e], offsets[s:e], t.ce.textColor) } }