func createGlyphPage(resolution resolution, glyphMaxSizePixels math.Size) *glyphPage { // Handle exceptionally large glyphs. size := math.Size{W: glyphPageWidth, H: glyphPageHeight}.Max(glyphMaxSizePixels) size.W = align(size.W, glyphSizeAlignment) size.H = align(size.H, glyphSizeAlignment) return &glyphPage{ resolution: resolution, glyphMaxSizePixels: glyphMaxSizePixels, size: size, image: image.NewAlpha(image.Rect(0, 0, size.W, size.H)), offsets: make(map[rune]math.Point), rowHeight: 0, rast: raster.NewRasterizer(glyphMaxSizePixels.W, glyphMaxSizePixels.H), } }
func newGlyphPage(face fnt.Face, r rune) *glyphPage { // Start the page big enough to hold the initial rune. b, _, _ := face.GlyphBounds(r) bounds := rectangle26_6toRect(b) size := math.Size{W: glyphPageWidth, H: glyphPageHeight}.Max(bounds.Size()) size.W = align(size.W, glyphSizeAlignment) size.H = align(size.H, glyphSizeAlignment) page := &glyphPage{ image: image.NewAlpha(image.Rect(0, 0, size.W, size.H)), size: size, entries: make(map[rune]glyphEntry), rowHeight: 0, } page.add(face, r) return page }
func (l *List) DesiredSize(min, max math.Size) math.Size { if l.adapter == nil { return min } count := math.Max(l.itemCount, 1) var s math.Size if l.orientation.Horizontal() { s = math.Size{W: l.itemSize.W * count, H: l.itemSize.H} } else { s = math.Size{W: l.itemSize.W, H: l.itemSize.H * count} } if l.scrollBarEnabled { if l.orientation.Horizontal() { s.H += l.scrollBar.DesiredSize(min, max).H } else { s.W += l.scrollBar.DesiredSize(min, max).W } } return s.Expand(l.outer.Padding()).Clamp(min, max) }