package rle import "fmt" func DecompressInto(input []uint8, dst []uint8, width, height int, bpp int) []uint8 { size := width * height * bpp if cap(dst) >= size { dst = dst[:size] } else { dst = make([]uint8, size) } ok := true switch bpp { case 1: ok = decompress1(&dst, width, height, input, size) case 2: ok = decompress2(&dst, width, height, input, size) case 3: ok = decompress3(&dst, width, height, input, size) case 4: ok = decompress4(&dst, width, height, input, size) default: fmt.Printf("bpp %d\n", bpp) ok = false } if !ok { return nil } return dst }