github.com/jmigpin/editor@v1.6.0/util/drawutil/drawer4/frame.go (about) 1 package drawer4 2 3 // TODO: iteration later must use readrune, can't use a loop with ints (i++) 4 5 //type Frame struct { 6 // m map[int]*RuneInfo 7 //} 8 9 //func NewFrame() *Frame { 10 // fr := &Frame{} 11 // fr.m = map[int]*RuneInfo{} 12 // return fr 13 //} 14 15 //func (fr *Frame) get(ri int) *RuneInfo { 16 // info, ok := fr.m[ri] 17 // if !ok { 18 // info = &RuneInfo{} 19 // fr.m[ri] = info 20 // } 21 // return info 22 //} 23 24 ////---------- 25 26 //type RuneInfo struct { 27 // lineStart bool 28 // penBounds mathutil.RectangleIntf 29 //} 30 31 //---------- 32 33 //func frameInfo(d *Drawer, offset int) *Frame { 34 // fr := NewFrame() 35 // maxY := mathutil.Intf(math.MaxInt64) 36 // //first := true 37 // frameLoop(d, true, 0, offset, 38 // func() { 39 // //info := fr.get(d.st.runeR.ri) 40 // //info.lineStart = true 41 // }, 42 // func() { 43 // pb := d.iters.runeR.penBounds() 44 45 // // set early exit 46 // if d.st.runeR.ri == offset { 47 // bdy := mathutil.Intf1(d.bounds.Dy()) 48 // maxY = pb.Min.Y + bdy 49 // } 50 51 // // early exit 52 // if pb.Min.Y >= maxY { 53 // d.iterStop() 54 // return 55 // } 56 57 // if d.iters.runeR.isNormal() { 58 // info := fr.get(d.st.runeR.ri) 59 // info.penBounds = pb 60 // info.lineStart = d.st.line.lineStart || d.st.lineWrap.lineStart 61 // //// first ri line start special case 62 // //if first { 63 // // first = false 64 // // if !info.lineStart { 65 // // if d.st.runeR.ri == offset { 66 // // //info.lineStart = true 67 // // } 68 // // } 69 // //} 70 // } 71 72 // if !d.iterNext() { 73 // return 74 // } 75 // }) 76 // return fr 77 //} 78 79 //----------