func (item *simpleTextItem) AddNewPart(surface *drawing.Surface, bounds drawing.Rectangle) (part part, more bool, err os.Error) { partCount := len(item.parts) var offset int if partCount > 0 { prevPart := item.parts[len(item.parts)-1] offset = prevPart.offset + prevPart.length } runeCount := item.text.RuneCount() text := item.text.Slice(offset, runeCount) fontHeight, err := surface.FontHeight(item.font) if err != nil { return } bounds.Height = (bounds.Height / fontHeight) * fontHeight if bounds.Height == 0 { more = true return } boundsMeasured, runesFitted, err := surface.MeasureText(text, item.font, bounds, item.format) if err != nil { return } p := &simpleTextPart{ item: item, offset: offset, length: runesFitted, bounds: boundsMeasured, } if partCount == cap(item.parts) { parts := make([]*simpleTextPart, partCount, partCount*2) copy(parts, item.parts) item.parts = parts } item.parts = item.parts[0 : partCount+1] item.parts[partCount] = p part = p more = p.offset+p.length < runeCount return }