func (l *TextView) calculateVirtualSize() {
	w := l.width - 1
	l.virtualWidth = l.width - 1
	l.virtualHeight = 0

	l.lengths = make([]int, len(l.lines))
	for idx, str := range l.lines {
		str = UnColorizeText(str)

		sz := xs.Len(str)
		if l.wordWrap {
			n := sz / w
			r := sz % w
			l.virtualHeight += n
			if r != 0 {
				l.virtualHeight++
			}
		} else {
			l.virtualHeight++
			if sz > l.virtualWidth {
				l.virtualWidth = sz
			}
		}
		l.lengths[idx] = sz
	}
}
func (l *TextView) calculateVirtualSize() {
	w := l.width - 1
	l.virtualWidth = l.width - 1
	l.virtualHeight = 0

	l.lengths = make([]int, len(l.lines))
	for idx, str := range l.lines {
		str = UnColorizeText(str)

		sz := xs.Len(str)
		if l.wordWrap {
			n := sz / w
			r := sz % w
			l.virtualHeight += n
			if r != 0 {
				l.virtualHeight++
			}
		} else {
			l.virtualHeight++
			if sz > l.virtualWidth {
				l.virtualWidth = sz
			}
		}
		l.lengths[idx] = sz
	}
}
func ( l * TextView ) calculateVirtualSize ( ) { w := l . width - 1 l . virtualWidth = l . width - 1 l . virtualHeight = 0 l . lengths = make ( [ ] int , len ( l . lines ) ) for idx , str := range l . lines { str = UnColorizeText ( str ) sz := xs . Len ( str ) if l . wordWrap { n := sz / w r := sz % w l . virtualHeight += n if r != 0 { l . virtualHeight ++ } } else { l . virtualHeight ++ if sz > l . virtualWidth { l . virtualWidth = sz } } l . lengths [ idx ] = sz } }
// own methods
own methods