@gmitch215/tinyimg 1.0.0 → 1.1.1

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/dist/image.d.ts CHANGED
@@ -20,10 +20,35 @@ export interface EncodeOptions {
20
20
  * apart. Flat-color illustrations pay the most, because hard diagonal edges are what the
21
21
  * omitted modes are for.
22
22
  *
23
- * Formats with nothing to trade ignore it and do the exact thing.
23
+ * PNG reads it too, and its trade splits by content. The encoder compresses an adaptively
24
+ * filtered stream and an unfiltered one and keeps the smaller; `'fast'` compresses only the
25
+ * adaptive one, which is 1.59x to 2.08x. On a photograph the adaptive stream wins anyway, so the
26
+ * output is byte-identical and the speed costs nothing. On flat artwork the unfiltered stream is
27
+ * the one that would have won, so it pays 7.0% more bytes on a mono GIF, 17.2% on
28
+ * `webassembly.png` and 63.1% on a 96x96 logo.
29
+ *
30
+ * Formats with nothing to trade ignore it and do the exact thing, which includes AVIF: the AV1
31
+ * encoder has no bounded search to give up.
24
32
  */
25
33
  effort?: 'fancy' | 'fast';
34
+ /**
35
+ * How hard a lossless stream should be compressed. `'auto'` is the default.
36
+ *
37
+ * A third axis, separate from quality and effort, because for PNG and deflate-compressed TIFF
38
+ * the whole output is the compressor's: there is no quantizer to turn down, so quality says
39
+ * nothing and effort only decides how many candidate streams get compressed. `'auto'` reads
40
+ * quality, which is what every caller got before this option existed.
41
+ *
42
+ * At the longest chain walk this measured 664 bytes against 835 on a logo, for 4.30x the CPU;
43
+ * `'none'` entropy codes without searching for matches at all and can beat `'fast'` on a
44
+ * photograph's filtered rows.
45
+ *
46
+ * Formats with no deflate stream ignore it.
47
+ */
48
+ compression?: 'auto' | 'none' | 'fast' | 'default' | 'best';
26
49
  }
50
+ /** Compression names in the order `TinyCompression` declares them. */
51
+ export declare const COMPRESSION: readonly ["auto", "none", "fast", "default", "best"];
27
52
  /** What {@link Image.fit} takes beyond the target extent. */
