postext-folio 0.1.2 → 0.2.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.
Files changed (42) hide show
  1. package/README.md +59 -4
  2. package/dist/bookGeometry.d.ts +77 -0
  3. package/dist/bookGeometry.d.ts.map +1 -0
  4. package/dist/bookGeometry.js +204 -0
  5. package/dist/bookGeometry.js.map +1 -0
  6. package/dist/deskTextures.d.ts +24 -0
  7. package/dist/deskTextures.d.ts.map +1 -0
  8. package/dist/deskTextures.js +88 -0
  9. package/dist/deskTextures.js.map +1 -0
  10. package/dist/environments.d.ts +27 -0
  11. package/dist/environments.d.ts.map +1 -0
  12. package/dist/environments.js +97 -0
  13. package/dist/environments.js.map +1 -0
  14. package/dist/index.d.ts +5 -1
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +3 -0
  17. package/dist/index.js.map +1 -1
  18. package/dist/pageFlip.d.ts +160 -26
  19. package/dist/pageFlip.d.ts.map +1 -1
  20. package/dist/pageFlip.js +1272 -340
  21. package/dist/pageFlip.js.map +1 -1
  22. package/dist/pageFlipFlat.d.ts +131 -0
  23. package/dist/pageFlipFlat.d.ts.map +1 -0
  24. package/dist/pageFlipFlat.js +870 -0
  25. package/dist/pageFlipFlat.js.map +1 -0
  26. package/dist/paper.d.ts +40 -0
  27. package/dist/paper.d.ts.map +1 -0
  28. package/dist/paper.js +65 -0
  29. package/dist/paper.js.map +1 -0
  30. package/dist/postext.d.ts +12 -2
  31. package/dist/postext.d.ts.map +1 -1
  32. package/dist/postext.js +167 -6
  33. package/dist/postext.js.map +1 -1
  34. package/dist/procedural.d.ts +35 -0
  35. package/dist/procedural.d.ts.map +1 -0
  36. package/dist/procedural.js +390 -0
  37. package/dist/procedural.js.map +1 -0
  38. package/dist/viewer.d.ts +41 -1
  39. package/dist/viewer.d.ts.map +1 -1
  40. package/dist/viewer.js +133 -16
  41. package/dist/viewer.js.map +1 -1
  42. package/package.json +3 -3
