UNPKG

ag-psd

Version:

Library for reading and writing PSD files

83 lines 3.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.readAse = void 0; var psdReader_1 = require("./psdReader"); function readAse(buffer) { var reader = (0, psdReader_1.createReader)(buffer.buffer, buffer.byteOffset, buffer.byteLength); var signature = (0, psdReader_1.readSignature)(reader); // ASEF if (signature !== 'ASEF') throw new Error('Invalid signature'); var versionMajor = (0, psdReader_1.readUint16)(reader); // 1 var versionMinor = (0, psdReader_1.readUint16)(reader); // 0 if (versionMajor !== 1 || versionMinor !== 0) throw new Error('Invalid version'); var blocksCount = (0, psdReader_1.readUint32)(reader); var colorTypes = ['global', 'spot', 'normal']; var ase = { colors: [] }; var group = ase; for (var i = 0; i < blocksCount; i++) { var type = (0, psdReader_1.readUint16)(reader); var length_1 = (0, psdReader_1.readUint32)(reader); var end = reader.offset + length_1; switch (type) { case 0x0001: { // color var nameLength = (0, psdReader_1.readUint16)(reader); var name_1 = (0, psdReader_1.readUnicodeStringWithLength)(reader, nameLength); var colorMode = (0, psdReader_1.readSignature)(reader); var color = void 0; switch (colorMode) { case 'RGB ': color = { r: (0, psdReader_1.readFloat32)(reader), g: (0, psdReader_1.readFloat32)(reader), b: (0, psdReader_1.readFloat32)(reader), type: colorTypes[(0, psdReader_1.readUint16)(reader)], }; break; case 'CMYK': color = { c: (0, psdReader_1.readFloat32)(reader), m: (0, psdReader_1.readFloat32)(reader), y: (0, psdReader_1.readFloat32)(reader), k: (0, psdReader_1.readFloat32)(reader), type: colorTypes[(0, psdReader_1.readUint16)(reader)], }; break; case 'Gray': color = { k: (0, psdReader_1.readFloat32)(reader), type: colorTypes[(0, psdReader_1.readUint16)(reader)], }; break; case 'LAB ': color = { l: (0, psdReader_1.readFloat32)(reader), a: (0, psdReader_1.readFloat32)(reader), b: (0, psdReader_1.readFloat32)(reader), type: colorTypes[(0, psdReader_1.readUint16)(reader)], }; break; default: throw new Error('Invalid color mode'); } group.colors.push({ name: name_1, color: color }); break; } case 0xC001: { // group start var nameLength = (0, psdReader_1.readUint16)(reader); var name_2 = (0, psdReader_1.readUnicodeStringWithLength)(reader, nameLength); ase.colors.push(group = { name: name_2, colors: [] }); break; } case 0xC002: // group end group = ase; break; default: throw new Error('Invalid block type'); } reader.offset = end; } return ase; } exports.readAse = readAse; //# sourceMappingURL=ase.js.map