arx-convert
Version:
Converts various Arx Fatalis formats to JSON or YAML and back
66 lines • 1.83 kB
JavaScript
import { BinaryIO } from './BinaryIO.js';
export class Color {
static readFrom(binary, mode) {
switch (mode) {
case 'abgr': {
const [a, b, g, r] = binary.readUint8Array(4);
return { r, g, b, a: a / 255 };
}
case 'bgra': {
const [b, g, r, a] = binary.readUint8Array(4);
return { r, g, b, a: a / 255 };
}
case 'rgb': {
const [r, g, b] = binary.readFloat32Array(3);
return { r: Math.floor(r * 255), g: Math.floor(g * 255), b: Math.floor(b * 255), a: 1 };
}
}
}
static accumulateFrom({ r, g, b, a }, mode) {
const buffer = new ArrayBuffer(Color.sizeOf(mode));
const binary = new BinaryIO(buffer);
switch (mode) {
case 'abgr': {
binary.writeUint8Array([a * 255, b, g, r]);
break;
}
case 'bgra': {
binary.writeUint8Array([b, g, r, a * 255]);
break;
}
case 'rgb': {
binary.writeFloat32Array([r / 255, g / 255, b / 255]);
break;
}
}
return buffer;
}
static sizeOf(mode) {
switch (mode) {
case 'abgr':
case 'bgra': {
return BinaryIO.sizeOfUint8Array(4);
}
case 'rgb': {
return BinaryIO.sizeOfFloat32Array(3);
}
}
}
static get black() {
return {
r: 0,
g: 0,
b: 0,
a: 1,
};
}
static get transparent() {
return {
r: 0,
g: 0,
b: 0,
a: 0,
};
}
}
//# sourceMappingURL=Color.js.map