startDecode method

  1. @override
GifInfo? startDecode(
  1. List<int> bytes
)
override

Validate the file is a Gif image and get information about it. If the file is not a valid Gif image, null is returned.

Implementation

@override
GifInfo? startDecode(List<int> bytes) {
  _input = InputBuffer(bytes);

  info = GifInfo();
  if (!_getInfo()) {
    return null;
  }

  try {
    while (!_input!.isEOS) {
      final recordType = _input!.readByte();
      switch (recordType) {
        case IMAGE_DESC_RECORD_TYPE:
          final gifImage = _skipImage();
          if (gifImage == null) {
            return info;
          }
          info!.frames.add(gifImage);
          break;
        case EXTENSION_RECORD_TYPE:
          final extCode = _input!.readByte();
          if (extCode == APPLICATION_EXT) {
            _readApplicationExt(_input!);
          } else if (extCode == GRAPHIC_CONTROL_EXT) {
            _readGraphicsControlExt(_input!);
          } else {
            _skipRemainder();
          }
          break;
        case TERMINATE_RECORD_TYPE:
          //_numFrames = info.numFrames;
          return info;
        default:
          break;
      }
    }
  } catch (error) {
    print(error);
  }

  //_numFrames = info.numFrames;
  return info;
}