@@ -0,0 +1,97 @@
1
+ import { BackSide, BoxGeometry, Color, Mesh, MeshBasicMaterial, PlaneGeometry, Scene, SphereGeometry, Vector3, } from "three";
2
+ /** An emitter: a panel of light of colour × strength (HDR, so it can be
3
+ * far brighter than white). */
4
+ function panel(w, h, color, strength, at, lookAt = [0, 0, 0]) {
5
+ const m = new Mesh(new PlaneGeometry(w, h), new MeshBasicMaterial({ color: new Color(color).multiplyScalar(strength), side: 2 }));
6
+ m.position.set(...at);
7
+ m.lookAt(...lookAt);
8
+ return m;
9
+ }
10
+ function room(color, strength = 1, size = [20, 20, 12]) {
11
+ const g = new BoxGeometry(...size);
12
+ // The floor (the desk's plane, z < 0 in the room) a little darker.
13
+ const m = new Mesh(g, new MeshBasicMaterial({ color: new Color(color).multiplyScalar(strength), side: BackSide }));
14
+ m.position.z = size[2] / 2 - 2;
15
+ return m;
16
+ }
17
+ function sphere(color, strength, at, r = 0.5) {
18
+ const m = new Mesh(new SphereGeometry(r, 24, 12), new MeshBasicMaterial({ color: new Color(color).multiplyScalar(strength) }));
19
+ m.position.set(...at);
20
+ return m;
21
+ }
22
+ function sceneOf(...objects) {
23
+ const scene = new Scene();
24
+ scene.add(...objects);
25
+ return scene;
26
+ }
27
+ /**
28
+ * The environments: a photographer's studio (a large softbox above left,
29
+ * a fill on the right, a neutral grey room), daylight from a tall window
30
+ * on the left, a warm reading lamp in a dim room, an even overcast sky,
31
+ * and night (a lamp, a faint cool window). Coordinates are in book units
32
+ * where the book is about 2 across, centred at the origin on the desk.
33
+ */
34
+ export function environment(kind) {
35
+ switch (kind) {
36
+ case "studio":
37
+ return {
38
+ scene: sceneOf(room("#6d6d6d"), panel(6, 4, "#ffffff", 7, [-4, 3, 7]), panel(4, 6, "#ffffff", 2.2, [7, -1, 4]), panel(10, 2, "#ffffff", 1.5, [0, 8, 6])),
39
+ key: new Vector3(-0.4, 0.3, 0.86).normalize(),
40
+ keyColor: new Color("#ffffff"),
41
+ keyIntensity: 0.5,
42
+ softness: 0.55,
43
+ exposure: 1.15,
44
+ };
45
+ case "daylight":
46
+ return {
47
+ scene: sceneOf(room("#9a948c"),
48
+ // The window: bright, a little cool; the sky through it brighter
49
+ // above.
50
+ panel(1, 9, "#dfe9ff", 14, [-9.5, 1, 4.5], [0, 1, 4.5]), panel(1, 4, "#f2f6ff", 22, [-9.4, 1, 8], [0, 1, 8]),
51
+ // Sunlit floor bounce.
52
+ panel(8, 4, "#ffe6c4", 1.8, [-3, 0, -1.9], [-3, 0, 5]),
53
+ // Light bounced off the room's far wall.
54
+ panel(10, 8, "#fff8f0", 1.6, [9.5, 0, 4], [0, 0, 4])),
55
+ key: new Vector3(-0.75, 0.15, 0.64).normalize(),
56
+ keyColor: new Color("#fff4e6"),
57
+ keyIntensity: 1.0,
58
+ softness: 0.35,
59
+ exposure: 1.2,
60
+ };
61
+ case "lamp":
62
+ return {
63
+ scene: sceneOf(room("#2a2420", 0.6), sphere("#ffdcb4", 60, [-2.2, 1.8, 3.4], 0.45), panel(3, 3, "#ffd2a4", 0.8, [-2.2, 1.8, 4.2], [-2.2, 1.8, 0])),
64
+ key: new Vector3(-0.5, 0.42, 0.76).normalize(),
65
+ keyColor: new Color("#ffe2c0"),
66
+ keyIntensity: 1.8,
67
+ softness: 0.18,
68
+ exposure: 1.15,
69
+ };
70
+ case "overcast":
71
+ return {
72
+ scene: sceneOf(room("#8c8e92"),
73
+ // The sky round the room more than overhead: the camera looks
74
+ // nearly straight down, so the zenith is what every page mirrors
75
+ // back at it, a veil over the ink (#327). A dim ceiling and four
76
+ // bright walls give as much light with little to reflect.
77
+ panel(18, 18, "#f4f6fa", 0.8, [0, 0, 9.9], [0, 0, 0]), panel(18, 8, "#e6eaf0", 1.7, [0, 9.9, 4.5], [0, 0, 4.5]), panel(18, 8, "#e6eaf0", 1.4, [0, -9.9, 4.5], [0, 0, 4.5]), panel(18, 8, "#e6eaf0", 1.6, [-9.9, 0, 4.5], [0, 0, 4.5]), panel(18, 8, "#e6eaf0", 1.5, [9.9, 0, 4.5], [0, 0, 4.5])),
78
+ // Faint, and far enough off the vertical that its glint on gloss
79
+ // falls off the spread.
80
+ key: new Vector3(-0.4, 0.45, 0.8).normalize(),
81
+ keyColor: new Color("#f3f6ff"),
82
+ keyIntensity: 0.25,
83
+ softness: 1,
84
+ exposure: 1.14,
85
+ };
86
+ case "night":
87
+ return {
88
+ scene: sceneOf(room("#14161c", 0.6), sphere("#ffd8ac", 45, [1.8, 2.4, 3.0], 0.4), panel(1, 6, "#4b5f8c", 1.6, [-9.5, 0, 4], [0, 0, 4])),
89
+ key: new Vector3(0.45, 0.55, 0.7).normalize(),
90
+ keyColor: new Color("#ffdcb2"),
91
+ keyIntensity: 1.6,
92
+ softness: 0.15,
93
+ exposure: 1.25,
94
+ };
95
+ }
96
+ }
97
+ //# sourceMappingURL=environments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environments.js","sourceRoot":"","sources":["../src/environments.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,9 +1,13 @@
1
1
  export { PageFlipper, canFlip } from "./pageFlip";
