@@ -17,7 +17,6 @@ package format
1717import (
1818 "errors"
1919 "fmt"
20- "io"
2120)
2221
2322var gifFileHeader = FileHeader {
@@ -55,7 +54,7 @@ const (
5554
5655type gifDecoder struct {
5756 loopCount int
58- r io. Reader
57+ r * Reader
5958
6059 width , height int
6160 imageFields byte
@@ -77,7 +76,7 @@ func ScanGIF(r *Reader) (*ScanResult, error) {
7776 }
7877
7978 for {
80- c , err := readByte ( d .r .(io. ByteReader ) )
79+ c , err := d .r .ReadByte ( )
8180 if err != nil {
8281 return nil , fmt .Errorf ("gif: reading frames: %v" , err )
8382 }
@@ -108,7 +107,7 @@ func ScanGIF(r *Reader) (*ScanResult, error) {
108107}
109108
110109func (d * gifDecoder ) readExtension () error {
111- extension , err := readByte ( d .r .(io. ByteReader ) )
110+ extension , err := d .r .ReadByte ( )
112111 if err != nil {
113112 return fmt .Errorf ("gif: reading extension: %v" , err )
114113 }
@@ -121,7 +120,7 @@ func (d *gifDecoder) readExtension() error {
121120 case eComment :
122121 // nothing to do but read the data.
123122 case eApplication :
124- b , err := readByte ( d .r .(io. ByteReader ) )
123+ b , err := d .r .ReadByte ( )
125124 if err != nil {
126125 return fmt .Errorf ("gif: reading extension: %v" , err )
127126 }
@@ -131,7 +130,7 @@ func (d *gifDecoder) readExtension() error {
131130 return fmt .Errorf ("gif: unknown extension 0x%.2x" , extension )
132131 }
133132 if size > 0 {
134- if err := readFull ( d .r , d .tmp [:size ]); err != nil {
133+ if _ , err := d .r . Read ( d .tmp [:size ]); err != nil {
135134 return fmt .Errorf ("gif: reading extension: %v" , err )
136135 }
137136 }
@@ -162,7 +161,7 @@ func (d *gifDecoder) readExtension() error {
162161}
163162
164163func (d * gifDecoder ) readGraphicControl () error {
165- if err := readFull ( d .r , d .tmp [:6 ]); err != nil {
164+ if _ , err := d .r . Read ( d .tmp [:6 ]); err != nil {
166165 return fmt .Errorf ("gif: can't read graphic control: %s" , err )
167166 }
168167 if d .tmp [0 ] != 4 {
@@ -175,7 +174,7 @@ func (d *gifDecoder) readGraphicControl() error {
175174}
176175
177176func (d * gifDecoder ) parseImageDescriptorBounds () error {
178- if err := readFull ( d .r , d .tmp [:9 ]); err != nil {
177+ if _ , err := d .r . Read ( d .tmp [:9 ]); err != nil {
179178 return fmt .Errorf ("gif: can't read image descriptor: %s" , err )
180179 }
181180 left := int (d .tmp [0 ]) + int (d .tmp [1 ])<< 8
@@ -220,7 +219,7 @@ func (d *gifDecoder) readImageDescriptor() error {
220219 return errors .New ("gif: no color table" )
221220 }
222221
223- litWidth , err := readByte ( d .r .(io. ByteReader ) )
222+ litWidth , err := d .r .ReadByte ( )
224223 if err != nil {
225224 return fmt .Errorf ("gif: reading image data: %v" , err )
226225 }
@@ -230,15 +229,15 @@ func (d *gifDecoder) readImageDescriptor() error {
230229
231230 // discard LZW encoded blocks
232231 for {
233- size , err := readByte ( d .r .(io. ByteReader ) ) // read LZW minimum code size
232+ size , err := d .r .ReadByte ( ) // read LZW minimum code size
234233 if err != nil {
235234 return fmt .Errorf ("gif: reading image data: %v" , err )
236235 }
237236 if size == 0 {
238237 // 0 means end of LZW data.
239238 break
240239 }
241- if err := discard (int (size ), d . r ); err != nil {
240+ if _ , err := d . r . Discard (int (size )); err != nil {
242241 return err
243242 }
244243 }
@@ -248,18 +247,18 @@ func (d *gifDecoder) readImageDescriptor() error {
248247}
249248
250249func (d * gifDecoder ) readBlock () (int , error ) {
251- n , err := readByte ( d .r .(io. ByteReader ) )
250+ n , err := d .r .ReadByte ( )
252251 if n == 0 || err != nil {
253252 return 0 , err
254253 }
255- if err := readFull ( d .r , d .tmp [:n ]); err != nil {
254+ if _ , err := d .r . Read ( d .tmp [:n ]); err != nil {
256255 return 0 , err
257256 }
258257 return int (n ), nil
259258}
260259
261260func (d * gifDecoder ) readHeaderAndScreenDescriptor () error {
262- err := readFull ( d .r , d .tmp [:13 ])
261+ _ , err := d .r . Read ( d .tmp [:13 ])
263262 if err != nil {
264263 return fmt .Errorf ("gif: reading header: %v" , err )
265264 }
@@ -286,28 +285,9 @@ func (d *gifDecoder) readHeaderAndScreenDescriptor() error {
286285
287286func (d * gifDecoder ) skipColorTable (fields byte ) error {
288287 n := 1 << (1 + uint (fields & fColorTableBitsMask ))
289- err := readFull ( d .r , d .tmp [:3 * n ])
288+ _ , err := d .r . Read ( d .tmp [:3 * n ])
290289 if err != nil {
291290 return fmt .Errorf ("gif: reading color table: %s" , err )
292291 }
293292 return nil
294293}
295-
296- func readByte (r io.ByteReader ) (byte , error ) {
297- b , err := r .ReadByte ()
298- if err != nil {
299- if err == io .EOF {
300- return 0 , io .ErrUnexpectedEOF
301- }
302- return 0 , fmt .Errorf ("gif: reading byte: %v" , err )
303- }
304- return b , nil
305- }
306-
307- func readFull (r io.Reader , b []byte ) error {
308- _ , err := io .ReadFull (r , b )
309- if err == io .EOF {
310- err = io .ErrUnexpectedEOF
311- }
312- return err
313- }
0 commit comments