mirror of
https://git.sr.ht/~eliasnaur/gio
synced 2026-07-01 07:35:40 +00:00
text: [API] remove Text and Advances from Layout
These fields are no longer needed with the new text shaper. Advances is redundant to the glyph information, and Text should never be used during layout, as you should traverse the cluster list instead. This commit also removed the now-unused string field from the path LRU cache key. References: https://todo.sr.ht/~eliasnaur/gio/146 Signed-off-by: Chris Waldon <christopher.waldon.dev@gmail.com>
This commit is contained in:
@@ -401,7 +401,6 @@ func (o output) ToLine() text.Line {
|
||||
advances = append(advances, glyph.XAdvance)
|
||||
}
|
||||
layout := text.Layout{
|
||||
Advances: advances,
|
||||
Glyphs: toGioGlyphs(o.Shaped.Glyphs),
|
||||
Runes: o.RuneRange,
|
||||
Direction: toSystemDirection(o.Shaped.Direction),
|
||||
|
||||
@@ -40,7 +40,6 @@ type layoutKey struct {
|
||||
|
||||
type pathKey struct {
|
||||
ppem fixed.Int26_6
|
||||
str string
|
||||
gidHash uint64
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -24,10 +24,10 @@ func TestLayoutLRU(t *testing.T) {
|
||||
func TestPathLRU(t *testing.T) {
|
||||
c := new(pathCache)
|
||||
put := func(i int) {
|
||||
c.Put(pathKey{str: strconv.Itoa(i), gidHash: uint64(i)}, Layout{Runes: Range{Count: i}}, clip.PathSpec{})
|
||||
c.Put(pathKey{gidHash: uint64(i)}, Layout{Runes: Range{Count: i}}, clip.PathSpec{})
|
||||
}
|
||||
get := func(i int) bool {
|
||||
_, ok := c.Get(pathKey{str: strconv.Itoa(i), gidHash: uint64(i)}, Layout{Runes: Range{Count: i}})
|
||||
_, ok := c.Get(pathKey{gidHash: uint64(i)}, Layout{Runes: Range{Count: i}})
|
||||
return ok
|
||||
}
|
||||
testLRU(t, put, get)
|
||||
|
||||
@@ -168,7 +168,6 @@ func (f *faceCache) shape(ppem fixed.Int26_6, layout Layout) clip.PathSpec {
|
||||
}
|
||||
pk := pathKey{
|
||||
ppem: ppem,
|
||||
str: layout.Text,
|
||||
gidHash: f.hashGIDs(layout),
|
||||
}
|
||||
if clip, ok := f.pathCache.Get(pk, layout); ok {
|
||||
|
||||
@@ -92,8 +92,6 @@ type Layout struct {
|
||||
// so the first cluster will describe the beginning of the text and may
|
||||
// refer to the final glyphs in the Glyphs field if the text is RTL.
|
||||
Clusters []GlyphCluster
|
||||
Text string
|
||||
Advances []fixed.Int26_6
|
||||
// Runes describes the position of the text data this layout represents
|
||||
// within the overall body of text being shaped.
|
||||
Runes Range
|
||||
|
||||
@@ -1476,8 +1476,6 @@ func nullLayout(rr io.RuneReader) ([]text.Line, error) {
|
||||
Runes: text.Range{
|
||||
Count: n,
|
||||
},
|
||||
Text: buf.String(),
|
||||
Advances: make([]fixed.Int26_6, n),
|
||||
},
|
||||
},
|
||||
}, rerr
|
||||
|
||||
@@ -966,8 +966,14 @@ func (q *testQueue) Events(_ event.Tag) []event.Event {
|
||||
}
|
||||
|
||||
func printLines(e *Editor) {
|
||||
for n, line := range e.lines {
|
||||
text := strings.TrimSuffix(line.Layout.Text, "\n")
|
||||
for _, line := range e.lines {
|
||||
start := e.runeOffset(line.Layout.Runes.Offset)
|
||||
buf := make([]byte, 0, 4*line.Layout.Runes.Count)
|
||||
e.Seek(int64(start), 0)
|
||||
n, _ := e.Read(buf)
|
||||
buf = buf[:n]
|
||||
asStr := string([]rune(string(buf))[:line.Layout.Runes.Count])
|
||||
text := strings.TrimSuffix(asStr, "\n")
|
||||
fmt.Printf("%d: %s\n", n, text)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user