blob: e7bb341c4247e8b43beb42226b442e2acbb03373 [file] [log] [blame]
import 'dart:typed_data';
import '../../color.dart';
class GifColorMap {
int bitsPerPixel;
int numColors;
int transparent;
final Uint8List colors;
GifColorMap(int numColors)
: this.numColors = numColors,
colors = Uint8List(numColors * 3) {
bitsPerPixel = _bitSize(numColors);
}
int operator [](int index) => colors[index];
operator []=(int index, int value) => colors[index] = value;
int color(int index) {
int ci = index * 3;
int a = (index == transparent) ? 0 : 255;
return getColor(colors[ci], colors[ci + 1], colors[ci + 2], a);
}
void setColor(int index, int r, int g, int b) {
int ci = index * 3;
colors[ci] = r;
colors[ci + 1] = g;
colors[ci + 2] = b;
}
int red(int color) => colors[color * 3];
int green(int color) => colors[color * 3 + 1];
int blue(int color) => colors[color * 3 + 2];
int alpha(int color) => (color == transparent) ? 0 : 255;
int _bitSize(int n) {
for (int i = 1; i <= 8; i++) {
if ((1 << i) >= n) {
return i;
}
}
return 0;
}
}