28
53
  export interface FitOptions {
29
54
  /** Which part a crop keeps, or where a pad puts the image. */
@@ -112,6 +137,20 @@ export declare class Image {
112
137
  rotate(degrees: 0 | 90 | 180 | 270): this;
113
138
  /** Mirrors along one axis or both. */
114
139
  flip(axis?: FlipAxis): this;
140
+ /**
141
+ * Turns the source upright by the orientation its EXIF names.
142
+ *
143
+ * The decoder returns pixels as stored and a plan's output carries no EXIF block, so an image
144
+ * tagged as rotated would otherwise come out sideways. This appends the flip and turn that
145
+ * orientation stands for, which fold into the output addressing like any other, so it costs no
146
+ * pass. A source with no tag, and every format but JPEG, appends nothing.
147
+ *
148
+ * Call it before any other operation: a crop or resize after it works in display coordinates,
149
+ * and one before it would not.
150
+ *
151
+ * @throws Error If an operation has already been appended.
152
+ */
153
+ autoOrient(): this;
115
154
  /**
116
155
  * Turns by an arbitrary angle, filling the corners with the background.
117
156
  *
@@ -185,6 +224,11 @@ export declare class Image {
185
224
  * its smoothing pass, which is 1.53x on a lossy WebP for 46.8 dB and 1.11x to 1.25x on a
186
225
  * subsampled JPEG for 43.6 to 59.5 dB.
187
226
  *
227
+ * A scaled WebP request gets a second lever, and it is the one that changes how the reduction
228
+ * is computed: the planes are averaged over each output pixel and converted once, rather than
229
+ * the frame being converted and that averaged. Together with the filter skip it is 2.05x to
230
+ * 3.35x for 38.9 dB, and it never allocates the full frame of RGBA.
231
+ *
188
232
  * A lossless format has nothing to drop, because it defines its pixels exactly, so PNG, GIF,
189
233
  * TIFF and lossless WebP decode identically either way. So does a 4:4:4 JPEG, which has no
190
234
  * chroma to upsample.
@@ -202,6 +246,28 @@ export declare class Image {
202
246
  * how the library's own tests assert a plan rather than inferring it from the pixels.
203
247
  */
204
248
  decide(): PlanDecision;
249
+ /**
250
+ * Sets a CPU budget the planner may degrade the request to fit.
251
+ *
252
+ * The Workers Free plan allows 10 milliseconds of CPU per request and does not let a caller
253
+ * pay for more, so a request that does not fit fails outright. With a budget set, the planner
254
+ * prices the plan and, while the estimate is over, gives something up: the effort tier, then
255
+ * nearest for a filter left open, then reductions of the decode. {@link decide} reports what
256
+ * it gave up in
257
+ * {@link PlanDecision.degraded} and the estimate it settled on in
258
+ * {@link PlanDecision.estimateMs}.
259
+ *
260
+ * **A budget is a request, not a guarantee.** The estimate is within about 20%, the levers run
261
+ * out, and a plan can still be over budget after all of them; read `estimateMs` back and
262
+ * compare. Nothing is degraded when the estimate already fits.
263
+ *
264
+ * The encoder is not priced here, because a plan does not carry one. Subtract
265
+ * `module.exports.tiny_encode_cost` for the format being written, or use `budgetMs` on
266
+ * {@link transform}, which does that for you.
267
+ *
268
+ * @param milliseconds The budget, or 0 to remove it.
269
+ */
270
+ budget(milliseconds: number): this;
205
271
  /**
206
272
  * Runs the plan and encodes the result.
207
273
  *
@@ -1 +1 @@
1
- {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../src/ts/image.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../src/ts/image.ts"],"names":[],"mappings":"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"}
package/dist/image.js CHANGED
@@ -44,6 +44,15 @@ const KERNELS = [
44
44
  [1 << 7, 'gray-decode'],
45
45
  [1 << 8, 'neighborhood']
46
46
  ];
47
+ const ORIENTATION = {
48
+ 2: { flip: 'horizontal' },
49
+ 3: { turn: 180 },
50
+ 4: { flip: 'vertical' },
51
+ 5: { flip: 'horizontal', turn: 270 },
52
+ 6: { turn: 90 },
53
+ 7: { flip: 'horizontal', turn: 90 },
54
+ 8: { turn: 270 }
55
+ };
47
56
  const FX_UNSHARP = 0;
48
57
  const Field = {
49
58
  regionX: 0,
@@ -61,8 +70,16 @@ const Field = {
61
70
  collapsed: 12,
62
71
  colorStages: 13,
63
72
  passes: 14,
64
- kernels: 15
73
+ kernels: 15,
74
+ cost: 16,
75
+ degraded: 17
65
76
  };
77
+ const DEGRADES = [
78
+ [1 << 0, 'effort'],
79
+ [1 << 1, 'filter'],
80
+ [1 << 2, 'scale']
81
+ ];
82
+ export const COMPRESSION = ['auto', 'none', 'fast', 'default', 'best'];
66
83
  export class Image {
67
84
  #module;
68
85
  #plan;
@@ -70,16 +87,18 @@ export class Image {
70
87
  #size;
71
88
  #format;
72
89
  #frames;
90
+ #orientation;
73
91
  #after = [];
74
92
  #background;
75
93
  #disposed = false;
76
- constructor(module, plan, buffer, size, format, frames) {
94
+ constructor(module, plan, buffer, size, format, frames, orientation) {
77
95
  this.#module = module;
78
96
  this.#plan = plan;
79
97
  this.#buffer = buffer;
80
98
  this.#size = size;
81
99
  this.#format = format;
82
100
  this.#frames = frames;
101
+ this.#orientation = orientation;
83
102
  }
84
103
  static async open(module, source) {
85
104
  const bytes = await readSource(source);
@@ -94,7 +113,7 @@ export class Image {
94
113
  module.free(buffer);
95
114
  throw error;
96
115
  }
97
- return new Image(module, plan, buffer, bytes.byteLength, info.format, info.frames);
116
+ return new Image(module, plan, buffer, bytes.byteLength, info.format, info.frames, info.orientation);
98
117
  }
99
118
  get sourceFormat() {
100
119
  return this.#format;
@@ -131,6 +150,17 @@ export class Image {
131
150
  }
132
151
  return this;
133
152
  }
153
+ autoOrient() {
154
+ if (this.operations > 0) {
155
+ throw new Error('autoOrient has to be the first operation');
156
+ }
157
+ const step = ORIENTATION[this.#orientation];
158
+ if (step?.flip)
159
+ this.flip(step.flip);
160
+ if (step?.turn)
161
+ this.rotate(step.turn);
162
+ return this;
163
+ }
134
164
  rotateFree(degrees) {
135
165
  this.#alive();
136
166
  const quarter = ((degrees % 360) + 360) % 360;
@@ -241,13 +271,19 @@ export class Image {
241
271
  colorStages: field('colorStages'),
242
272
  passes: field('passes'),
243
273
  kernels: KERNELS.filter(([bit]) => (bits & bit) !== 0).map(([, name]) => name),
244
- estimateMs: module.exports.tiny_plan_cost(this.#plan) / 1000
274
+ estimateMs: field('cost') / 1000,
275
+ degraded: DEGRADES.filter(([bit]) => (field('degraded') & bit) !== 0).map(([, name]) => name)
245
276
  };
246
277
  }
247
278
  finally {
248
279
  module.free(resolution);
249
280
  }
250
281
  }
282
+ budget(milliseconds) {
283
+ this.#alive();
284
+ this.#module.check(this.#module.exports.tiny_plan_set_budget(this.#plan, Math.max(0, Math.round(milliseconds * 1000))), 'budget setting');
285
+ return this;
286
+ }
251
287
  async bytes(format, options = {}) {
252
288
  this.#alive();
253
289
  const target = format ?? this.#format;
@@ -256,13 +292,14 @@ export class Image {
256
292
  }
257
293
  const module = this.#module;
258
294
  const writer = module.alloc(module.exports.tiny_writer_sizeof());
259
- const opts = module.alloc(5);
295
+ const opts = module.alloc(module.exports.tiny_encode_opts_sizeof());
260
296
  const view = module.view();
261
297
  view.setUint8(opts, options.quality ?? 0);
262
298
  view.setUint8(opts + 1, options.lossless ? 1 : 0);
263
299
  view.setUint8(opts + 2, options.progressive ? 1 : 0);
264
300
  view.setUint8(opts + 3, options.stripMetadata ? 1 : 0);
265
301
  view.setUint8(opts + 4, options.effort === 'fast' ? 1 : 0);
302
+ view.setUint8(opts + 5, COMPRESSION.indexOf(options.compression ?? 'auto'));
266
303
  try {
267
304
  module.check(module.exports.tiny_writer_init(writer, 0), 'prepare the encoder');
268
305
  try {
package/dist/image.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"image.js","sourceRoot":"","sources":["../src/ts/image.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"image.js","sourceRoot":"","sources":["../src/ts/image.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tinyimg: image decoding, transformation and drawing for Cloudflare Workers.
2
+ * tinyimg: image decoding, transformation and drawing for WebAssembly.
3
3
  *
4
4
  * The module has to arrive already compiled, because workerd refuses to compile wasm from bytes.
5
5
  * Importing the file is what makes it work there; {@link TinyImgModule.loadBytes} is for node, bun
@@ -40,7 +40,8 @@
40
40
  * after the first operation has already run.
41
41
  */
42
42
  export { Image, mimeFor, type EncodeOptions, type FitOptions } from './image.js';
43
+ export { Font, og, type OgOptions, type OgResult, type TextBox, type TextLine, type TextShadow, type TextStyle } from './text.js';
43
44
  export { TRANSFORM_ORDER, apply, artifactKey, transform, type TransformResult } from './transform.js';
44
45
  export { Err, TinyImgArgumentError, TinyImgBlobError, TinyImgDataError, TinyImgError, TinyImgFormatError, TinyImgMemoryError, TinyImgPlanError, TinyImgTooLargeError, readColor, readSource, type BlobKind, type Color, type Extent, type FaceBox, type Fit, type FlipAxis, type Gravity, type ImageFormat, type ImageInfo, type MetadataPolicy, type PlanDecision, type RawImage, type Rect, type ResampleFilter, type Source, type TransformOptions } from './types.js';
45
- export { Feature, SUPPORTED_ABI, TinyImgLoadError, TinyImgModule, type FeatureName, type Measured, type WorkCounters } from './wasm.js';
46
+ export { Feature, SUPPORTED_ABI, TinyImgLoadError, TinyImgModule, type BuiltinBlob, type FeatureName, type Measured, type WorkCounters } from './wasm.js';
46
47
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/ts/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AACjF,OAAO,EACN,eAAe,EACf,KAAK,EACL,WAAW,EACX,SAAS,EACT,KAAK,eAAe,EACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,GAAG,EACH,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,SAAS,EACT,UAAU,EACV,KAAK,QAAQ,EACb,KAAK,KAAK,EACV,KAAK,MAAM,EACX,KAAK,OAAO,EACZ,KAAK,GAAG,EACR,KAAK,QAAQ,EACb,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,IAAI,EACT,KAAK,cAAc,EACnB,KAAK,MAAM,EACX,KAAK,gBAAgB,EACrB,MAAM,YAAY,CAAC;AACpB,OAAO,EACN,OAAO,EACP,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/ts/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AACjF,OAAO,EACN,IAAI,EACJ,EAAE,EACF,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,SAAS,EACd,MAAM,WAAW,CAAC;AACnB,OAAO,EACN,eAAe,EACf,KAAK,EACL,WAAW,EACX,SAAS,EACT,KAAK,eAAe,EACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,GAAG,EACH,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,SAAS,EACT,UAAU,EACV,KAAK,QAAQ,EACb,KAAK,KAAK,EACV,KAAK,MAAM,EACX,KAAK,OAAO,EACZ,KAAK,GAAG,EACR,KAAK,QAAQ,EACb,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,IAAI,EACT,KAAK,cAAc,EACnB,KAAK,MAAM,EACX,KAAK,gBAAgB,EACrB,MAAM,YAAY,CAAC;AACpB,OAAO,EACN,OAAO,EACP,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,MAAM,WAAW,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export { Image, mimeFor } from './image.js';
2
+ export { Font, og } from './text.js';
2
3
  export { TRANSFORM_ORDER, apply, artifactKey, transform } from './transform.js';
3
4
  export { Err, TinyImgArgumentError, TinyImgBlobError, TinyImgDataError, TinyImgError, TinyImgFormatError, TinyImgMemoryError, TinyImgPlanError, TinyImgTooLargeError, readColor, readSource } from './types.js';
4
5
  export { Feature, SUPPORTED_ABI, TinyImgLoadError, TinyImgModule } from './wasm.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/ts/index.ts"],"names":[],"mappings":"AA0CA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAuC,MAAM,YAAY,CAAC;AACjF,OAAO,EACN,eAAe,EACf,KAAK,EACL,WAAW,EACX,SAAS,EAET,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,GAAG,EACH,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,SAAS,EACT,UAAU,EAiBV,MAAM,YAAY,CAAC;AACpB,OAAO,EACN,OAAO,EACP,aAAa,EACb,gBAAgB,EAChB,aAAa,EAIb,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/ts/index.ts"],"names":[],"mappings":"AA0CA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAuC,MAAM,YAAY,CAAC;AACjF,OAAO,EACN,IAAI,EACJ,EAAE,EAOF,MAAM,WAAW,CAAC;AACnB,OAAO,EACN,eAAe,EACf,KAAK,EACL,WAAW,EACX,SAAS,EAET,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,GAAG,EACH,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,SAAS,EACT,UAAU,EAiBV,MAAM,YAAY,CAAC;AACpB,OAAO,EACN,OAAO,EACP,aAAa,EACb,gBAAgB,EAChB,aAAa,EAKb,MAAM,WAAW,CAAC"}
package/dist/text.d.ts ADDED
@@ -0,0 +1,174 @@
1
+ import { type EncodeOptions } from './image.js';
2
+ import { type Color, type ImageFormat, type Source } from './types.js';
3
+ import type { TinyImgModule } from './wasm.js';
4
+ /** How a run of text is set. Mirrors `TinyTextStyle`. */
5
+ export interface TextStyle {
6
+ /** Em size in pixels. */
7
+ size: number;
8
+ /** Extra space between glyphs. Negative tightens. */
9
+ tracking?: number;
10
+ /** Multiple of the face's own line height. */
11
+ lineHeight?: number;
12
+ /** Apply the face's kern pairs. Defaults to true. */
13
+ kerning?: boolean;
14
+ /** Outline width in pixels. */
15
+ stroke?: number;
16
+ /** The outline's color. */
17
+ strokeColor?: Color;
18
+ /** A shadow under the run, or omitted for none. */
19
+ shadow?: TextShadow;
20
+ }
21
+ /** A shadow under a run of text. Any non-zero field asks for one. */
22
+ export interface TextShadow {
23
+ /** Horizontal offset in pixels. Negative is left. */
24
+ x?: number;
25
+ /** Vertical offset in pixels. Negative is up. */
26
+ y?: number;
27
+ /** Softness in pixels, or 0 for a hard offset copy. */
28
+ blur?: number;
29
+ /** The shadow's color. Defaults to opaque black. */
30
+ color?: Color;
31
+ }
32
+ /** Where a run sits inside the rectangle it was given. Mirrors `TinyTextBox`. */
33
+ export interface TextBox {
34
+ /** Width to wrap inside, or 0 for no wrapping. */
35
+ width?: number;
36
+ /** Height to fill, or 0 for no limit. */
37
+ height?: number;
38
+ /** Where each line sits inside the width. */
39
+ align?: 'left' | 'center' | 'right' | 'justify';
40
+ /** Where the run sits inside the height. */
41
+ valign?: 'top' | 'middle' | 'bottom';
42
+ /** What happens to what does not fit. */
43
+ overflow?: 'clip' | 'ellipsis';
44
+ }
45
+ /** One line of a measured run. Mirrors `TinyTextLine`. */
46
+ export interface TextLine {
47
+ /** Byte offset of the line's first character. */
48
+ at: number;
49
+ /** Bytes the line holds. */
50
+ length: number;
51
+ /** Advance width in pixels. */
52
+ width: number;
53
+ /** Left edge once the alignment is applied. */
54
+ x: number;
55
+ /** Top edge of the line box. */
56
+ y: number;
57
+ /** Baseline, measured down from the top of the run. */
58
+ baseline: number;
59
+ /** Codepoints the line holds. */
60
+ glyphs: number;
61
+ /** Codepoints no face in the chain had a glyph for. */
62
+ missing: number;
63
+ /** The box's height stopped this line being drawn. */
64
+ clipped: boolean;
65
+ /** This line was cut short and ends in an ellipsis. */
66
+ ellipsized: boolean;
67
+ }
68
+ /** A loaded face, held open for as long as the caller needs it. */
69
+ export declare class Font implements Disposable {
70
+ #private;
71
+ private constructor();
72
+ /**
73
+ * Loads a face from a blob, or from the one the module carries.
74
+ *
75
+ * With no id at all this is the compiled-in `sans`, which covers ASCII and eight accented
76
+ * letters and needs no host wiring. A wider glyph set or a different face is
77
+ * {@link TinyImgModule.loadBlob} followed by its id here.
78
+ *
79
+ * @param module The loaded module.
80
+ * @param id The blob id, or omitted for the first resident font and then the builtin.
81
+ */
82
+ static load(module: TinyImgModule, id?: string): Font;
83
+ /** @internal The module pointer, for the drawing entry points. */
84
+ get pointer(): number;
85
+ /** Whether the face has a glyph for a codepoint. */
86
+ has(codepoint: number): boolean;
87
+ /** Releases the face. The bytes it borrowed are the blob's and are not freed. */
88
+ dispose(): void;
89
+ /** Releases the face, so `using` works on it. */
90
+ [Symbol.dispose](): void;
91
+ }
92
+ /** What {@link og} takes. */
93
+ export interface OgOptions {
94
+ /** Card width. Defaults to 1200, which is what the OG spec asks for. */
95
+ width?: number;
96
+ /** Card height. Defaults to 630. */
97
+ height?: number;
98
+ /** Solid background color, drawn under everything. */
99
+ background?: Color;
100
+ /** An image to cover the card with, under the text. */
101
+ image?: Source;
102
+ /** How much of the card the text keeps clear of the edges. Defaults to 64. */
103
+ padding?: number;
104
+ /** The headline. */
105
+ title?: string;
106
+ /** The line under it. */
107
+ subtitle?: string;
108
+ /** A small line at the bottom, for a site name or a date. */
109
+ footer?: string;
110
+ /** Text color. Defaults to white. */
111
+ color?: Color;
112
+ /** Subtitle and footer color. Defaults to {@link OgOptions.color} at 70% alpha. */
113
+ mutedColor?: Color;
114
+ /** Blob id of the face to set it in, or omitted for the one the module carries. */
115
+ font?: string;
116
+ /** Title size in pixels. Defaults to a tenth of the height. */
117
+ titleSize?: number;
118
+ /** Subtitle size. Defaults to two fifths of the title. */
119
+ subtitleSize?: number;
120
+ /** Footer size. Defaults to a quarter of the title. */
121
+ footerSize?: number;
122
+ /** A shadow under the text, which is what keeps a headline readable over a photograph. */
123
+ shadow?: boolean;
124
+ /** Container to encode as. Defaults to PNG. */
125
+ format?: ImageFormat;
126
+ /** Encoder settings. */
127
+ encode?: EncodeOptions;
128
+ }
129
+ /** What {@link og} produces. */
130
+ export interface OgResult {
131
+ /** The encoded card. */
132
+ data: Uint8Array<ArrayBuffer>;
133
+ /** What it was encoded as. */
134
+ format: ImageFormat;
135
+ /** Its content type. */
136
+ contentType: string;
137
+ /** Card width in pixels. */
138
+ width: number;
139
+ /** Card height in pixels. */
140
+ height: number;
141
+ /** Non-zero when the title did not fit and was truncated. */
142
+ titleTruncated: boolean;
143
+ /** Codepoints no face in the chain had a glyph for. */
144
+ missingGlyphs: number;
145
+ /** The bytes as a `Response`, typed and length-set. */
146
+ response(headers?: HeadersInit): Response;
147
+ }
148
+ /**
149
+ * Renders an Open Graph card.
150
+ *
151
+ * The whole of what a social preview needs in one call: a background, a headline that wraps and
152
+ * truncates instead of running off the card, a subtitle, a footer, and a shadow so the text stays
153
+ * readable over a photograph. Nothing has to be loaded first, because the face is compiled in.
154
+ *
155
+ * ```ts
156
+ * const card = await og(tinyimg, {
157
+ * title: 'How a planner made the decode cheap',
158
+ * subtitle: 'Deciding what to decode before decoding it',
159
+ * footer: 'tinyimg.gmitch215.dev',
160
+ * background: '#0b1020'
161
+ * });
162
+ *
163
+ * return card.response({ 'cache-control': 'public, max-age=86400' });
164
+ * ```
165
+ *
166
+ * The report is the part worth reading before serving it: `titleTruncated` says the headline was
167
+ * cut, and `missingGlyphs` says the face had nothing for some of the characters, which is what a
168
+ * card with empty boxes in the headline looks like from the inside.
169
+ *
170
+ * @param module The loaded module.
171
+ * @param options What to draw.
172
+ */
173
+ export declare function og(module: TinyImgModule, options?: OgOptions): Promise<OgResult>;
174
+ //# sourceMappingURL=text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../src/ts/text.ts"],"names":[],"mappings":"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"}