blob: df19c0c0d028bb48753b14a8019e4aacec32ad2d [file] [log] [blame]
import '../../internal/internal.dart';
import '../../util/input_buffer.dart';
import '../decode_info.dart';
import 'webp_frame.dart';
/// Features gathered from the bitstream
class WebPInfo extends DecodeInfo {
// enum Format
static const int FORMAT_UNDEFINED = 0;
static const int FORMAT_LOSSY = 1;
static const int FORMAT_LOSSLESS = 2;
static const int FORMAT_ANIMATED = 3;
/// True if the bitstream contains an alpha channel.
bool hasAlpha = false;
/// True if the bitstream is an animation.
bool hasAnimation = false;
/// 0 = undefined (/mixed), 1 = lossy, 2 = lossless, 3 = animated
int format = FORMAT_UNDEFINED;
/// ICCP data string.
String iccp = '';
/// EXIF data string.
String exif = '';
/// XMP data string.
String xmp = '';
/// How many times the animation should loop.
int animLoopCount = 0;
/// Information about each animation frame.
List<WebPFrame> frames = [];
int get numFrames => frames.length;
int _frame;
int _numFrames;
InputBuffer _alphaData;
int _alphaSize;
int _vp8Position;
int _vp8Size;
}
@internal
class InternalWebPInfo extends WebPInfo {
int get frame => _frame;
set frame(int value) => _frame = value;
int get numFrames => _numFrames;
set numFrames(int value) => _numFrames = value;
InputBuffer get alphaData => _alphaData;
set alphaData(InputBuffer buffer) => _alphaData = buffer;
int get alphaSize => _alphaSize;
set alphaSize(int value) => _alphaSize = value;
int get vp8Position => _vp8Position;
set vp8Position(int value) => _vp8Position = value;
int get vp8Size => _vp8Size;
set vp8Size(int value) => _vp8Size = value;
}