2
+ export { FlatPageFlipper } from "./pageFlipFlat";
2
3
  export type { PageSource, SpreadSrc } from "./pageFlip";
3
4
  export { spreadsOf, spreadOfPage } from "./spreads";
4
5
  export type { Spread } from "./spreads";
5
6
  export { createFolio } from "./viewer";
6
- export type { FolioLabels, FolioOptions, FolioPage, FolioState, FolioViewer } from "./viewer";
7
+ export type { FolioAppearance, FolioLabels, FolioOptions, FolioPage, FolioState, FolioViewer } from "./viewer";
8
+ export type { FlipAppearance } from "./pageFlip";
9
+ export { paperSpec, type PaperSpec } from "./paper";
10
+ export { loadDeskMaps, type DeskMaps } from "./deskTextures";
7
11
  export { createFolioFromDocument, firstPageIsRecto } from "./postext";
8
12
  export type { FolioDocumentOptions, FolioDocumentViewer } from "./postext";
9
13
  export { FOLIO_CSS } from "./styles";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAClD,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACpD,YAAY,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC9F,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AACtE,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACpD,YAAY,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC/G,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AACtE,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,9 @@
1
1
  export { PageFlipper, canFlip } from "./pageFlip";
2
+ export { FlatPageFlipper } from "./pageFlipFlat";
2
3
  export { spreadsOf, spreadOfPage } from "./spreads";
3
4
  export { createFolio } from "./viewer";
5
+ export { paperSpec } from "./paper";
6
+ export { loadDeskMaps } from "./deskTextures";
4
7
  export { createFolioFromDocument, firstPageIsRecto } from "./postext";
5
8
  export { FOLIO_CSS } from "./styles";
6
9
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAElD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAEtE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGvC,OAAO,EAAE,SAAS,EAAkB,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,YAAY,EAAiB,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAEtE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC"}
@@ -1,22 +1,72 @@
1
+ import { type FolioConfig, type FolioPaperConfig } from "postext";
1
2
  /** A page: an image URL, or a canvas or a decoded image to draw; "" is a
2
3
  * blank page (drawn as paper), null no page at all. */
3
4
  export type PageSource = string | HTMLCanvasElement | HTMLImageElement | null;
4
5
  /** A spread: [verso, recto]. */
5
6
  export type SpreadSrc = [PageSource, PageSource];
