@lexmata/micropdf 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +191 -0
- package/README.md +985 -0
- package/binding.gyp +73 -0
- package/dist/annot.d.ts +458 -0
- package/dist/annot.d.ts.map +1 -0
- package/dist/annot.js +697 -0
- package/dist/annot.js.map +1 -0
- package/dist/archive.d.ts +128 -0
- package/dist/archive.d.ts.map +1 -0
- package/dist/archive.js +268 -0
- package/dist/archive.js.map +1 -0
- package/dist/buffer.d.ts +572 -0
- package/dist/buffer.d.ts.map +1 -0
- package/dist/buffer.js +971 -0
- package/dist/buffer.js.map +1 -0
- package/dist/colorspace.d.ts +287 -0
- package/dist/colorspace.d.ts.map +1 -0
- package/dist/colorspace.js +542 -0
- package/dist/colorspace.js.map +1 -0
- package/dist/context.d.ts +184 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +320 -0
- package/dist/context.js.map +1 -0
- package/dist/cookie.d.ts +164 -0
- package/dist/cookie.d.ts.map +1 -0
- package/dist/cookie.js +306 -0
- package/dist/cookie.js.map +1 -0
- package/dist/device.d.ts +169 -0
- package/dist/device.d.ts.map +1 -0
- package/dist/device.js +350 -0
- package/dist/device.js.map +1 -0
- package/dist/display-list.d.ts +202 -0
- package/dist/display-list.d.ts.map +1 -0
- package/dist/display-list.js +410 -0
- package/dist/display-list.js.map +1 -0
- package/dist/document.d.ts +637 -0
- package/dist/document.d.ts.map +1 -0
- package/dist/document.js +902 -0
- package/dist/document.js.map +1 -0
- package/dist/easy.d.ts +423 -0
- package/dist/easy.d.ts.map +1 -0
- package/dist/easy.js +644 -0
- package/dist/easy.js.map +1 -0
- package/dist/enhanced.d.ts +226 -0
- package/dist/enhanced.d.ts.map +1 -0
- package/dist/enhanced.js +368 -0
- package/dist/enhanced.js.map +1 -0
- package/dist/filter.d.ts +51 -0
- package/dist/filter.d.ts.map +1 -0
- package/dist/filter.js +381 -0
- package/dist/filter.js.map +1 -0
- package/dist/font.d.ts +222 -0
- package/dist/font.d.ts.map +1 -0
- package/dist/font.js +381 -0
- package/dist/font.js.map +1 -0
- package/dist/form.d.ts +214 -0
- package/dist/form.d.ts.map +1 -0
- package/dist/form.js +497 -0
- package/dist/form.js.map +1 -0
- package/dist/geometry.d.ts +469 -0
- package/dist/geometry.d.ts.map +1 -0
- package/dist/geometry.js +780 -0
- package/dist/geometry.js.map +1 -0
- package/dist/image.d.ts +172 -0
- package/dist/image.d.ts.map +1 -0
- package/dist/image.js +348 -0
- package/dist/image.js.map +1 -0
- package/dist/index.d.ts +171 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +339 -0
- package/dist/index.js.map +1 -0
- package/dist/link.d.ts +168 -0
- package/dist/link.d.ts.map +1 -0
- package/dist/link.js +343 -0
- package/dist/link.js.map +1 -0
- package/dist/micropdf.d.ts +40 -0
- package/dist/micropdf.d.ts.map +1 -0
- package/dist/micropdf.js +45 -0
- package/dist/micropdf.js.map +1 -0
- package/dist/nanopdf.d.ts +40 -0
- package/dist/nanopdf.d.ts.map +1 -0
- package/dist/nanopdf.js +45 -0
- package/dist/nanopdf.js.map +1 -0
- package/dist/native.d.ts +242 -0
- package/dist/native.d.ts.map +1 -0
- package/dist/native.js +509 -0
- package/dist/native.js.map +1 -0
- package/dist/output.d.ts +166 -0
- package/dist/output.d.ts.map +1 -0
- package/dist/output.js +365 -0
- package/dist/output.js.map +1 -0
- package/dist/path.d.ts +420 -0
- package/dist/path.d.ts.map +1 -0
- package/dist/path.js +687 -0
- package/dist/path.js.map +1 -0
- package/dist/pdf/object.d.ts +489 -0
- package/dist/pdf/object.d.ts.map +1 -0
- package/dist/pdf/object.js +1045 -0
- package/dist/pdf/object.js.map +1 -0
- package/dist/pixmap.d.ts +315 -0
- package/dist/pixmap.d.ts.map +1 -0
- package/dist/pixmap.js +590 -0
- package/dist/pixmap.js.map +1 -0
- package/dist/profiler.d.ts +159 -0
- package/dist/profiler.d.ts.map +1 -0
- package/dist/profiler.js +380 -0
- package/dist/profiler.js.map +1 -0
- package/dist/render-options.d.ts +227 -0
- package/dist/render-options.d.ts.map +1 -0
- package/dist/render-options.js +130 -0
- package/dist/render-options.js.map +1 -0
- package/dist/resource-tracking.d.ts +332 -0
- package/dist/resource-tracking.d.ts.map +1 -0
- package/dist/resource-tracking.js +653 -0
- package/dist/resource-tracking.js.map +1 -0
- package/dist/simple.d.ts +276 -0
- package/dist/simple.d.ts.map +1 -0
- package/dist/simple.js +343 -0
- package/dist/simple.js.map +1 -0
- package/dist/stext.d.ts +290 -0
- package/dist/stext.d.ts.map +1 -0
- package/dist/stext.js +312 -0
- package/dist/stext.js.map +1 -0
- package/dist/stream.d.ts +174 -0
- package/dist/stream.d.ts.map +1 -0
- package/dist/stream.js +476 -0
- package/dist/stream.js.map +1 -0
- package/dist/text.d.ts +337 -0
- package/dist/text.d.ts.map +1 -0
- package/dist/text.js +454 -0
- package/dist/text.js.map +1 -0
- package/dist/typed-arrays.d.ts +127 -0
- package/dist/typed-arrays.d.ts.map +1 -0
- package/dist/typed-arrays.js +410 -0
- package/dist/typed-arrays.js.map +1 -0
- package/dist/types.d.ts +358 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +216 -0
- package/dist/types.js.map +1 -0
- package/native/annot.cc +557 -0
- package/native/buffer.cc +204 -0
- package/native/colorspace.cc +166 -0
- package/native/context.cc +84 -0
- package/native/cookie.cc +179 -0
- package/native/device.cc +179 -0
- package/native/display_list.cc +179 -0
- package/native/document.cc +268 -0
- package/native/enhanced.cc +70 -0
- package/native/font.cc +282 -0
- package/native/form.cc +523 -0
- package/native/geometry.cc +255 -0
- package/native/image.cc +216 -0
- package/native/include/micropdf/enhanced.h +38 -0
- package/native/include/micropdf/types.h +36 -0
- package/native/include/micropdf.h +106 -0
- package/native/include/mupdf-ffi.h +39 -0
- package/native/include/mupdf.h +11 -0
- package/native/include/mupdf_minimal.h +381 -0
- package/native/lib/linux-x64/libmicropdf.a +0 -0
- package/native/link.cc +234 -0
- package/native/micropdf.cc +71 -0
- package/native/output.cc +229 -0
- package/native/page.cc +572 -0
- package/native/path.cc +259 -0
- package/native/pixmap.cc +240 -0
- package/native/stext.cc +610 -0
- package/native/stream.cc +239 -0
- package/package.json +120 -0
- package/scripts/build-from-rust.js +97 -0
- package/scripts/install.js +184 -0
|
@@ -0,0 +1,542 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Colorspace - PDF color space handling and color conversion
|
|
3
|
+
*
|
|
4
|
+
* This module provides comprehensive support for PDF color spaces including device
|
|
5
|
+
* color spaces (Gray, RGB, CMYK), indexed colors, ICC profiles, Lab, and more.
|
|
6
|
+
*
|
|
7
|
+
* This module provides 100% API compatibility with MuPDF's colorspace operations.
|
|
8
|
+
*
|
|
9
|
+
* @module colorspace
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import { Colorspace, ColorspaceType } from 'micropdf';
|
|
13
|
+
*
|
|
14
|
+
* // Use device colorspaces
|
|
15
|
+
* const rgb = Colorspace.deviceRGB();
|
|
16
|
+
* const gray = Colorspace.deviceGray();
|
|
17
|
+
* const cmyk = Colorspace.deviceCMYK();
|
|
18
|
+
*
|
|
19
|
+
* console.log(rgb.n); // 3 (components)
|
|
20
|
+
* console.log(gray.n); // 1 (component)
|
|
21
|
+
* console.log(cmyk.n); // 4 (components)
|
|
22
|
+
*
|
|
23
|
+
* // Convert colors between colorspaces
|
|
24
|
+
* const rgbColor = [255, 0, 0]; // Red in RGB (0-255)
|
|
25
|
+
* const normalizedRgb = rgbColor.map(c => c / 255); // Normalize to 0-1
|
|
26
|
+
* const grayColor = rgb.convertColor(gray, normalizedRgb);
|
|
27
|
+
*
|
|
28
|
+
* console.log(grayColor); // [~0.3] (approximately 30% gray)
|
|
29
|
+
*
|
|
30
|
+
* // Create indexed colorspace
|
|
31
|
+
* const palette = new Uint8Array([
|
|
32
|
+
* 255, 0, 0, // Red
|
|
33
|
+
* 0, 255, 0, // Green
|
|
34
|
+
* 0, 0, 255 // Blue
|
|
35
|
+
* ]);
|
|
36
|
+
* const indexed = Colorspace.createIndexed(rgb, 2, palette);
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
/**
|
|
40
|
+
* PDF colorspace types.
|
|
41
|
+
*
|
|
42
|
+
* Colorspace types determine how color values are interpreted and rendered.
|
|
43
|
+
* Each type has a specific number of components and color model.
|
|
44
|
+
*
|
|
45
|
+
* @enum {number}
|
|
46
|
+
* @example
|
|
47
|
+
* ```typescript
|
|
48
|
+
* const cs = Colorspace.deviceRGB();
|
|
49
|
+
*
|
|
50
|
+
* if (cs.type === ColorspaceType.RGB) {
|
|
51
|
+
* console.log('RGB colorspace with 3 components');
|
|
52
|
+
* }
|
|
53
|
+
*
|
|
54
|
+
* // Check colorspace type
|
|
55
|
+
* const isGray = cs.type === ColorspaceType.Gray;
|
|
56
|
+
* const isCMYK = cs.type === ColorspaceType.CMYK;
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
export var ColorspaceType;
|
|
60
|
+
(function (ColorspaceType) {
|
|
61
|
+
/** No colorspace / undefined */
|
|
62
|
+
ColorspaceType[ColorspaceType["None"] = 0] = "None";
|
|
63
|
+
/** Grayscale (1 component: luminance) */
|
|
64
|
+
ColorspaceType[ColorspaceType["Gray"] = 1] = "Gray";
|
|
65
|
+
/** RGB color (3 components: red, green, blue) */
|
|
66
|
+
ColorspaceType[ColorspaceType["RGB"] = 2] = "RGB";
|
|
67
|
+
/** BGR color (3 components: blue, green, red) - reverse of RGB */
|
|
68
|
+
ColorspaceType[ColorspaceType["BGR"] = 3] = "BGR";
|
|
69
|
+
/** CMYK color (4 components: cyan, magenta, yellow, black) - used in printing */
|
|
70
|
+
ColorspaceType[ColorspaceType["CMYK"] = 4] = "CMYK";
|
|
71
|
+
/** Lab color (3 components: L*, a*, b*) - perceptual uniformity */
|
|
72
|
+
ColorspaceType[ColorspaceType["Lab"] = 5] = "Lab";
|
|
73
|
+
/** Indexed color (palette-based, 1 component: index) */
|
|
74
|
+
ColorspaceType[ColorspaceType["Indexed"] = 6] = "Indexed";
|
|
75
|
+
/** Separation color (spot colors, 1 component per colorant) */
|
|
76
|
+
ColorspaceType[ColorspaceType["Separation"] = 7] = "Separation";
|
|
77
|
+
/** DeviceN color (multiple spot colors) */
|
|
78
|
+
ColorspaceType[ColorspaceType["DeviceN"] = 8] = "DeviceN";
|
|
79
|
+
/** ICC profile-based color (variable components) */
|
|
80
|
+
ColorspaceType[ColorspaceType["ICC"] = 9] = "ICC";
|
|
81
|
+
})(ColorspaceType || (ColorspaceType = {}));
|
|
82
|
+
/**
|
|
83
|
+
* A PDF colorspace defining how colors are interpreted.
|
|
84
|
+
*
|
|
85
|
+
* Colorspaces determine the color model and number of components used to represent
|
|
86
|
+
* colors in a PDF. They handle color conversion between different color models and
|
|
87
|
+
* provide color manipulation capabilities.
|
|
88
|
+
*
|
|
89
|
+
* **Device Colorspaces**: Use the singleton factory methods (`deviceGray()`,
|
|
90
|
+
* `deviceRGB()`, `deviceCMYK()`) for standard device colorspaces.
|
|
91
|
+
*
|
|
92
|
+
* **Reference Counting**: Colorspaces use manual reference counting. Call `keep()`
|
|
93
|
+
* to increment the reference count and `drop()` to decrement it.
|
|
94
|
+
*
|
|
95
|
+
* @class Colorspace
|
|
96
|
+
* @example
|
|
97
|
+
* ```typescript
|
|
98
|
+
* // Use device colorspaces (recommended)
|
|
99
|
+
* const rgb = Colorspace.deviceRGB();
|
|
100
|
+
* const gray = Colorspace.deviceGray();
|
|
101
|
+
*
|
|
102
|
+
* // Create a pixmap with RGB colorspace
|
|
103
|
+
* const pixmap = Pixmap.create(rgb, 100, 100, true);
|
|
104
|
+
*
|
|
105
|
+
* // Convert RGB to grayscale
|
|
106
|
+
* const rgbColor = [1.0, 0.0, 0.0]; // Red (normalized 0-1)
|
|
107
|
+
* const grayValue = rgb.convertColor(gray, rgbColor);
|
|
108
|
+
* console.log(grayValue); // [~0.3] (30% gray)
|
|
109
|
+
*
|
|
110
|
+
* // Get colorspace info
|
|
111
|
+
* console.log(rgb.name); // "DeviceRGB"
|
|
112
|
+
* console.log(rgb.n); // 3 (components)
|
|
113
|
+
* console.log(rgb.type); // ColorspaceType.RGB
|
|
114
|
+
* ```
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* ```typescript
|
|
118
|
+
* // Create indexed colorspace for palette-based colors
|
|
119
|
+
* const base = Colorspace.deviceRGB();
|
|
120
|
+
* const palette = new Uint8Array([
|
|
121
|
+
* 255, 0, 0, // Index 0: Red
|
|
122
|
+
* 0, 255, 0, // Index 1: Green
|
|
123
|
+
* 0, 0, 255, // Index 2: Blue
|
|
124
|
+
* 255, 255, 0, // Index 3: Yellow
|
|
125
|
+
* ]);
|
|
126
|
+
*
|
|
127
|
+
* const indexed = Colorspace.createIndexed(base, 3, palette);
|
|
128
|
+
* console.log(indexed.n); // 1 (index component)
|
|
129
|
+
*
|
|
130
|
+
* // Use index 0 (red), 1 (green), 2 (blue), or 3 (yellow)
|
|
131
|
+
* ```
|
|
132
|
+
*
|
|
133
|
+
* @example
|
|
134
|
+
* ```typescript
|
|
135
|
+
* // Color conversion between colorspaces
|
|
136
|
+
* const rgb = Colorspace.deviceRGB();
|
|
137
|
+
* const cmyk = Colorspace.deviceCMYK();
|
|
138
|
+
* const gray = Colorspace.deviceGray();
|
|
139
|
+
*
|
|
140
|
+
* // Red in RGB
|
|
141
|
+
* const red = [1.0, 0.0, 0.0];
|
|
142
|
+
*
|
|
143
|
+
* // Convert RGB to CMYK
|
|
144
|
+
* const cmykRed = rgb.convertColor(cmyk, red);
|
|
145
|
+
* console.log(cmykRed); // [0, 1, 1, 0] (cyan=0, magenta=100%, yellow=100%, black=0)
|
|
146
|
+
*
|
|
147
|
+
* // Convert RGB to grayscale
|
|
148
|
+
* const grayRed = rgb.convertColor(gray, red);
|
|
149
|
+
* console.log(grayRed); // [~0.3] (30% gray - perceptual luminance)
|
|
150
|
+
* ```
|
|
151
|
+
*/
|
|
152
|
+
export class Colorspace {
|
|
153
|
+
_type;
|
|
154
|
+
_n;
|
|
155
|
+
_name;
|
|
156
|
+
_refCount = 1;
|
|
157
|
+
_base = null;
|
|
158
|
+
_high = 255;
|
|
159
|
+
_lookup = null;
|
|
160
|
+
_colorants = [];
|
|
161
|
+
constructor(type, n, name) {
|
|
162
|
+
this._type = type;
|
|
163
|
+
this._n = n;
|
|
164
|
+
this._name = name || this.getDefaultName(type);
|
|
165
|
+
}
|
|
166
|
+
getDefaultName(type) {
|
|
167
|
+
const names = {
|
|
168
|
+
[ColorspaceType.None]: 'None',
|
|
169
|
+
[ColorspaceType.Gray]: 'DeviceGray',
|
|
170
|
+
[ColorspaceType.RGB]: 'DeviceRGB',
|
|
171
|
+
[ColorspaceType.BGR]: 'DeviceBGR',
|
|
172
|
+
[ColorspaceType.CMYK]: 'DeviceCMYK',
|
|
173
|
+
[ColorspaceType.Lab]: 'Lab',
|
|
174
|
+
[ColorspaceType.Indexed]: 'Indexed',
|
|
175
|
+
[ColorspaceType.Separation]: 'Separation',
|
|
176
|
+
[ColorspaceType.DeviceN]: 'DeviceN',
|
|
177
|
+
[ColorspaceType.ICC]: 'ICCBased'
|
|
178
|
+
};
|
|
179
|
+
return names[type];
|
|
180
|
+
}
|
|
181
|
+
// ============================================================================
|
|
182
|
+
// Device Colorspaces (Singletons)
|
|
183
|
+
// ============================================================================
|
|
184
|
+
static _deviceGray = null;
|
|
185
|
+
static _deviceRGB = null;
|
|
186
|
+
static _deviceBGR = null;
|
|
187
|
+
static _deviceCMYK = null;
|
|
188
|
+
static _deviceLab = null;
|
|
189
|
+
static _deviceSRGB = null;
|
|
190
|
+
static _deviceGrayscale = null;
|
|
191
|
+
static deviceGray() {
|
|
192
|
+
if (!Colorspace._deviceGray) {
|
|
193
|
+
Colorspace._deviceGray = new Colorspace(ColorspaceType.Gray, 1);
|
|
194
|
+
}
|
|
195
|
+
return Colorspace._deviceGray;
|
|
196
|
+
}
|
|
197
|
+
static deviceRGB() {
|
|
198
|
+
if (!Colorspace._deviceRGB) {
|
|
199
|
+
Colorspace._deviceRGB = new Colorspace(ColorspaceType.RGB, 3);
|
|
200
|
+
}
|
|
201
|
+
return Colorspace._deviceRGB;
|
|
202
|
+
}
|
|
203
|
+
static deviceBGR() {
|
|
204
|
+
if (!Colorspace._deviceBGR) {
|
|
205
|
+
Colorspace._deviceBGR = new Colorspace(ColorspaceType.BGR, 3);
|
|
206
|
+
}
|
|
207
|
+
return Colorspace._deviceBGR;
|
|
208
|
+
}
|
|
209
|
+
static deviceCMYK() {
|
|
210
|
+
if (!Colorspace._deviceCMYK) {
|
|
211
|
+
Colorspace._deviceCMYK = new Colorspace(ColorspaceType.CMYK, 4);
|
|
212
|
+
}
|
|
213
|
+
return Colorspace._deviceCMYK;
|
|
214
|
+
}
|
|
215
|
+
static deviceLab() {
|
|
216
|
+
if (!Colorspace._deviceLab) {
|
|
217
|
+
Colorspace._deviceLab = new Colorspace(ColorspaceType.Lab, 3);
|
|
218
|
+
}
|
|
219
|
+
return Colorspace._deviceLab;
|
|
220
|
+
}
|
|
221
|
+
static deviceSRGB() {
|
|
222
|
+
if (!Colorspace._deviceSRGB) {
|
|
223
|
+
Colorspace._deviceSRGB = new Colorspace(ColorspaceType.RGB, 3, 'sRGB');
|
|
224
|
+
}
|
|
225
|
+
return Colorspace._deviceSRGB;
|
|
226
|
+
}
|
|
227
|
+
static deviceGrayscale() {
|
|
228
|
+
if (!Colorspace._deviceGrayscale) {
|
|
229
|
+
Colorspace._deviceGrayscale = new Colorspace(ColorspaceType.Gray, 1, 'Grayscale');
|
|
230
|
+
}
|
|
231
|
+
return Colorspace._deviceGrayscale;
|
|
232
|
+
}
|
|
233
|
+
// Convenience aliases
|
|
234
|
+
static createGray() {
|
|
235
|
+
return Colorspace.deviceGray();
|
|
236
|
+
}
|
|
237
|
+
static createRGB() {
|
|
238
|
+
return Colorspace.deviceRGB();
|
|
239
|
+
}
|
|
240
|
+
static createCMYK() {
|
|
241
|
+
return Colorspace.deviceCMYK();
|
|
242
|
+
}
|
|
243
|
+
// ============================================================================
|
|
244
|
+
// Reference Counting
|
|
245
|
+
// ============================================================================
|
|
246
|
+
keep() {
|
|
247
|
+
this._refCount++;
|
|
248
|
+
return this;
|
|
249
|
+
}
|
|
250
|
+
drop() {
|
|
251
|
+
if (this._refCount > 0) {
|
|
252
|
+
this._refCount--;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Clone this colorspace
|
|
257
|
+
*/
|
|
258
|
+
clone() {
|
|
259
|
+
const cloned = new Colorspace(this._type, this._n, this._name);
|
|
260
|
+
cloned._base = this._base;
|
|
261
|
+
cloned._high = this._high;
|
|
262
|
+
cloned._lookup = this._lookup ? new Uint8Array(this._lookup) : null;
|
|
263
|
+
cloned._colorants = [...this._colorants];
|
|
264
|
+
return cloned;
|
|
265
|
+
}
|
|
266
|
+
// ============================================================================
|
|
267
|
+
// Properties
|
|
268
|
+
// ============================================================================
|
|
269
|
+
/**
|
|
270
|
+
* Get number of components
|
|
271
|
+
*/
|
|
272
|
+
get n() {
|
|
273
|
+
return this._n;
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Get colorspace type
|
|
277
|
+
*/
|
|
278
|
+
get type() {
|
|
279
|
+
return this._type;
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Get colorspace name
|
|
283
|
+
*/
|
|
284
|
+
get name() {
|
|
285
|
+
return this._name;
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Get name as string (alias)
|
|
289
|
+
*/
|
|
290
|
+
nameString() {
|
|
291
|
+
return this._name;
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Get base colorspace (for indexed/separation)
|
|
295
|
+
*/
|
|
296
|
+
base() {
|
|
297
|
+
return this._base;
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Get base colorspace component count
|
|
301
|
+
*/
|
|
302
|
+
baseN() {
|
|
303
|
+
return this._base ? this._base.n : 0;
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Get high value (for indexed)
|
|
307
|
+
*/
|
|
308
|
+
high() {
|
|
309
|
+
return this._high;
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Get lookup table (for indexed)
|
|
313
|
+
*/
|
|
314
|
+
lookup() {
|
|
315
|
+
return this._lookup;
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Get maximum color value
|
|
319
|
+
*/
|
|
320
|
+
max() {
|
|
321
|
+
return this._type === ColorspaceType.Lab ? 100 : 1;
|
|
322
|
+
}
|
|
323
|
+
// ============================================================================
|
|
324
|
+
// Type Checking
|
|
325
|
+
// ============================================================================
|
|
326
|
+
isGray() {
|
|
327
|
+
return this._type === ColorspaceType.Gray;
|
|
328
|
+
}
|
|
329
|
+
isRGB() {
|
|
330
|
+
return this._type === ColorspaceType.RGB || this._type === ColorspaceType.BGR;
|
|
331
|
+
}
|
|
332
|
+
isCMYK() {
|
|
333
|
+
return this._type === ColorspaceType.CMYK;
|
|
334
|
+
}
|
|
335
|
+
isLab() {
|
|
336
|
+
return this._type === ColorspaceType.Lab;
|
|
337
|
+
}
|
|
338
|
+
isDevice() {
|
|
339
|
+
return (this._type === ColorspaceType.Gray ||
|
|
340
|
+
this._type === ColorspaceType.RGB ||
|
|
341
|
+
this._type === ColorspaceType.BGR ||
|
|
342
|
+
this._type === ColorspaceType.CMYK);
|
|
343
|
+
}
|
|
344
|
+
isIndexed() {
|
|
345
|
+
return this._type === ColorspaceType.Indexed;
|
|
346
|
+
}
|
|
347
|
+
isDeviceN() {
|
|
348
|
+
return this._type === ColorspaceType.DeviceN;
|
|
349
|
+
}
|
|
350
|
+
isICC() {
|
|
351
|
+
return this._type === ColorspaceType.ICC;
|
|
352
|
+
}
|
|
353
|
+
isSubtractive() {
|
|
354
|
+
return this._type === ColorspaceType.CMYK;
|
|
355
|
+
}
|
|
356
|
+
// ============================================================================
|
|
357
|
+
// DeviceN Colorspace Checks
|
|
358
|
+
// ============================================================================
|
|
359
|
+
deviceNHasCMYK() {
|
|
360
|
+
if (this._type !== ColorspaceType.DeviceN) {
|
|
361
|
+
return false;
|
|
362
|
+
}
|
|
363
|
+
return this._colorants.some((c) => ['Cyan', 'Magenta', 'Yellow', 'Black'].includes(c));
|
|
364
|
+
}
|
|
365
|
+
deviceNHasOnlyCMYK() {
|
|
366
|
+
if (this._type !== ColorspaceType.DeviceN) {
|
|
367
|
+
return false;
|
|
368
|
+
}
|
|
369
|
+
return this._colorants.every((c) => ['Cyan', 'Magenta', 'Yellow', 'Black'].includes(c));
|
|
370
|
+
}
|
|
371
|
+
hasSpots() {
|
|
372
|
+
return this._type === ColorspaceType.Separation || this._type === ColorspaceType.DeviceN;
|
|
373
|
+
}
|
|
374
|
+
numSpots() {
|
|
375
|
+
if (this._type === ColorspaceType.Separation) {
|
|
376
|
+
return 1;
|
|
377
|
+
}
|
|
378
|
+
if (this._type === ColorspaceType.DeviceN) {
|
|
379
|
+
return this._colorants.length;
|
|
380
|
+
}
|
|
381
|
+
return 0;
|
|
382
|
+
}
|
|
383
|
+
// ============================================================================
|
|
384
|
+
// Colorants
|
|
385
|
+
// ============================================================================
|
|
386
|
+
/**
|
|
387
|
+
* Get colorant name by index
|
|
388
|
+
*/
|
|
389
|
+
colorant(index) {
|
|
390
|
+
return this._colorants[index] || null;
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* Get number of colorants
|
|
394
|
+
*/
|
|
395
|
+
numColorants() {
|
|
396
|
+
return this._colorants.length;
|
|
397
|
+
}
|
|
398
|
+
/**
|
|
399
|
+
* Get all colorants
|
|
400
|
+
*/
|
|
401
|
+
getColorants() {
|
|
402
|
+
return [...this._colorants];
|
|
403
|
+
}
|
|
404
|
+
// ============================================================================
|
|
405
|
+
// Factory Methods
|
|
406
|
+
// ============================================================================
|
|
407
|
+
/**
|
|
408
|
+
* Create indexed colorspace
|
|
409
|
+
*/
|
|
410
|
+
static createIndexed(base, high, lookup) {
|
|
411
|
+
const cs = new Colorspace(ColorspaceType.Indexed, 1, 'Indexed');
|
|
412
|
+
cs._base = base;
|
|
413
|
+
cs._high = high;
|
|
414
|
+
cs._lookup = lookup;
|
|
415
|
+
return cs;
|
|
416
|
+
}
|
|
417
|
+
/**
|
|
418
|
+
* Create DeviceN colorspace
|
|
419
|
+
*/
|
|
420
|
+
static createDeviceN(colorants) {
|
|
421
|
+
const cs = new Colorspace(ColorspaceType.DeviceN, colorants.length, 'DeviceN');
|
|
422
|
+
cs._colorants = [...colorants];
|
|
423
|
+
return cs;
|
|
424
|
+
}
|
|
425
|
+
/**
|
|
426
|
+
* Create ICC-based colorspace
|
|
427
|
+
*/
|
|
428
|
+
static createICC(n, name) {
|
|
429
|
+
return new Colorspace(ColorspaceType.ICC, n, name || 'ICCBased');
|
|
430
|
+
}
|
|
431
|
+
// ============================================================================
|
|
432
|
+
// Color Conversion
|
|
433
|
+
// ============================================================================
|
|
434
|
+
/**
|
|
435
|
+
* Convert color from this colorspace to another
|
|
436
|
+
*/
|
|
437
|
+
convertColor(destCS, srcColor) {
|
|
438
|
+
if (this.equals(destCS)) {
|
|
439
|
+
return [...srcColor];
|
|
440
|
+
}
|
|
441
|
+
// Convert to RGB as intermediate
|
|
442
|
+
const rgb = this.toRGB(srcColor);
|
|
443
|
+
// Convert from RGB to destination
|
|
444
|
+
return destCS.fromRGB(rgb);
|
|
445
|
+
}
|
|
446
|
+
/**
|
|
447
|
+
* Convert color to RGB
|
|
448
|
+
*/
|
|
449
|
+
toRGB(color) {
|
|
450
|
+
switch (this._type) {
|
|
451
|
+
case ColorspaceType.Gray:
|
|
452
|
+
return [color[0], color[0], color[0]];
|
|
453
|
+
case ColorspaceType.RGB:
|
|
454
|
+
return [color[0], color[1], color[2]];
|
|
455
|
+
case ColorspaceType.BGR:
|
|
456
|
+
return [color[2], color[1], color[0]];
|
|
457
|
+
case ColorspaceType.CMYK: {
|
|
458
|
+
const c = color[0];
|
|
459
|
+
const m = color[1];
|
|
460
|
+
const y = color[2];
|
|
461
|
+
const k = color[3];
|
|
462
|
+
return [(1 - c) * (1 - k), (1 - m) * (1 - k), (1 - y) * (1 - k)];
|
|
463
|
+
}
|
|
464
|
+
default:
|
|
465
|
+
return [0, 0, 0];
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
/**
|
|
469
|
+
* Convert RGB to this colorspace
|
|
470
|
+
*/
|
|
471
|
+
fromRGB(rgb) {
|
|
472
|
+
const [r, g, b] = rgb;
|
|
473
|
+
switch (this._type) {
|
|
474
|
+
case ColorspaceType.Gray:
|
|
475
|
+
return [0.299 * r + 0.587 * g + 0.114 * b];
|
|
476
|
+
case ColorspaceType.RGB:
|
|
477
|
+
return [r, g, b];
|
|
478
|
+
case ColorspaceType.BGR:
|
|
479
|
+
return [b, g, r];
|
|
480
|
+
case ColorspaceType.CMYK: {
|
|
481
|
+
const k = 1 - Math.max(r, g, b);
|
|
482
|
+
if (k === 1) {
|
|
483
|
+
return [0, 0, 0, 1];
|
|
484
|
+
}
|
|
485
|
+
return [(1 - r - k) / (1 - k), (1 - g - k) / (1 - k), (1 - b - k) / (1 - k), k];
|
|
486
|
+
}
|
|
487
|
+
default:
|
|
488
|
+
return new Array(this._n).fill(0);
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
/**
|
|
492
|
+
* Convert a single pixel
|
|
493
|
+
*/
|
|
494
|
+
convertPixel(destCS, srcPixel, destPixel) {
|
|
495
|
+
const srcColor = [...srcPixel.slice(0, this._n)].map((v) => v / 255);
|
|
496
|
+
const destColor = this.convertColor(destCS, srcColor);
|
|
497
|
+
for (let i = 0; i < destCS._n; i++) {
|
|
498
|
+
destPixel[i] = Math.round(destColor[i] * 255);
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
/**
|
|
502
|
+
* Clamp color values to valid range
|
|
503
|
+
*/
|
|
504
|
+
clampColor(color) {
|
|
505
|
+
const max = this.max();
|
|
506
|
+
return color.map((v) => Math.max(0, Math.min(max, v)));
|
|
507
|
+
}
|
|
508
|
+
// ============================================================================
|
|
509
|
+
// Comparison
|
|
510
|
+
// ============================================================================
|
|
511
|
+
/**
|
|
512
|
+
* Check if two colorspaces are equal
|
|
513
|
+
*/
|
|
514
|
+
equals(other) {
|
|
515
|
+
if (this._type !== other._type) {
|
|
516
|
+
return false;
|
|
517
|
+
}
|
|
518
|
+
if (this._n !== other._n) {
|
|
519
|
+
return false;
|
|
520
|
+
}
|
|
521
|
+
if (this._name !== other._name) {
|
|
522
|
+
return false;
|
|
523
|
+
}
|
|
524
|
+
return true;
|
|
525
|
+
}
|
|
526
|
+
// ============================================================================
|
|
527
|
+
// Validation
|
|
528
|
+
// ============================================================================
|
|
529
|
+
/**
|
|
530
|
+
* Check if colorspace is valid
|
|
531
|
+
*/
|
|
532
|
+
isValid() {
|
|
533
|
+
if (this._n <= 0 || this._n > 32) {
|
|
534
|
+
return false;
|
|
535
|
+
}
|
|
536
|
+
if (this._type === ColorspaceType.None) {
|
|
537
|
+
return false;
|
|
538
|
+
}
|
|
539
|
+
return true;
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
//# sourceMappingURL=colorspace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colorspace.js","sourceRoot":"","sources":["../src/colorspace.ts"],"names":[],"mappings":"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"}
|