arx-convert
Version:
Converts various Arx Fatalis formats to JSON or YAML and back
42 lines • 1.34 kB
JavaScript
import { BinaryIO } from './BinaryIO.js';
export class Color {
static readFrom(binary, mode) {
if (mode === 'bgra') {
const [b, g, r, a] = binary.readUint8Array(4);
return { r, g, b, a: a / 255 };
}
if (mode === 'abgr') {
const [a, b, g, r] = binary.readUint8Array(4);
return { r, g, b, a: a / 255 };
}
const [r, g, b] = binary.readFloat32Array(3);
return { r: r * 255, g: g * 255, b: b * 255, a: 1 };
}
static accumulateFrom({ r, g, b, a }, mode) {
const buffer = new ArrayBuffer(Color.sizeOf(mode));
const binary = new BinaryIO(buffer);
if (mode === 'bgra') {
binary.writeUint8Array([b, g, r, a * 255]);
}
else if (mode === 'abgr') {
binary.writeUint8Array([a * 255, b, g, r]);
}
else {
binary.writeFloat32Array([r / 255, g / 255, b / 255]);
}
return buffer;
}
static sizeOf(mode) {
if (mode === 'rgb') {
return BinaryIO.sizeOfFloat32Array(3);
}
return BinaryIO.sizeOfUint8Array(4);
}
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