7
+ /** How the book is presented: the `folio` settings, the page's physical
8
+ * width, the leaves of the book outside the pages shown (counted for the
9
+ * thickness of the page block) and the paper of each leaf that is not
10
+ * the book's own. */
11
+ export interface FlipAppearance {
12
+ folio?: FolioConfig;
13
+ /** The trim width of a page, mm. Default 150. */
14
+ pageWidthMm?: number;
15
+ /** Leaves before the first spread and after the last one. */
16
+ extraLeaves?: {
17
+ before: number;
18
+ after: number;
19
+ };
20
+ /** Leaf k's own paper (a `:::paper` run), by leaf. */
21
+ leafPapers?: readonly (FolioPaperConfig | undefined)[];
22
+ /** One page per leaf (the single-page view): the leaf's back is blank,
23
+ * so a leaf counts half a sheet towards the block's thickness. */
24
+ singlePage?: boolean;
25
+ /** Where the scanned desk textures are served (a folder holding
26
+ * `manifest.json`, as postext.dev serves under `/folio/textures`).
27
+ * Without it, or until they load, the desk is drawn with procedural
28
+ * maps. */
29
+ textureBaseUrl?: string;
30
+ /** The leaves that are the book's own covers (`folio.binding.cover:
31
+ * 'pages'`): the front board (leaf 0) and the back board (the last
32
+ * leaf), when the document has them. No case is drawn then. */
33
+ coverLeaves?: {
34
+ front?: number;
35
+ back?: number;
36
+ };
37
+ /** The picture printed on the spine (`folio.binding.spineImage`): the
38
+ * spine as seen with the book standing, head up and the front cover to
39
+ * the right. Fitted to cover the back of the block, centred. A
40
+ * saddle-stitched book has no spine and shows none. */
41
+ spineImage?: PageSource;
42
+ }
43
+ /**
44
+ * The stock a publisher would print a book of `pages` pages on, when its
45
+ * settings name none: a long book goes on lighter paper, a very long one
46
+ * on bible paper (2,000 pages make a volume about 4.5 cm thick, not 11).
47
+ * Settings that name a stock, a grammage or a bulk are kept as they are.
48
+ */
49
+ export declare function withStockForExtent(folio: FolioConfig | undefined, pages: number): FolioConfig | undefined;
6
50
  /**
7
- * Turns the pages of the light table's DOM spread. The book is a stack of
8
- * leaves: leaf k has spread k's recto on its front and spread k + 1's verso
9
- * on its back. `go(n)` sends every leaf before spread n to the left and
10
- * the rest to the right; each turns on its own, following the one before
11
- * it at a short remove, so several pages can be in the air at once. At
12
- * rest the canvas is transparent and the <img> pages show; while leaves
13
- * move it draws the spread, lit, with the lifted leaves' shadows.
51
+ * Turns the pages of the viewer's DOM spread in a 3D scene: the book lies
52
+ * open on a desk, seen from in front and above (tilted by `folio.tilt`),
53
+ * lit by an environment (image-based light, reflected by glossy paper) and
54
+ * a key light that casts the shadows. The pages already read and those
55
+ * still to come form two blocks of real thickness (leaf count × the
56
+ * paper's caliper, the book's other chapters included), bound in a case or
57
+ * a soft cover; the open pages curve down into the gutter, whose darkness
58
+ * is the occlusion of that shape.
59
+ *
60
+ * The book is a stack of leaves: leaf k has spread k's recto on its front
61
+ * and spread k + 1's verso on its back. `go(n)` sends every leaf before
62
+ * spread n to the left and the rest to the right; each turns on its own,
63
+ * following the one before it at a short remove, so several pages can be
64
+ * in the air at once.
14
65
  *
15
66
  * The book is modelled bound on the left. A right-bound one is the same
16
67
  * book seen in a mirror (the DOM spread's `dir="rtl"`): the stage is
17
68
  * mirrored, so the verso lies on the right and the leaves turn from left
18
- * to right, while the page images, the pointer and the light are mirrored
19
- * back to read as they are on the desk.
69
+ * to right, while the page images and the pointer are mirrored back.
20
70
  */
