postext 1.35.1 → 1.37.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.
Files changed (273) hide show
  1. package/dist/__bench__/composedPage.bench.test.d.ts +2 -0
  2. package/dist/__bench__/composedPage.bench.test.d.ts.map +1 -0
  3. package/dist/__bench__/composedPage.bench.test.js +95 -0
  4. package/dist/__bench__/composedPage.bench.test.js.map +1 -0
  5. package/dist/__tests__/composed/continuation.test.d.ts +2 -0
  6. package/dist/__tests__/composed/continuation.test.d.ts.map +1 -0
  7. package/dist/__tests__/composed/continuation.test.js +352 -0
  8. package/dist/__tests__/composed/continuation.test.js.map +1 -0
  9. package/dist/__tests__/composed/contrast.test.d.ts +2 -0
  10. package/dist/__tests__/composed/contrast.test.d.ts.map +1 -0
  11. package/dist/__tests__/composed/contrast.test.js +124 -0
  12. package/dist/__tests__/composed/contrast.test.js.map +1 -0
  13. package/dist/__tests__/composed/corpus.test.js +7 -1
  14. package/dist/__tests__/composed/corpus.test.js.map +1 -1
  15. package/dist/__tests__/composed/fit.test.d.ts +2 -0
  16. package/dist/__tests__/composed/fit.test.d.ts.map +1 -0
  17. package/dist/__tests__/composed/fit.test.js +408 -0
  18. package/dist/__tests__/composed/fit.test.js.map +1 -0
  19. package/dist/__tests__/composed/groups.test.js +14 -0
  20. package/dist/__tests__/composed/groups.test.js.map +1 -1
  21. package/dist/__tests__/composed/headingDesigns.test.d.ts +2 -0
  22. package/dist/__tests__/composed/headingDesigns.test.d.ts.map +1 -0
  23. package/dist/__tests__/composed/headingDesigns.test.js +262 -0
  24. package/dist/__tests__/composed/headingDesigns.test.js.map +1 -0
  25. package/dist/__tests__/composed/labels.test.d.ts +2 -0
  26. package/dist/__tests__/composed/labels.test.d.ts.map +1 -0
  27. package/dist/__tests__/composed/labels.test.js +326 -0
  28. package/dist/__tests__/composed/labels.test.js.map +1 -0
  29. package/dist/__tests__/composed/layout.test.js +2 -1
  30. package/dist/__tests__/composed/layout.test.js.map +1 -1
  31. package/dist/__tests__/composed/outsidePrint.test.js +5 -2
  32. package/dist/__tests__/composed/outsidePrint.test.js.map +1 -1
  33. package/dist/__tests__/composed/pageMemo.test.d.ts +2 -0
  34. package/dist/__tests__/composed/pageMemo.test.d.ts.map +1 -0
  35. package/dist/__tests__/composed/pageMemo.test.js +128 -0
  36. package/dist/__tests__/composed/pageMemo.test.js.map +1 -0
  37. package/dist/__tests__/composed/sourceMap.test.d.ts +2 -0
  38. package/dist/__tests__/composed/sourceMap.test.d.ts.map +1 -0
  39. package/dist/__tests__/composed/sourceMap.test.js +395 -0
  40. package/dist/__tests__/composed/sourceMap.test.js.map +1 -0
  41. package/dist/__tests__/composed/spreadLabels.test.d.ts +2 -0
  42. package/dist/__tests__/composed/spreadLabels.test.d.ts.map +1 -0
  43. package/dist/__tests__/composed/spreadLabels.test.js +131 -0
  44. package/dist/__tests__/composed/spreadLabels.test.js.map +1 -0
  45. package/dist/__tests__/composed/templateFrameRects.test.d.ts +2 -0
  46. package/dist/__tests__/composed/templateFrameRects.test.d.ts.map +1 -0
  47. package/dist/__tests__/composed/templateFrameRects.test.js +37 -0
  48. package/dist/__tests__/composed/templateFrameRects.test.js.map +1 -0
  49. package/dist/__tests__/design/imageAltText.test.js +2 -1
  50. package/dist/__tests__/design/imageAltText.test.js.map +1 -1
  51. package/dist/__tests__/exports.test.js +33 -0
  52. package/dist/__tests__/exports.test.js.map +1 -1
  53. package/dist/__tests__/migrate/fixtures/textbookPort.d.ts +14 -0
  54. package/dist/__tests__/migrate/fixtures/textbookPort.d.ts.map +1 -0
  55. package/dist/__tests__/migrate/fixtures/textbookPort.js +116 -0
  56. package/dist/__tests__/migrate/fixtures/textbookPort.js.map +1 -0
  57. package/dist/__tests__/migrate/textToMarkdown.test.d.ts +2 -0
  58. package/dist/__tests__/migrate/textToMarkdown.test.d.ts.map +1 -0
  59. package/dist/__tests__/migrate/textToMarkdown.test.js +268 -0
  60. package/dist/__tests__/migrate/textToMarkdown.test.js.map +1 -0
  61. package/dist/__tests__/paragraphStyleLetterSpacing.test.d.ts +2 -0
  62. package/dist/__tests__/paragraphStyleLetterSpacing.test.d.ts.map +1 -0
  63. package/dist/__tests__/paragraphStyleLetterSpacing.test.js +89 -0
  64. package/dist/__tests__/paragraphStyleLetterSpacing.test.js.map +1 -0
  65. package/dist/__tests__/pictureBelowPrintSize.test.d.ts +2 -0
  66. package/dist/__tests__/pictureBelowPrintSize.test.d.ts.map +1 -0
  67. package/dist/__tests__/pictureBelowPrintSize.test.js +82 -0
  68. package/dist/__tests__/pictureBelowPrintSize.test.js.map +1 -0
  69. package/dist/__tests__/pipeline/contourWrap.test.d.ts +2 -0
  70. package/dist/__tests__/pipeline/contourWrap.test.d.ts.map +1 -0
  71. package/dist/__tests__/pipeline/contourWrap.test.js +412 -0
  72. package/dist/__tests__/pipeline/contourWrap.test.js.map +1 -0
  73. package/dist/__tests__/pipeline/paragraphStyleFaces.test.js +1 -1
  74. package/dist/__tests__/pipeline/paragraphStyleFaces.test.js.map +1 -1
  75. package/dist/__tests__/toc.test.js +3 -2
  76. package/dist/__tests__/toc.test.js.map +1 -1
  77. package/dist/bundle/codec.d.ts +16 -0
  78. package/dist/bundle/codec.d.ts.map +1 -1
  79. package/dist/bundle/codec.js +44 -2
  80. package/dist/bundle/codec.js.map +1 -1
  81. package/dist/bundle/index.d.ts +1 -1
  82. package/dist/bundle/index.d.ts.map +1 -1
  83. package/dist/bundle/index.js +1 -1
  84. package/dist/bundle/index.js.map +1 -1
  85. package/dist/canvas-backend/composed.d.ts +5 -2
  86. package/dist/canvas-backend/composed.d.ts.map +1 -1
  87. package/dist/canvas-backend/composed.js +10 -5
  88. package/dist/canvas-backend/composed.js.map +1 -1
  89. package/dist/canvas-backend/index.d.ts.map +1 -1
  90. package/dist/canvas-backend/index.js +37 -19
  91. package/dist/canvas-backend/index.js.map +1 -1
  92. package/dist/canvas-backend/renderResourceBlock.d.ts +5 -1
  93. package/dist/canvas-backend/renderResourceBlock.d.ts.map +1 -1
  94. package/dist/canvas-backend/renderResourceBlock.js +60 -1
  95. package/dist/canvas-backend/renderResourceBlock.js.map +1 -1
  96. package/dist/composed/continuation.d.ts +102 -0
  97. package/dist/composed/continuation.d.ts.map +1 -0
  98. package/dist/composed/continuation.js +87 -0
  99. package/dist/composed/continuation.js.map +1 -0
  100. package/dist/composed/contour.d.ts +21 -0
  101. package/dist/composed/contour.d.ts.map +1 -0
  102. package/dist/composed/contour.js +34 -0
  103. package/dist/composed/contour.js.map +1 -0
  104. package/dist/composed/geometry.d.ts +8 -0
  105. package/dist/composed/geometry.d.ts.map +1 -1
  106. package/dist/composed/geometry.js +26 -0
  107. package/dist/composed/geometry.js.map +1 -1
  108. package/dist/composed/ids.d.ts +22 -0
  109. package/dist/composed/ids.d.ts.map +1 -0
  110. package/dist/composed/ids.js +32 -0
  111. package/dist/composed/ids.js.map +1 -0
  112. package/dist/composed/labels.d.ts +154 -0
  113. package/dist/composed/labels.d.ts.map +1 -0
  114. package/dist/composed/labels.js +524 -0
  115. package/dist/composed/labels.js.map +1 -0
  116. package/dist/composed/pageMemo.d.ts +73 -0
  117. package/dist/composed/pageMemo.d.ts.map +1 -0
  118. package/dist/composed/pageMemo.js +289 -0
  119. package/dist/composed/pageMemo.js.map +1 -0
  120. package/dist/composed/paint.d.ts +29 -9
  121. package/dist/composed/paint.d.ts.map +1 -1
  122. package/dist/composed/paint.js +41 -7
  123. package/dist/composed/paint.js.map +1 -1
  124. package/dist/composed/reflowLog.d.ts +14 -2
  125. package/dist/composed/reflowLog.d.ts.map +1 -1
  126. package/dist/composed/reflowLog.js +64 -7
  127. package/dist/composed/reflowLog.js.map +1 -1
  128. package/dist/composed/slotChecks.d.ts.map +1 -1
  129. package/dist/composed/slotChecks.js +3 -1
  130. package/dist/composed/slotChecks.js.map +1 -1
  131. package/dist/composed/sourceMap.d.ts +97 -0
  132. package/dist/composed/sourceMap.d.ts.map +1 -0
  133. package/dist/composed/sourceMap.js +748 -0
  134. package/dist/composed/sourceMap.js.map +1 -0
  135. package/dist/composed/spread.d.ts +3 -0
  136. package/dist/composed/spread.d.ts.map +1 -1
  137. package/dist/composed/spread.js +11 -12
  138. package/dist/composed/spread.js.map +1 -1
  139. package/dist/composed/templates.d.ts +1 -0
  140. package/dist/composed/templates.d.ts.map +1 -1
  141. package/dist/composed/templates.js +4 -0
  142. package/dist/composed/templates.js.map +1 -1
  143. package/dist/composed/types.d.ts +15 -32
  144. package/dist/composed/types.d.ts.map +1 -1
  145. package/dist/composed/validate.d.ts.map +1 -1
  146. package/dist/composed/validate.js +3 -2
  147. package/dist/composed/validate.js.map +1 -1
  148. package/dist/composed/wrap.d.ts.map +1 -1
  149. package/dist/composed/wrap.js +7 -1
  150. package/dist/composed/wrap.js.map +1 -1
  151. package/dist/configWarnings.d.ts +15 -0
  152. package/dist/configWarnings.d.ts.map +1 -1
  153. package/dist/configWarnings.js +29 -17
  154. package/dist/configWarnings.js.map +1 -1
  155. package/dist/contour/index.d.ts +134 -0
  156. package/dist/contour/index.d.ts.map +1 -0
  157. package/dist/contour/index.js +354 -0
  158. package/dist/contour/index.js.map +1 -0
  159. package/dist/contour/png.d.ts +16 -0
  160. package/dist/contour/png.d.ts.map +1 -0
  161. package/dist/contour/png.js +173 -0
  162. package/dist/contour/png.js.map +1 -0
  163. package/dist/contrast.d.ts +5 -3
  164. package/dist/contrast.d.ts.map +1 -1
  165. package/dist/contrast.js +46 -5
  166. package/dist/contrast.js.map +1 -1
  167. package/dist/defaults/paragraphStyles.d.ts +1 -1
  168. package/dist/defaults/paragraphStyles.d.ts.map +1 -1
  169. package/dist/defaults/paragraphStyles.js +5 -1
  170. package/dist/defaults/paragraphStyles.js.map +1 -1
  171. package/dist/design/slots.d.ts +12 -10
  172. package/dist/design/slots.d.ts.map +1 -1
  173. package/dist/design/slots.js +26 -2
  174. package/dist/design/slots.js.map +1 -1
  175. package/dist/fonts/faces.d.ts.map +1 -1
  176. package/dist/fonts/faces.js +6 -0
  177. package/dist/fonts/faces.js.map +1 -1
  178. package/dist/highlightMarks.d.ts.map +1 -1
  179. package/dist/highlightMarks.js +6 -0
  180. package/dist/highlightMarks.js.map +1 -1
  181. package/dist/html-backend.d.ts.map +1 -1
  182. package/dist/html-backend.js +42 -4
  183. package/dist/html-backend.js.map +1 -1
  184. package/dist/index.d.ts +18 -7
  185. package/dist/index.d.ts.map +1 -1
  186. package/dist/index.js +18 -4
  187. package/dist/index.js.map +1 -1
  188. package/dist/measure/rich.d.ts.map +1 -1
  189. package/dist/measure/rich.js +2 -0
  190. package/dist/measure/rich.js.map +1 -1
  191. package/dist/migrate/markdownRuns.d.ts +70 -0
  192. package/dist/migrate/markdownRuns.d.ts.map +1 -0
  193. package/dist/migrate/markdownRuns.js +215 -0
  194. package/dist/migrate/markdownRuns.js.map +1 -0
  195. package/dist/migrate/pageDesign.d.ts +119 -0
  196. package/dist/migrate/pageDesign.d.ts.map +1 -0
  197. package/dist/migrate/pageDesign.js +446 -0
  198. package/dist/migrate/pageDesign.js.map +1 -0
  199. package/dist/migrate/textToMarkdown.d.ts +124 -0
  200. package/dist/migrate/textToMarkdown.d.ts.map +1 -0
  201. package/dist/migrate/textToMarkdown.js +716 -0
  202. package/dist/migrate/textToMarkdown.js.map +1 -0
  203. package/dist/parse/blockParser.d.ts.map +1 -1
  204. package/dist/parse/blockParser.js +44 -3
  205. package/dist/parse/blockParser.js.map +1 -1
  206. package/dist/parse/types.d.ts +20 -0
  207. package/dist/parse/types.d.ts.map +1 -1
  208. package/dist/pipeline/build.d.ts.map +1 -1
  209. package/dist/pipeline/build.js +298 -30
  210. package/dist/pipeline/build.js.map +1 -1
  211. package/dist/pipeline/buildMeasurement.d.ts +7 -2
  212. package/dist/pipeline/buildMeasurement.d.ts.map +1 -1
  213. package/dist/pipeline/buildMeasurement.js +21 -5
  214. package/dist/pipeline/buildMeasurement.js.map +1 -1
  215. package/dist/pipeline/calloutLayout.d.ts +39 -14
  216. package/dist/pipeline/calloutLayout.d.ts.map +1 -1
  217. package/dist/pipeline/calloutLayout.js +50 -4
  218. package/dist/pipeline/calloutLayout.js.map +1 -1
  219. package/dist/pipeline/composedLayout.d.ts +51 -6
  220. package/dist/pipeline/composedLayout.d.ts.map +1 -1
  221. package/dist/pipeline/composedLayout.js +633 -78
  222. package/dist/pipeline/composedLayout.js.map +1 -1
  223. package/dist/pipeline/contentWarnings.d.ts +15 -0
  224. package/dist/pipeline/contentWarnings.d.ts.map +1 -1
  225. package/dist/pipeline/contentWarnings.js +98 -4
  226. package/dist/pipeline/contentWarnings.js.map +1 -1
  227. package/dist/pipeline/floatPlacement.d.ts +2 -0
  228. package/dist/pipeline/floatPlacement.d.ts.map +1 -1
  229. package/dist/pipeline/floatPlacement.js +1 -0
  230. package/dist/pipeline/floatPlacement.js.map +1 -1
  231. package/dist/pipeline/frameLayout.d.ts +7 -4
  232. package/dist/pipeline/frameLayout.d.ts.map +1 -1
  233. package/dist/pipeline/frameLayout.js +5 -2
  234. package/dist/pipeline/frameLayout.js.map +1 -1
  235. package/dist/pipeline/headerFooter.d.ts +20 -1
  236. package/dist/pipeline/headerFooter.d.ts.map +1 -1
  237. package/dist/pipeline/headerFooter.js +225 -70
  238. package/dist/pipeline/headerFooter.js.map +1 -1
  239. package/dist/pipeline/measureContentBlock.d.ts.map +1 -1
  240. package/dist/pipeline/measureContentBlock.js +1 -0
  241. package/dist/pipeline/measureContentBlock.js.map +1 -1
  242. package/dist/pipeline/mirrorFrame.d.ts.map +1 -1
  243. package/dist/pipeline/mirrorFrame.js +25 -2
  244. package/dist/pipeline/mirrorFrame.js.map +1 -1
  245. package/dist/pipeline/outline.d.ts.map +1 -1
  246. package/dist/pipeline/outline.js +2 -0
  247. package/dist/pipeline/outline.js.map +1 -1
  248. package/dist/pipeline/resourceLayout.d.ts +28 -0
  249. package/dist/pipeline/resourceLayout.d.ts.map +1 -1
  250. package/dist/pipeline/resourceLayout.js +21 -0
  251. package/dist/pipeline/resourceLayout.js.map +1 -1
  252. package/dist/pipeline/styles.d.ts +1 -1
  253. package/dist/pipeline/styles.d.ts.map +1 -1
  254. package/dist/pipeline/styles.js +4 -0
  255. package/dist/pipeline/styles.js.map +1 -1
  256. package/dist/pipeline/textWrap.d.ts +4 -1
  257. package/dist/pipeline/textWrap.d.ts.map +1 -1
  258. package/dist/pipeline/textWrap.js +17 -3
  259. package/dist/pipeline/textWrap.js.map +1 -1
  260. package/dist/pipeline/toc.d.ts.map +1 -1
  261. package/dist/pipeline/toc.js +1 -0
  262. package/dist/pipeline/toc.js.map +1 -1
  263. package/dist/types.d.ts +77 -2
  264. package/dist/types.d.ts.map +1 -1
  265. package/dist/vdt.d.ts +290 -15
  266. package/dist/vdt.d.ts.map +1 -1
  267. package/dist/vdt.js.map +1 -1
  268. package/dist/word/toDocx.d.ts.map +1 -1
  269. package/dist/word/toDocx.js +14 -0
  270. package/dist/word/toDocx.js.map +1 -1
  271. package/dist/word/word.test.js +11 -1
  272. package/dist/word/word.test.js.map +1 -1
  273. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contour/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAkB,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AACtG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAyB,KAAK,WAAW,EAAE,MAAM,OAAO,CAAC;AAEhE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,WAAW,EAAE,MAAM,OAAO,CAAC;AAEhE,8CAA8C;AAC9C,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAC7C,2CAA2C;AAC3C,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC;;6BAE6B;AAC7B,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B;AAED,kEAAkE;AAClE,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,SAAS,GAAG,MAAM,CAG7E;AAED;cACc;AACd,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,SAAS,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,SAAS,CAI3G;AAED;yEACyE;AACzE,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAE7D;AAID;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,CAyB/F;AAED,wDAAwD;AACxD,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,iBAAiB,GAAG,UAAU,CAAC;CACtC;AAED,0EAA0E;AAC1E,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,WAAW,GAAG,IAAI,CAUlE;AAED,MAAM,WAAW,mBAAmB;IAClC;;yDAEqD;IACrD,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,GAAG,UAAU,GAAG,SAAS,CAAC;CACxG;AA2BD;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,WAAW,GAAG,UAAU,EAC/B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,YAAY,GAAG,IAAI,GAAG,SAAS,CAAC,CAe1C;AAED,sEAAsE;AACtE,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,GAAG,QAAQ,CAIrG;AAWD;sCACsC;AACtC,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,EAAE,IAAI,SAAmB,GAAG,WAAW,CAoC7G;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,WAAW,GAAG,SAAS,CAMzE;AAED,MAAM,WAAW,oBAAoB;IACnC,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf;;qCAEiC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;0CACsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,QAAQ,EAClB,EAAE,EAAE,IAAI,CAAC,qBAAqB,EAAE,UAAU,GAAG,YAAY,CAAC,EAC1D,GAAG,EAAE,WAAW,GAAG,SAAS,EAC5B,OAAO,EAAE,oBAAoB,GAC5B,mBAAmB,GAAG,SAAS,CA8CjC;AAED,qCAAqC;AACrC,wBAAgB,YAAY,CAAC,CAAC,EAAE,mBAAmB,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,mBAAmB,CAEhG;AAED;;0EAE0E;AAC1E,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,mBAAmB,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,UAAO,GAAG,mBAAmB,CAM/H;AAED,iDAAiD;AACjD,wBAAgB,aAAa,CAAC,CAAC,EAAE,mBAAmB,GAAG,WAAW,GAAG,SAAS,CAc7E;AAED;;0BAE0B;AAC1B,wBAAgB,aAAa,CAAC,CAAC,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAU9H;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,CAAC,EAAE,mBAAmB,EACtB,IAAI,EAAE,MAAM,GAAG,OAAO,EACtB,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,SAAS,SAAI,GACZ,aAAa,EAAE,CAqBjB"}
