Id3v2TextFrameContent.decode constructor
Id3v2TextFrameContent.decode(
- List<int> bytes,
- int startIndex,
- int size
)
Implementation
factory Id3v2TextFrameContent.decode(
List<int> bytes,
int startIndex,
int size,
) {
var sublist = bytes.sublist(startIndex, startIndex + size);
// Handle no content
if (sublist.isEmpty) {
var model = Id3v2TextModel(getEncoding(0), '');
return Id3v2TextFrameContent(model);
}
// Get the encoding
var encoding = getEncoding(sublist[0]);
// If there is no content or termination
if (sublist.length == 1) {
var model = Id3v2TextModel(encoding, '');
return Id3v2TextFrameContent(model);
}
var termination = Terminations.getByEncoding(encoding);
bool hasTermination = Terminations.hasTermination(
sublist.sublist(1),
termination,
);
var end = hasTermination ? sublist.length - termination.length : sublist.length;
// Decode the string
var value = encoding.decode(sublist.sublist(1, end));
var model = Id3v2TextModel(encoding, value);
return Id3v2TextFrameContent(model);
}