21
71
  export declare class PageFlipper {
22
72
  private canvas;
@@ -31,17 +81,31 @@ export declare class PageFlipper {
31
81
  private left;
32
82
  private right;
33
83
  private desk;
84
+ private stacks;
85
+ private covers;
86
+ private coverMaterial;
87
+ /** The spine picture, once loaded, and the faces it is printed on. */
88
+ private spineSrc;
89
+ private spineTex;
90
+ private spineFaces;
91
+ private edges;
92
+ private key;
93
+ private pmrem;
94
+ private envKind;
95
+ private env;
34
96
  /** Everything on the desk, in the book's own coordinates (mirrored for a
35
97
  * right-bound book). */
36
98
  private stage;
37
99
  /** 1 for a left-bound book, −1 for a right-bound one. */
38
100
  private sign;
39
- /** Towards the light, in the book's coordinates. */
40
- private light;
41
101
  private shadowScene;
42
102
  private shadowCamera;
43
103
  private shadowTarget;
44
- private casterMaterial;
104
+ /** Draw the leaves in the air, and the rest of the book, into the
105
+ * height map. */
106
+ private leafCaster;
107
+ private staticCaster;
108
+ private staticCasters;
45
109
  private leaves;
46
110
  private loader;
47
111
  private textures;
@@ -53,6 +117,7 @@ export declare class PageFlipper {
53
117
  private turns;
54
118
  private target;
55
119
  private raf;
120
+ private lastFrame;
56
121
  private starting;
57
122
  private disposed;
58
123
  /** The spread last reported settled (the one the DOM shows). */
@@ -61,6 +126,21 @@ export declare class PageFlipper {
61
126
  private turnAt;
62
127
  /** A redraw of the book at rest is queued. */
63
128
  private still;
129
+ private appearance;
130
+ private resolved;
131
+ private bookSpec;
132
+ private leafSpecs;
133
+ /** The book's own covers, as stiff laminated board. */
134
+ private coverSpec;
135
+ private surfaces;
136
+ /** What the surfaces were built for. */
137
+ private surfaceKey;
138
+ private raycaster;
139
+ /** The reader's own view (right-drag): turned round the book by `yaw`,
140
+ * tilted by `pitch` (radians from straight above; null: the setting's
141
+ * tilt). */
142
+ private orbit;
143
+ private paper;
64
144
  constructor(canvas: HTMLCanvasElement, spread: HTMLElement, book: SpreadSrc[], at: number, onSettle: (index: number) => void,
65
145
  /** The reader's hand turned the book to another spread. */
66
146
  onTarget: (index: number) => void,
@@ -68,20 +148,63 @@ export declare class PageFlipper {
68
148
  binding?: "left" | "right",
69
149
  /** `persistent`: the canvas draws the book at rest too (the DOM pages
70
150
  * are hidden by the host and serve only as texture sources and text
71
- * alternatives), so a page looks the same lying still and turning. */
72
- /** `turnAt`: how far through its turn (0 … 1) a leaf let go of turns
73
- * over rather than falling back. Default 0.5. */
74
- { persistent, turnAt }?: {
151
+ * alternatives). `turnAt`: how far through its turn (0 … 1) a leaf
152
+ * let go of turns over rather than falling back. Default 0.5. */
153
+ { persistent, turnAt, appearance }?: {
75
154
  persistent?: boolean;
76
155
  turnAt?: number;
156
+ appearance?: FlipAppearance;
77
157
  });
78
- /** Fits the camera so the z = 0 plane maps onto the DOM spread 1:1.
79
- * Sizes are read unrounded and the drawing buffer covers the canvas's
80
- * device pixels exactly, so a page lying flat is drawn texel for pixel,
81
- * as the DOM shows it. */
158
+ private openGeometry;
159
+ /** Changes how the book is presented (paper, binding, desk, light,
160
+ * tilt, the leaves round the pages shown). */
161
+ setAppearance(appearance: FlipAppearance): void;
162
+ /** Puts a scanned surface on the desk: colour (tinted by the surface's
163
+ * colour or the scan's own suggestion), relief, roughness and ambient
164
+ * occlusion, tiled at the scan's physical size. */
165
+ private dressDesk;
166
+ /** Pages in the whole book (the ones shown and those round them). */
167
+ private pageCount;
168
+ /** The colour the book's own boards show at their edges and spine: the
169
+ * setting's cover colour when it names one, else the printed cover's
170
+ * ground. */
171
+ private boardColor;
172
+ private sampled;
173
+ /** The paper of leaf k (outside the pages shown: the book's). */
174
+ private specOf;
175
+ private dressPage;
176
+ private pxPerMm;
177
+ /** The leaves lying on each side now (in the air: neither). */
178
+ private stackLeaves;
179
+ /** Loads the spine picture, then rebuilds the book to print it. */
180
+ private loadSpine;
181
+ /**
182
+ * The spine picture on the two outer faces of the back of the block
183
+ * (the one beside an empty side shows: the front cover is up when the
184
+ * pages lie on the right, down when they lie on the left), fitted to
185
+ * cover a face `depth` thick and `height` long, centred.
186
+ */
187
+ private printSpine;
188
+ private clearSpine;
189
+ /** Rebuilds the book's surfaces, blocks and covers when the stacks change. */
190
+ private buildBook;
191
+ /** The key light over the book, its shadow covering the book and round. */
192
+ private layoutLight;
193
+ /** Sizes the drawing buffer to the canvas's device pixels and frames
194
+ * the tilted book onto the DOM spread: the camera stands in front of
195
+ * the book and above it, as far back as the whole book needs to fit the
196
+ * spread's box, the projection shifted so the book sits centred in it. */
82
197
  private layout;
83
- private flat;
84
- /** The colour of the book's paper (0 … 1), for its blank pages. */
198
+ /** The height of a side's open page away from the gutter. */
199
+ private topZ;
200
+ /** Turns the view round the book (`dx`, px of a drag) and tilts it
201
+ * (`dy`), never below a low angle over the table. */
202
+ orbitBy(dx: number, dy: number): void;
203
+ /** Back to the view the settings give, easing there (the reader let go
204
+ * of the view). */
205
+ resetOrbit(): void;
206
+ private orbitFrame;
207
+ /** The colour of the book's blank pages (0 … 1, as CSS gives it). */
85
208
  setPaper(r: number, g: number, b: number): void;
86
209
  /** Starts loading the pages of these spreads as textures. */
87
210
  preload(indexes: number[]): void;
@@ -104,9 +227,19 @@ export declare class PageFlipper {
104
227
  private lift;
105
228
  private frame;
106
229
  private settle;
107
- /** The pointer on the z = 0 plane, in the book's coordinates (x
108
- * mirrored for a right-bound book). */
230
+ /** The pointer on the pages' plane, in the book's coordinates (x
231
+ * mirrored for a right-bound book): a ray from the eye through the
232
+ * pointer, met with the plane the open pages lie in on that side. */
109
233
  private toWorld;
234
+ /** A board turns on the top of the block it leaves (read before it
235
+ * leaves it); other leaves on the gutter. */
236
+ private hingeOf;
237
+ /** The page under the pointer: +1 the one a forward turn takes (the
238
+ * recto), −1 the other, 0 none. */
239
+ hit(event: {
240
+ clientX: number;
241
+ clientY: number;
242
+ }): 1 | -1 | 0;
110
243
  /** Takes hold of the page under the pointer; false when there is none
111
244
  * to turn (or pages are already in the air). */
112
245
  grab(event: {
@@ -119,8 +252,9 @@ export declare class PageFlipper {
119
252
  clientY: number;
120
253
  }): void;
121
254
  /** Lets go. A click turns the page over from where it was taken; a drag
122
- * carries on over if the page is past halfway or thrown that way, and
123
- * falls back otherwise. */
255
+ * carries on to the nearer side (the throw's speed counted, as if it
256
+ * went on a quarter of a second), the paper easing there from the hand's
257
+ * speed, never jumping. */
124
258
  release(click?: boolean): void;
125
259
  private draw;
126
260
  /** Back to a transparent canvas (the DOM spread shows), unless leaves
@@ -1 +1 @@
1
- {"version":3,"file":"pageFlip.d.ts","sourceRoot":"","sources":["../src/pageFlip.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pageFlip.d.ts","sourceRoot":"","sources":["../src/pageFlip.ts"],"names":[],"mappings":"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"}