@@ -0,0 +1,354 @@
1
+ import { decodePngAlpha, isPng } from './png';
2
+ export { decodePngAlpha, isPng } from './png';
3
+ /** `ResourceContour.threshold` when unset. */
4
+ export const DEFAULT_CONTOUR_THRESHOLD = 0.5;
5
+ /** The most rows a picture is cut into. */
6
+ export const MAX_CONTOUR_ROWS = 256;
7
+ /** The threshold a contour reads its alpha channel at, 0 to 1. */
8
+ export function contourThreshold(contour) {
9
+ const t = contour?.threshold;
10
+ return typeof t === 'number' && Number.isFinite(t) ? Math.min(1, Math.max(0, t)) : DEFAULT_CONTOUR_THRESHOLD;
11
+ }
12
+ /** Whether the contour's polygon can be used: three points or more, all
13
+ * finite. */
14
+ export function contourPolygon(contour) {
15
+ const pts = contour?.points;
16
+ if (!Array.isArray(pts) || pts.length < 3)
17
+ return undefined;
18
+ return pts.every((p) => p && Number.isFinite(p.x) && Number.isFinite(p.y)) ? pts : undefined;
19
+ }
20
+ /** Whether a resource's shape is read from its alpha channel: a bitmap
21
+ * with no polygon whose contour does not turn the alpha channel off. */
22
+ export function contourWantsAlpha(resource) {
23
+ return resource.kind === 'bitmap' && !contourPolygon(resource.contour) && resource.contour?.alpha !== false;
24
+ }
25
+ const round4 = (n) => Math.round(n * 10000) / 10000;
26
+ /**
27
+ * Trace an alpha raster at `threshold` (0 to 1): the picture is cut into
28
+ * at most {@link MAX_CONTOUR_ROWS} rows, and each row keeps the leftmost
29
+ * and rightmost edge of the pixels at least that opaque.
30
+ */
31
+ export function traceAlpha(raster, threshold, fileId) {
32
+ const { width, height, alpha } = raster;
33
+ const rows = Math.max(1, Math.min(height, MAX_CONTOUR_ROWS));
34
+ // A pixel belongs to the shape from this opacity on (at least 1: a fully
35
+ // transparent pixel never does).
36
+ const min = Math.max(1, Math.ceil(threshold * 255));
37
+ const spans = [];
38
+ for (let r = 0; r < rows; r++) {
39
+ const y0 = Math.floor((r * height) / rows);
40
+ const y1 = Math.max(y0 + 1, Math.floor(((r + 1) * height) / rows));
41
+ let lo = width;
42
+ let hi = -1;
43
+ for (let y = y0; y < y1; y++) {
44
+ const row = y * width;
45
+ for (let x = 0; x < lo; x++) {
46
+ if (alpha[row + x] >= min) {
47
+ lo = x;
48
+ break;
49
+ }
50
+ }
51
+ for (let x = width - 1; x > hi; x--) {
52
+ if (alpha[row + x] >= min) {
53
+ hi = x;
54
+ break;
55
+ }
56
+ }
57
+ }
58
+ if (hi < lo)
59
+ spans.push(-1, -1);
60
+ else
61
+ spans.push(round4(lo / width), round4((hi + 1) / width));
62
+ }
63
+ return { fileId, threshold, rows, spans };
64
+ }
65
+ /** The alpha raster of RGBA pixels; `null` when every pixel is opaque. */
66
+ export function alphaOfRgba(pixels) {
67
+ const { width, height, data } = pixels;
68
+ const alpha = new Uint8Array(width * height);
69
+ let any = false;
70
+ for (let i = 0; i < alpha.length; i++) {
71
+ const a = data[i * 4 + 3];
72
+ alpha[i] = a;
73
+ if (a < 255)
74
+ any = true;
75
+ }
76
+ return any ? { width, height, alpha } : null;
77
+ }
78
+ /** The pixel rows the browser decoder reads at most (a large picture is
79
+ * traced from a smaller copy: rows are cut at 256 anyway). */
80
+ const DECODE_MAX = 1024;
81
+ async function decodeInBrowser(bytes, mime) {
82
+ const g = globalThis;
83
+ if (!g.createImageBitmap || !g.OffscreenCanvas || typeof Blob === 'undefined')
84
+ return undefined;
85
+ try {
86
+ const bitmap = await g.createImageBitmap(new Blob([bytes], { type: mime }));
87
+ const scale = Math.min(1, DECODE_MAX / Math.max(bitmap.width, bitmap.height));
88
+ const w = Math.max(1, Math.round(bitmap.width * scale));
89
+ const h = Math.max(1, Math.round(bitmap.height * scale));
90
+ const ctx = new g.OffscreenCanvas(w, h).getContext('2d');
91
+ if (!ctx)
92
+ return undefined;
93
+ ctx.drawImage(bitmap, 0, 0, w, h);
94
+ bitmap.close?.();
95
+ return ctx.getImageData(0, 0, w, h);
96
+ }
97
+ catch {
98
+ return undefined;
99
+ }
100
+ }
101
+ /**
102
+ * Trace the alpha channel of a bitmap resource from its file's bytes, for
103
+ * `contour.traced` (#883). A PNG is read here, in any host; another format
104
+ * goes through `options.decode` (by default the browser's decoder, where
105
+ * there is one). `null`: the picture has no transparency (a JPEG, an
106
+ * opaque PNG): it has no shape and runs round its box. `undefined`: the
107
+ * resource asks for no alpha contour, or the file cannot be read here.
108
+ */
109
+ export async function traceResourceContour(resource, bytes, mime, options = {}) {
110
+ if (!contourWantsAlpha(resource) || !resource.bitmap)
111
+ return undefined;
112
+ const fileId = resource.bitmap.fileId;
113
+ const threshold = contourThreshold(resource.contour);
114
+ const u8 = bytes instanceof Uint8Array ? bytes : new Uint8Array(bytes);
115
+ if (isPng(u8)) {
116
+ const raster = decodePngAlpha(u8);
117
+ if (raster)
118
+ return traceAlpha(raster, threshold, fileId);
119
+ if (raster === null)
120
+ return null;
121
+ }
122
+ if (/jpe?g/i.test(mime))
123
+ return null;
124
+ const pixels = await (options.decode ?? decodeInBrowser)(u8, mime);
125
+ if (!pixels)
126
+ return undefined;
127
+ const raster = alphaOfRgba(pixels);
128
+ return raster ? traceAlpha(raster, threshold, fileId) : null;
129
+ }
130
+ /** The resource with `contour.traced` set to `trace` (or cleared). */
131
+ export function withContourTrace(resource, trace) {
132
+ const { traced: _old, ...rest } = resource.contour ?? {};
133
+ void _old;
134
+ return { ...resource, contour: trace ? { ...rest, traced: trace } : rest };
135
+ }
136
+ /** Whether a trace was made from the resource's file at its threshold. */
137
+ function traceFits(resource, trace) {
138
+ if (!trace || !resource.bitmap || trace.fileId !== resource.bitmap.fileId)
139
+ return false;
140
+ if (Math.abs(trace.threshold - contourThreshold(resource.contour)) > 1e-6)
141
+ return false;
142
+ return Number.isInteger(trace.rows) && trace.rows > 0 && Array.isArray(trace.spans) && trace.spans.length === trace.rows * 2;
143
+ }
144
+ const polygonCache = new WeakMap();
145
+ /** A polygon (fractions of the picture) as rows: per row the extent of the
146
+ * polygon's intersection with it. */
147
+ export function polygonRows(points, rows = MAX_CONTOUR_ROWS) {
148
+ const cached = rows === MAX_CONTOUR_ROWS ? polygonCache.get(points) : undefined;
149
+ if (cached)
150
+ return cached;
151
+ const spans = [];
152
+ const n = points.length;
153
+ for (let r = 0; r < rows; r++) {
154
+ const y0 = r / rows;
155
+ const y1 = (r + 1) / rows;
156
+ let lo = Infinity;
157
+ let hi = -Infinity;
158
+ // The band's intersection with the polygon is bounded across by the
159
+ // edges clipped to the band (a vertex inside it included).
160
+ for (let i = 0; i < n; i++) {
161
+ const a = points[i];
162
+ const b = points[(i + 1) % n];
163
+ const top = Math.min(a.y, b.y);
164
+ const bottom = Math.max(a.y, b.y);
165
+ if (bottom < y0 || top > y1)
166
+ continue;
167
+ const xs = [];
168
+ if (Math.abs(b.y - a.y) < 1e-12) {
169
+ xs.push(a.x, b.x);
170
+ }
171
+ else {
172
+ const at = (y) => a.x + ((b.x - a.x) * (y - a.y)) / (b.y - a.y);
173
+ xs.push(at(Math.max(top, y0)), at(Math.min(bottom, y1)));
174
+ }
175
+ for (const x of xs) {
176
+ if (x < lo)
177
+ lo = x;
178
+ if (x > hi)
179
+ hi = x;
180
+ }
181
+ }
182
+ if (hi < lo)
183
+ spans.push(-1, -1);
184
+ else
185
+ spans.push(round4(Math.max(0, Math.min(1, lo))), round4(Math.max(0, Math.min(1, hi))));
186
+ }
187
+ const out = { rows, spans };
188
+ if (rows === MAX_CONTOUR_ROWS)
189
+ polygonCache.set(points, out);
190
+ return out;
191
+ }
192
+ /**
193
+ * The shape of a resource in rows, when it has one: its polygon, else the
194
+ * alpha channel its host traced (a trace of this file at this threshold).
195
+ * `undefined`: no shape is known (an SVG with no polygon, a bitmap whose
196
+ * alpha channel was not traced, or has no transparency).
197
+ */
198
+ export function contourRowsOf(resource) {
199
+ const poly = contourPolygon(resource.contour);
200
+ if (poly)
201
+ return polygonRows(poly);
202
+ if (!contourWantsAlpha(resource))
203
+ return undefined;
204
+ const trace = resource.contour?.traced;
205
+ return traceFits(resource, trace) ? trace : undefined;
206
+ }
207
+ /**
208
+ * The shape of a picture set on the page as `rb` (its body at
209
+ * `rb.bodyRect` from the block's origin, showing `rb.bodySource` of the
210
+ * picture: the crop within its safe area), in page px: the shape's rows
211
+ * inside the crop, scaled to the body; and `box` (page px), the rest of
212
+ * the figure (its caption and note under the picture) as bands of its own
213
+ * width. `undefined` when the resource
214
+ * has no known shape.
215
+ */
216
+ export function contourOnPage(resource, rb, box, options) {
217
+ const shape = contourRowsOf(resource);
218
+ if (!shape)
219
+ return undefined;
220
+ const body = { x: rb.bodyRect.x + (options.originX ?? 0), y: rb.bodyRect.y + (options.originY ?? 0), width: rb.bodyRect.width, height: rb.bodyRect.height };
221
+ if (!(body.width > 0) || !(body.height > 0))
222
+ return undefined;
223
+ const crop = rb.bodySource ?? { x: 0, y: 0, width: 1, height: 1 };
224
+ if (!(crop.width > 0) || !(crop.height > 0))
225
+ return undefined;
226
+ const spans = [];
227
+ const push = (s) => {
228
+ const last = spans[spans.length - 1];
229
+ if (last && Math.abs(last.left - s.left) < 0.01 && Math.abs(last.right - s.right) < 0.01 && Math.abs(last.y + last.height - s.y) < 0.01) {
230
+ last.height = s.y + s.height - last.y;
231
+ }
232
+ else {
233
+ spans.push(s);
234
+ }
235
+ };
236
+ const cropRight = crop.x + crop.width;
237
+ const cropBottom = crop.y + crop.height;
238
+ for (let r = 0; r < shape.rows; r++) {
239
+ const l = shape.spans[r * 2];
240
+ const rr = shape.spans[r * 2 + 1];
241
+ if (l < 0 || rr < 0)
242
+ continue;
243
+ const sy0 = Math.max(crop.y, r / shape.rows);
244
+ const sy1 = Math.min(cropBottom, (r + 1) / shape.rows);
245
+ if (sy1 <= sy0)
246
+ continue;
247
+ const sl = Math.max(crop.x, l);
248
+ const sr = Math.min(cropRight, rr);
249
+ if (sr <= sl)
250
+ continue;
251
+ let u0 = (sl - crop.x) / crop.width;
252
+ let u1 = (sr - crop.x) / crop.width;
253
+ if (options.mirrored)
254
+ [u0, u1] = [1 - u1, 1 - u0];
255
+ const y = body.y + ((sy0 - crop.y) / crop.height) * body.height;
256
+ const yEnd = body.y + ((sy1 - crop.y) / crop.height) * body.height;
257
+ push({ y, height: yEnd - y, left: body.x + u0 * body.width, right: body.x + u1 * body.width });
258
+ }
259
+ if (box) {
260
+ // The caption and note keep their box: the figure's width, above or
261
+ // under the picture.
262
+ const bx = box.x;
263
+ const by = box.y;
264
+ const bottom = by + box.height;
265
+ if (body.y > by + 0.5)
266
+ spans.unshift({ y: by, height: body.y - by, left: bx, right: bx + box.width });
267
+ const bodyBottom = body.y + body.height;
268
+ if (bottom > bodyBottom + 0.5)
269
+ push({ y: bodyBottom, height: bottom - bodyBottom, left: bx, right: bx + box.width });
270
+ }
271
+ return { spans, margin: Math.max(0, options.margin), ...(options.quantum && options.quantum > 0 ? { quantum: options.quantum } : {}) };
272
+ }
273
+ /** A contour moved by `(dx, dy)`. */
274
+ export function shiftContour(c, dx, dy) {
275
+ return { ...c, spans: c.spans.map((s) => ({ y: s.y + dy, height: s.height, left: s.left + dx, right: s.right + dx })) };
276
+ }
277
+ /** A contour scaled by `s` about `(ox, oy)`: a frame's content laid out
278
+ * at another scale than it is painted (#858). `margin: false` keeps the
279
+ * margin (and the CJK quantum) as they are: they are page px already. */
280
+ export function scaleContourAbout(c, ox, oy, s, margin = true) {
281
+ return {
282
+ spans: c.spans.map((sp) => ({ y: oy + (sp.y - oy) * s, height: sp.height * s, left: ox + (sp.left - ox) * s, right: ox + (sp.right - ox) * s })),
283
+ margin: margin ? c.margin * s : c.margin,
284
+ ...(c.quantum !== undefined ? { quantum: margin ? c.quantum * s : c.quantum } : {}),
285
+ };
286
+ }
287
+ /** The contour's bounds, its margin included. */
288
+ export function contourBounds(c) {
289
+ if (c.spans.length === 0)
290
+ return undefined;
291
+ let x0 = Infinity;
292
+ let y0 = Infinity;
293
+ let x1 = -Infinity;
294
+ let y1 = -Infinity;
295
+ for (const s of c.spans) {
296
+ x0 = Math.min(x0, s.left);
297
+ x1 = Math.max(x1, s.right);
298
+ y0 = Math.min(y0, s.y);
299
+ y1 = Math.max(y1, s.y + s.height);
300
+ }
301
+ const m = c.margin;
302
+ return { x: x0 - m, y: y0 - m, width: x1 - x0 + 2 * m, height: y1 - y0 + 2 * m };
303
+ }
304
+ /** The shape's extent across the band `[top, bottom]` of the page: the
305
+ * spans that lie within its margin of it. `undefined`: the band passes
306
+ * clear of the shape. */
307
+ export function contourExtent(c, top, bottom) {
308
+ let left = Infinity;
309
+ let right = -Infinity;
310
+ const m = c.margin;
311
+ for (const s of c.spans) {
312
+ if (s.y + s.height <= top - m + 0.01 || s.y >= bottom + m - 0.01)
313
+ continue;
314
+ if (s.left < left)
315
+ left = s.left;
316
+ if (s.right > right)
317
+ right = s.right;
318
+ }
319
+ return right > left ? { left: left - m, right: right + m } : undefined;
320
+ }
321
+ /**
322
+ * The insets of lines `from` to `to` (0-based, of a text whose line 0's
323
+ * top is at `y0`, lines `lineHeight` apart) beside a shape at `side` of a
324
+ * measure `[x, x + width]`: each line is set short by the room the shape
325
+ * takes across its band (its margin included), none where it passes clear
326
+ * of it. Line numbers in the steps count from `firstLine`.
327
+ */
328
+ export function contourInsetSteps(c, side, x, width, y0, lineHeight, from, to, firstLine = 0) {
329
+ const steps = [];
330
+ const right = x + width;
331
+ for (let li = from; li <= to; li++) {
332
+ const top = y0 + li * lineHeight;
333
+ const ext = contourExtent(c, top, top + lineHeight);
334
+ let inset = 0;
335
+ if (ext)
336
+ inset = side === 'left' ? ext.right - x : right - ext.left;
337
+ inset = Math.max(0, Math.min(width, inset));
338
+ if (c.quantum && inset > 0)
339
+ inset = Math.min(width, Math.ceil((inset - 0.01) / c.quantum) * c.quantum);
340
+ if (inset <= 0.01)
341
+ continue;
342
+ const last = steps[steps.length - 1];
343
+ const startInsetPx = side === 'left' ? inset : 0;
344
+ const endInsetPx = side === 'right' ? inset : 0;
345
+ if (last && last.toLine === firstLine + li - 1 && Math.abs(last.startInsetPx - startInsetPx) < 0.01 && Math.abs(last.endInsetPx - endInsetPx) < 0.01) {
346
+ last.toLine = firstLine + li;
347
+ }
348
+ else {
349
+ steps.push({ fromLine: firstLine + li, toLine: firstLine + li, startInsetPx, endInsetPx });
350
+ }
351
+ }
352
+ return steps;
353
+ }
354
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/contour/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /** One byte of opacity per pixel, row by row (0 transparent, 255 opaque). */
2
+ export interface AlphaRaster {
3
+ width: number;
4
+ height: number;
5
+ alpha: Uint8Array;
6
+ }
7
+ /** Whether `bytes` start as a PNG file. */
8
+ export declare function isPng(bytes: Uint8Array): boolean;
9
+ /**
10
+ * The opacity of every pixel of a PNG. `null` when the picture has no
11
+ * transparency at all (no alpha channel and no `tRNS` chunk: every pixel
12
+ * is opaque); `undefined` when the file cannot be read here (not a PNG,
13
+ * damaged, interlaced).
14
+ */
15
+ export declare function decodePngAlpha(input: ArrayBuffer | Uint8Array): AlphaRaster | null | undefined;
16
+ //# sourceMappingURL=png.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"png.d.ts","sourceRoot":"","sources":["../../src/contour/png.ts"],"names":[],"mappings":"AAQA,6EAA6E;AAC7E,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,UAAU,CAAC;CACnB;AAMD,2CAA2C;AAC3C,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAIhD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,UAAU,GAAG,WAAW,GAAG,IAAI,GAAG,SAAS,CA2H9F"}
@@ -0,0 +1,173 @@
1
+ /**
2
+ * The alpha channel of a PNG, read synchronously (#883): the shape a
3
+ * contour wrap runs round is traced from it in any host, the browser's
4
+ * layout worker and Node alike, with no canvas. Only what the trace needs
5
+ * is decoded: the opacity of every pixel.
6
+ */
7
+ import { unzlibSync } from 'fflate';
8
+ const SIGNATURE = [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a];
9
+ /** Channels per pixel by colour type. */
10
+ const CHANNELS = { 0: 1, 2: 3, 3: 1, 4: 2, 6: 4 };
11
+ /** Whether `bytes` start as a PNG file. */
12
+ export function isPng(bytes) {
13
+ if (bytes.length < 8)
14
+ return false;
15
+ for (let i = 0; i < 8; i++)
16
+ if (bytes[i] !== SIGNATURE[i])
17
+ return false;
18
+ return true;
19
+ }
20
+ /**
21
+ * The opacity of every pixel of a PNG. `null` when the picture has no
22
+ * transparency at all (no alpha channel and no `tRNS` chunk: every pixel
23
+ * is opaque); `undefined` when the file cannot be read here (not a PNG,
24
+ * damaged, interlaced).
25
+ */
26
+ export function decodePngAlpha(input) {
27
+ const bytes = input instanceof Uint8Array ? input : new Uint8Array(input);
28
+ if (!isPng(bytes))
29
+ return undefined;
30
+ const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
31
+ let width = 0;
32
+ let height = 0;
33
+ let depth = 0;
34
+ let type = -1;
35
+ let interlace = 0;
36
+ let trns;
37
+ const idat = [];
38
+ let at = 8;
39
+ while (at + 8 <= bytes.length) {
40
+ const len = view.getUint32(at);
41
+ const name = String.fromCharCode(bytes[at + 4], bytes[at + 5], bytes[at + 6], bytes[at + 7]);
42
+ const data = bytes.subarray(at + 8, at + 8 + len);
43
+ if (data.length < len)
44
+ return undefined;
45
+ if (name === 'IHDR') {
46
+ width = view.getUint32(at + 8);
47
+ height = view.getUint32(at + 12);
48
+ depth = bytes[at + 16];
49
+ type = bytes[at + 17];
50
+ interlace = bytes[at + 20];
51
+ }
52
+ else if (name === 'tRNS') {
53
+ trns = data;
54
+ }
55
+ else if (name === 'IDAT') {
56
+ idat.push(data);
57
+ }
58
+ else if (name === 'IEND') {
59
+ break;
60
+ }
61
+ at += 12 + len;
62
+ }
63
+ const channels = CHANNELS[type];
64
+ if (!channels || width <= 0 || height <= 0 || idat.length === 0 || interlace !== 0)
65
+ return undefined;
66
+ if (![1, 2, 4, 8, 16].includes(depth))
67
+ return undefined;
68
+ const hasAlpha = type === 4 || type === 6;
69
+ if (!hasAlpha && !trns)
70
+ return null;
71
+ let total = 0;
72
+ for (const d of idat)
73
+ total += d.length;
74
+ const packed = new Uint8Array(total);
75
+ let off = 0;
76
+ for (const d of idat) {
77
+ packed.set(d, off);
78
+ off += d.length;
79
+ }
80
+ let raw;
81
+ try {
82
+ raw = unzlibSync(packed);
83
+ }
84
+ catch {
85
+ return undefined;
86
+ }
87
+ const bitsPerPixel = channels * depth;
88
+ const stride = Math.ceil((width * bitsPerPixel) / 8);
89
+ const bpp = Math.max(1, bitsPerPixel >> 3);
90
+ if (raw.length < (stride + 1) * height)
91
+ return undefined;
92
+ const alpha = new Uint8Array(width * height);
93
+ let prev = new Uint8Array(stride);
94
+ let cur = new Uint8Array(stride);
95
+ const sample = (row, index) => {
96
+ // The `index`-th sample of the row, at the file's bit depth.
97
+ if (depth === 8)
98
+ return row[index];
99
+ if (depth === 16)
100
+ return (row[index * 2] << 8) | row[index * 2 + 1];
101
+ const bit = index * depth;
102
+ const byte = row[bit >> 3];
103
+ const shift = 8 - depth - (bit & 7);
104
+ return (byte >> shift) & ((1 << depth) - 1);
105
+ };
106
+ const max = (1 << depth) - 1;
107
+ const keyOf = (i) => (trns && trns.length >= (i + 1) * 2 ? (trns[i * 2] << 8) | trns[i * 2 + 1] : -1);
108
+ const key = type === 0 ? keyOf(0) : -1;
109
+ const keyRgb = type === 2 ? [keyOf(0), keyOf(1), keyOf(2)] : undefined;
110
+ for (let y = 0; y < height; y++) {
111
+ const base = y * (stride + 1);
112
+ const filter = raw[base];
113
+ for (let i = 0; i < stride; i++) {
114
+ const x = raw[base + 1 + i];
115
+ const a = i >= bpp ? cur[i - bpp] : 0;
116
+ const b = prev[i];
117
+ const c = i >= bpp ? prev[i - bpp] : 0;
118
+ let v;
119
+ switch (filter) {
120
+ case 0:
121
+ v = x;
122
+ break;
123
+ case 1:
124
+ v = x + a;
125
+ break;
126
+ case 2:
127
+ v = x + b;
128
+ break;
129
+ case 3:
130
+ v = x + ((a + b) >> 1);
131
+ break;
132
+ case 4: {
133
+ const p = a + b - c;
134
+ const pa = Math.abs(p - a);
135
+ const pb = Math.abs(p - b);
136
+ const pc = Math.abs(p - c);
137
+ v = x + (pa <= pb && pa <= pc ? a : pb <= pc ? b : c);
138
+ break;
139
+ }
140
+ default: return undefined;
141
+ }
142
+ cur[i] = v & 0xff;
143
+ }
144
+ const row = y * width;
145
+ for (let px = 0; px < width; px++) {
146
+ let o;
147
+ if (type === 6)
148
+ o = sample(cur, px * 4 + 3);
149
+ else if (type === 4)
150
+ o = sample(cur, px * 2 + 1);
151
+ else if (type === 3) {
152
+ const idx = sample(cur, px);
153
+ alpha[row + px] = trns && idx < trns.length ? trns[idx] : 255;
154
+ continue;
155
+ }
156
+ else if (type === 0) {
157
+ o = sample(cur, px) === key ? 0 : max;
158
+ }
159
+ else {
160
+ const r = sample(cur, px * 3);
161
+ const g = sample(cur, px * 3 + 1);
162
+ const bl = sample(cur, px * 3 + 2);
163
+ o = keyRgb && r === keyRgb[0] && g === keyRgb[1] && bl === keyRgb[2] ? 0 : max;
164
+ }
165
+ alpha[row + px] = depth === 8 ? o : Math.round((o / max) * 255);
166
+ }
167
+ const t = prev;
168
+ prev = cur;
169
+ cur = t;
170
+ }
171
+ return { width, height, alpha };
172
+ }
173
+ //# sourceMappingURL=png.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"png.js","sourceRoot":"","sources":["../../src/contour/png.ts"],"names":[],"mappings":"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"}
@@ -28,9 +28,11 @@
28
28
  * What it reads: the lines of every block (inline bold, italic, reference
29
29
  * and chip colours included), list markers, drop caps, captions, notes and
30
30
  * table cells, and the text of design slots (running heads, openers,
31
- * heading designs, box titles). The ground is the topmost fill under the
32
- * text: a design box, a callout, a caption bar, a table cell, a chip, else
33
- * the page's paper colour; a translucent colour is blended with what is
31
+ * heading designs, box titles, a composed page's decoration). The ground
32
+ * is the topmost fill under the text: a design box, a callout, a caption
33
+ * bar, a table cell, a chip, the box of a composed page's frame or the
34
+ * template decoration under it (in the page's paint order,
35
+ * `composedPaintOrder`), else the page's paper colour; a translucent colour is blended with what is
34
36
  * under it. Text over a picture is skipped (its ground is not a colour),
35
37
  * as are comic lettering, ruby and formulas.
36
38
  */
@@ -1 +1 @@
1
- {"version":3,"file":"contrast.d.ts","sourceRoot":"","sources":["../src/contrast.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contrast.d.ts","sourceRoot":"","sources":["../src/contrast.ts"],"names":[],"mappings":"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"}