github.com/jmigpin/editor@v1.6.0/util/drawutil/drawer4/measure.go (about)

     1  package drawer4
     2  
     3  type Measure struct {
     4  	d *Drawer
     5  }
     6  
     7  func (m *Measure) Init() {
     8  	pb := m.d.iters.runeR.penBounds()
     9  	m.d.st.measure.penMax = pb.Max
    10  }
    11  
    12  func (m *Measure) Iter() {
    13  	if m.d.iters.runeR.isNormal() {
    14  		penXAdv := m.d.st.runeR.pen.X + m.d.st.runeR.advance
    15  		if penXAdv > m.d.st.measure.penMax.X {
    16  			m.d.st.measure.penMax.X = penXAdv
    17  		}
    18  	}
    19  	if !m.d.iterNext() {
    20  		return
    21  	}
    22  }
    23  
    24  func (m *Measure) End() {
    25  	pb := m.d.iters.runeR.penBounds()
    26  	m.d.st.measure.penMax.Y = pb.Max.Y
    27  }