package draw9 import ( "fmt" "image" ) func (dst *Image) Cload(r image.Rectangle, data []byte) (int, error) { dst.Display.mu.Lock() defer dst.Display.mu.Unlock() i := dst if !r.In(i.R) { return 0, fmt.Errorf("cloadimage: bad rectangle") } miny := r.Min.Y m := 0 ncblock := compblocksize(r, i.Depth) for miny != r.Max.Y { maxy := atoi(data[0*12:]) nb := atoi(data[1*12:]) if maxy <= miny || r.Max.Y < maxy { return 0, fmt.Errorf("creadimage: bad maxy %d", maxy) } data = data[2*12:] m += 2 * 12 if nb <= 0 || ncblock < nb || nb > len(data) { return 0, fmt.Errorf("creadimage: bad count %d", nb) } // TODO: error check? a := i.Display.bufimage(21 + nb) a[0] = 'Y' bplong(a[1:], i.ID) bplong(a[5:], uint32(r.Min.Y)) bplong(a[9:], uint32(miny)) bplong(a[13:], uint32(r.Max.Y)) bplong(a[17:], uint32(maxy)) copy(a[21:], data) miny = maxy data = data[nb:] m += nb } return m, nil }