@opendisplay/epaper-dithering 4.0.0 → 4.1.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/README.md +14 -3
- package/dist/index.cjs +12 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -2
- package/dist/index.d.ts +4 -2
- package/dist/index.js +12 -3
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -65,8 +65,14 @@ Standard `ColorScheme` values use ideal sRGB colors (e.g. white = 255,255,255).
|
|
|
65
65
|
```typescript
|
|
66
66
|
import { ditherImage, SPECTRA_7_3_6COLOR, BWRY_3_97 } from '@opendisplay/epaper-dithering';
|
|
67
67
|
|
|
68
|
-
// Automatically applies tone compression to fit the display's actual dynamic range
|
|
69
68
|
const dithered = ditherImage(imageBuffer, SPECTRA_7_3_6COLOR, { mode: DitherMode.BURKES });
|
|
69
|
+
|
|
70
|
+
// Opt in when you want automatic tone/gamut compression for photos
|
|
71
|
+
const compressed = ditherImage(imageBuffer, SPECTRA_7_3_6COLOR, {
|
|
72
|
+
mode: DitherMode.BURKES,
|
|
73
|
+
tone: 'auto',
|
|
74
|
+
gamut: 'auto',
|
|
75
|
+
});
|
|
70
76
|
```
|
|
71
77
|
|
|
72
78
|
Available measured palettes: `SPECTRA_7_3_6COLOR_V2`, `SPECTRA_7_3_6COLOR`, `BWRY_3_97`, `MONO_4_26`, `BWRY_4_2`, `SOLUM_BWR`, `HANSHOW_BWR`, `HANSHOW_BWY`.
|
|
@@ -116,11 +122,15 @@ ditherImage(image: ImageBuffer, palette: ColorScheme | ColorPalette, options?: D
|
|
|
116
122
|
| `saturation` | `number` | `1.0` | OKLab saturation multiplier. `0.0` = grayscale, `>1` = boost. Hue-preserving |
|
|
117
123
|
| `shadows` | `number` | `0.0` | Shadow lift strength (S-curve lower half). `0.0` = off, `1.0` = strong |
|
|
118
124
|
| `highlights` | `number` | `0.0` | Highlight compression strength (S-curve upper half). `0.0` = off, `1.0` = strong |
|
|
119
|
-
| `tone` | `number \| 'auto' \| 'off'` | `
|
|
120
|
-
| `gamut` | `number \| 'auto' \| 'off'` | `
|
|
125
|
+
| `tone` | `number \| 'auto' \| 'off'` | `0.0` | Dynamic range compression. `0.0`/`'off'` = disabled; `'auto'` = histogram-based; numeric = fixed strength. Ignored for `ColorScheme` |
|
|
126
|
+
| `gamut` | `number \| 'auto' \| 'off'` | `0.0` | Pre-dither gamut compression. `0.0`/`'off'` = disabled; `'auto'` = activate when image exceeds palette gamut; numeric = fixed. Ignored for `ColorScheme` |
|
|
121
127
|
|
|
122
128
|
Pre-processing pipeline: `exposure → saturation → shadows/highlights → tone → gamut → dither`. Each step is a no-op at its identity value.
|
|
123
129
|
|
|
130
|
+
`DitherMode.NONE` performs direct nearest-color mapping without error diffusion or ordered dithering. Built-in measured palettes carry their canonical firmware `scheme`, so pure display colors map to the corresponding firmware palette index even when measured RGB values are used for matching.
|
|
131
|
+
|
|
132
|
+
For built-in measured palettes, exact canonical display colors are also protected in ordered and error-diffusion modes when pre-processing is off: an image made entirely of display colors is returned as a direct palette-index map, and exact display-color pixels inside a mixed image keep their canonical index instead of being rematched to the measured RGB palette. Pre-processing runs before that exact-pixel check, so explicit `tone: 'auto'`, `gamut: 'auto'`, or other adjustments may intentionally alter those pixels first.
|
|
133
|
+
|
|
124
134
|
Returns `PaletteImageBuffer`.
|
|
125
135
|
|
|
126
136
|
### Color Schemes
|
|
@@ -171,6 +181,7 @@ interface PaletteImageBuffer {
|
|
|
171
181
|
interface ColorPalette {
|
|
172
182
|
readonly colors: Record<string, RGB>;
|
|
173
183
|
readonly accent: string;
|
|
184
|
+
readonly scheme?: number;
|
|
174
185
|
}
|
|
175
186
|
```
|
|
176
187
|
|