@clipkit/runtime 1.0.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 (219) hide show
  1. package/LICENSE +54 -0
  2. package/README.md +98 -0
  3. package/dist/animation/easings.d.ts +9 -0
  4. package/dist/animation/easings.d.ts.map +1 -0
  5. package/dist/animation/easings.js +230 -0
  6. package/dist/animation/easings.js.map +1 -0
  7. package/dist/animation/expr.d.ts +44 -0
  8. package/dist/animation/expr.d.ts.map +1 -0
  9. package/dist/animation/expr.js +236 -0
  10. package/dist/animation/expr.js.map +1 -0
  11. package/dist/animation/keyframes.d.ts +23 -0
  12. package/dist/animation/keyframes.d.ts.map +1 -0
  13. package/dist/animation/keyframes.js +117 -0
  14. package/dist/animation/keyframes.js.map +1 -0
  15. package/dist/animation/motion-path.d.ts +18 -0
  16. package/dist/animation/motion-path.d.ts.map +1 -0
  17. package/dist/animation/motion-path.js +269 -0
  18. package/dist/animation/motion-path.js.map +1 -0
  19. package/dist/animation/noise1d.d.ts +5 -0
  20. package/dist/animation/noise1d.d.ts.map +1 -0
  21. package/dist/animation/noise1d.js +27 -0
  22. package/dist/animation/noise1d.js.map +1 -0
  23. package/dist/animation/presets.d.ts +60 -0
  24. package/dist/animation/presets.d.ts.map +1 -0
  25. package/dist/animation/presets.js +221 -0
  26. package/dist/animation/presets.js.map +1 -0
  27. package/dist/assets/cache.d.ts +18 -0
  28. package/dist/assets/cache.d.ts.map +1 -0
  29. package/dist/assets/cache.js +56 -0
  30. package/dist/assets/cache.js.map +1 -0
  31. package/dist/assets/fonts.d.ts +20 -0
  32. package/dist/assets/fonts.d.ts.map +1 -0
  33. package/dist/assets/fonts.js +127 -0
  34. package/dist/assets/fonts.js.map +1 -0
  35. package/dist/assets/loader.d.ts +18 -0
  36. package/dist/assets/loader.d.ts.map +1 -0
  37. package/dist/assets/loader.js +87 -0
  38. package/dist/assets/loader.js.map +1 -0
  39. package/dist/assets/lut.d.ts +5 -0
  40. package/dist/assets/lut.d.ts.map +1 -0
  41. package/dist/assets/lut.js +77 -0
  42. package/dist/assets/lut.js.map +1 -0
  43. package/dist/assets/media-time.d.ts +31 -0
  44. package/dist/assets/media-time.d.ts.map +1 -0
  45. package/dist/assets/media-time.js +65 -0
  46. package/dist/assets/media-time.js.map +1 -0
  47. package/dist/assets/mp4-frame-source.d.ts +44 -0
  48. package/dist/assets/mp4-frame-source.d.ts.map +1 -0
  49. package/dist/assets/mp4-frame-source.js +387 -0
  50. package/dist/assets/mp4-frame-source.js.map +1 -0
  51. package/dist/audio/encoder.d.ts +31 -0
  52. package/dist/audio/encoder.d.ts.map +1 -0
  53. package/dist/audio/encoder.js +96 -0
  54. package/dist/audio/encoder.js.map +1 -0
  55. package/dist/audio/fades.d.ts +16 -0
  56. package/dist/audio/fades.d.ts.map +1 -0
  57. package/dist/audio/fades.js +43 -0
  58. package/dist/audio/fades.js.map +1 -0
  59. package/dist/audio/limiter.d.ts +8 -0
  60. package/dist/audio/limiter.d.ts.map +1 -0
  61. package/dist/audio/limiter.js +39 -0
  62. package/dist/audio/limiter.js.map +1 -0
  63. package/dist/audio/loader.d.ts +6 -0
  64. package/dist/audio/loader.d.ts.map +1 -0
  65. package/dist/audio/loader.js +42 -0
  66. package/dist/audio/loader.js.map +1 -0
  67. package/dist/audio/mixer.d.ts +17 -0
  68. package/dist/audio/mixer.d.ts.map +1 -0
  69. package/dist/audio/mixer.js +204 -0
  70. package/dist/audio/mixer.js.map +1 -0
  71. package/dist/audio/varispeed.d.ts +24 -0
  72. package/dist/audio/varispeed.d.ts.map +1 -0
  73. package/dist/audio/varispeed.js +114 -0
  74. package/dist/audio/varispeed.js.map +1 -0
  75. package/dist/audio/wav.d.ts +6 -0
  76. package/dist/audio/wav.d.ts.map +1 -0
  77. package/dist/audio/wav.js +62 -0
  78. package/dist/audio/wav.js.map +1 -0
  79. package/dist/backend/backend.d.ts +579 -0
  80. package/dist/backend/backend.d.ts.map +1 -0
  81. package/dist/backend/backend.js +17 -0
  82. package/dist/backend/backend.js.map +1 -0
  83. package/dist/backend/webgl-backend.d.ts +97 -0
  84. package/dist/backend/webgl-backend.d.ts.map +1 -0
  85. package/dist/backend/webgl-backend.js +2142 -0
  86. package/dist/backend/webgl-backend.js.map +1 -0
  87. package/dist/backend/webgpu-backend.d.ts +121 -0
  88. package/dist/backend/webgpu-backend.d.ts.map +1 -0
  89. package/dist/backend/webgpu-backend.js +2481 -0
  90. package/dist/backend/webgpu-backend.js.map +1 -0
  91. package/dist/compositor/bitfont.d.ts +8 -0
  92. package/dist/compositor/bitfont.d.ts.map +1 -0
  93. package/dist/compositor/bitfont.js +52 -0
  94. package/dist/compositor/bitfont.js.map +1 -0
  95. package/dist/compositor/camera.d.ts +5 -0
  96. package/dist/compositor/camera.d.ts.map +1 -0
  97. package/dist/compositor/camera.js +114 -0
  98. package/dist/compositor/camera.js.map +1 -0
  99. package/dist/compositor/color.d.ts +26 -0
  100. package/dist/compositor/color.d.ts.map +1 -0
  101. package/dist/compositor/color.js +189 -0
  102. package/dist/compositor/color.js.map +1 -0
  103. package/dist/compositor/element-renderers/caption.d.ts +4 -0
  104. package/dist/compositor/element-renderers/caption.d.ts.map +1 -0
  105. package/dist/compositor/element-renderers/caption.js +376 -0
  106. package/dist/compositor/element-renderers/caption.js.map +1 -0
  107. package/dist/compositor/element-renderers/group.d.ts +12 -0
  108. package/dist/compositor/element-renderers/group.d.ts.map +1 -0
  109. package/dist/compositor/element-renderers/group.js +259 -0
  110. package/dist/compositor/element-renderers/group.js.map +1 -0
  111. package/dist/compositor/element-renderers/image.d.ts +4 -0
  112. package/dist/compositor/element-renderers/image.d.ts.map +1 -0
  113. package/dist/compositor/element-renderers/image.js +97 -0
  114. package/dist/compositor/element-renderers/image.js.map +1 -0
  115. package/dist/compositor/element-renderers/lit.d.ts +6 -0
  116. package/dist/compositor/element-renderers/lit.d.ts.map +1 -0
  117. package/dist/compositor/element-renderers/lit.js +82 -0
  118. package/dist/compositor/element-renderers/lit.js.map +1 -0
  119. package/dist/compositor/element-renderers/particles.d.ts +4 -0
  120. package/dist/compositor/element-renderers/particles.d.ts.map +1 -0
  121. package/dist/compositor/element-renderers/particles.js +212 -0
  122. package/dist/compositor/element-renderers/particles.js.map +1 -0
  123. package/dist/compositor/element-renderers/shape.d.ts +4 -0
  124. package/dist/compositor/element-renderers/shape.d.ts.map +1 -0
  125. package/dist/compositor/element-renderers/shape.js +171 -0
  126. package/dist/compositor/element-renderers/shape.js.map +1 -0
  127. package/dist/compositor/element-renderers/svg.d.ts +4 -0
  128. package/dist/compositor/element-renderers/svg.d.ts.map +1 -0
  129. package/dist/compositor/element-renderers/svg.js +210 -0
  130. package/dist/compositor/element-renderers/svg.js.map +1 -0
  131. package/dist/compositor/element-renderers/text.d.ts +25 -0
  132. package/dist/compositor/element-renderers/text.d.ts.map +1 -0
  133. package/dist/compositor/element-renderers/text.js +1358 -0
  134. package/dist/compositor/element-renderers/text.js.map +1 -0
  135. package/dist/compositor/element-renderers/video.d.ts +12 -0
  136. package/dist/compositor/element-renderers/video.d.ts.map +1 -0
  137. package/dist/compositor/element-renderers/video.js +109 -0
  138. package/dist/compositor/element-renderers/video.js.map +1 -0
  139. package/dist/compositor/fit.d.ts +18 -0
  140. package/dist/compositor/fit.d.ts.map +1 -0
  141. package/dist/compositor/fit.js +106 -0
  142. package/dist/compositor/fit.js.map +1 -0
  143. package/dist/compositor/lighting.d.ts +63 -0
  144. package/dist/compositor/lighting.d.ts.map +1 -0
  145. package/dist/compositor/lighting.js +141 -0
  146. package/dist/compositor/lighting.js.map +1 -0
  147. package/dist/compositor/mat4.d.ts +88 -0
  148. package/dist/compositor/mat4.d.ts.map +1 -0
  149. package/dist/compositor/mat4.js +245 -0
  150. package/dist/compositor/mat4.js.map +1 -0
  151. package/dist/compositor/project.d.ts +24 -0
  152. package/dist/compositor/project.d.ts.map +1 -0
  153. package/dist/compositor/project.js +105 -0
  154. package/dist/compositor/project.js.map +1 -0
  155. package/dist/compositor/render-context.d.ts +194 -0
  156. package/dist/compositor/render-context.d.ts.map +1 -0
  157. package/dist/compositor/render-context.js +10 -0
  158. package/dist/compositor/render-context.js.map +1 -0
  159. package/dist/compositor/resolve.d.ts +80 -0
  160. package/dist/compositor/resolve.d.ts.map +1 -0
  161. package/dist/compositor/resolve.js +276 -0
  162. package/dist/compositor/resolve.js.map +1 -0
  163. package/dist/compositor/scene.d.ts +10 -0
  164. package/dist/compositor/scene.d.ts.map +1 -0
  165. package/dist/compositor/scene.js +658 -0
  166. package/dist/compositor/scene.js.map +1 -0
  167. package/dist/compositor/transform.d.ts +73 -0
  168. package/dist/compositor/transform.d.ts.map +1 -0
  169. package/dist/compositor/transform.js +229 -0
  170. package/dist/compositor/transform.js.map +1 -0
  171. package/dist/compositor/unit.d.ts +27 -0
  172. package/dist/compositor/unit.d.ts.map +1 -0
  173. package/dist/compositor/unit.js +74 -0
  174. package/dist/compositor/unit.js.map +1 -0
  175. package/dist/encoder/exporter.d.ts +95 -0
  176. package/dist/encoder/exporter.d.ts.map +1 -0
  177. package/dist/encoder/exporter.js +341 -0
  178. package/dist/encoder/exporter.js.map +1 -0
  179. package/dist/encoder/index.d.ts +3 -0
  180. package/dist/encoder/index.d.ts.map +1 -0
  181. package/dist/encoder/index.js +2 -0
  182. package/dist/encoder/index.js.map +1 -0
  183. package/dist/index.d.ts +12 -0
  184. package/dist/index.d.ts.map +1 -0
  185. package/dist/index.js +27 -0
  186. package/dist/index.js.map +1 -0
  187. package/dist/logger.d.ts +13 -0
  188. package/dist/logger.d.ts.map +1 -0
  189. package/dist/logger.js +32 -0
  190. package/dist/logger.js.map +1 -0
  191. package/dist/runtime.d.ts +216 -0
  192. package/dist/runtime.d.ts.map +1 -0
  193. package/dist/runtime.js +1012 -0
  194. package/dist/runtime.js.map +1 -0
  195. package/dist/svg/morph.d.ts +6 -0
  196. package/dist/svg/morph.d.ts.map +1 -0
  197. package/dist/svg/morph.js +62 -0
  198. package/dist/svg/morph.js.map +1 -0
  199. package/dist/svg/svg-renderer.d.ts +18 -0
  200. package/dist/svg/svg-renderer.d.ts.map +1 -0
  201. package/dist/svg/svg-renderer.js +142 -0
  202. package/dist/svg/svg-renderer.js.map +1 -0
  203. package/dist/text/caption-chunk.d.ts +17 -0
  204. package/dist/text/caption-chunk.d.ts.map +1 -0
  205. package/dist/text/caption-chunk.js +76 -0
  206. package/dist/text/caption-chunk.js.map +1 -0
  207. package/dist/text/font-atlas.d.ts +63 -0
  208. package/dist/text/font-atlas.d.ts.map +1 -0
  209. package/dist/text/font-atlas.js +225 -0
  210. package/dist/text/font-atlas.js.map +1 -0
  211. package/dist/text/measure.d.ts +38 -0
  212. package/dist/text/measure.d.ts.map +1 -0
  213. package/dist/text/measure.js +164 -0
  214. package/dist/text/measure.js.map +1 -0
  215. package/dist/text/text-animation.d.ts +52 -0
  216. package/dist/text/text-animation.d.ts.map +1 -0
  217. package/dist/text/text-animation.js +133 -0
  218. package/dist/text/text-animation.js.map +1 -0
  219. package/package.json +47 -0
@@ -0,0 +1,97 @@
1
+ import type { RGBA } from '../compositor/color.js';
2
+ import type { Backend, BackendCapabilities, BackdropBlendDrawParams, FilteredQuadDrawParams, GlassQuadDrawParams, MaskedQuadDrawParams, StylizedQuadDrawParams, RenderTarget, ShapeDrawParams, ShapeShadowDrawParams, Texture, TextureSource, TexturedQuadDrawParams } from './backend.js';
3
+ export declare class WebGL2Backend implements Backend {
4
+ readonly canvas: HTMLCanvasElement | OffscreenCanvas;
5
+ width: number;
6
+ height: number;
7
+ capabilities: BackendCapabilities;
8
+ private gl;
9
+ private vbo;
10
+ private vao;
11
+ private shapeProgram;
12
+ private shapeLocs;
13
+ private shadowProgram;
14
+ private shadowLocs;
15
+ private gradientProgram;
16
+ private gradientLocs;
17
+ private texturedProgram;
18
+ private texturedLocs;
19
+ private maskedProgram;
20
+ private maskedLocs;
21
+ private backdropBlendProgram;
22
+ private backdropBlendLocs;
23
+ private filteredProgram;
24
+ private filteredLocs;
25
+ private stylizedProgram;
26
+ private stylizedLocs;
27
+ private glassProgram;
28
+ private glassLocs;
29
+ private glass3dProgram;
30
+ private glass3dLocs;
31
+ private litShapeProgram;
32
+ private litShapeLocs;
33
+ private litTexturedProgram;
34
+ private litTexturedLocs;
35
+ private nextTextureId;
36
+ private liveTextures;
37
+ private framingActive;
38
+ private disposed;
39
+ /** Physical backing-store dims ÷ logical dims (renderResolution). */
40
+ private pixelRatio;
41
+ /**
42
+ * Offscreen-surface stack. Empty = drawing to the canvas. Each entry
43
+ * redirects draws into a framebuffer; flipY compensates for GL's
44
+ * bottom-up framebuffer textures so layers sample top-down like
45
+ * uploaded images.
46
+ */
47
+ private surfaceStack;
48
+ private renderTargetFbos;
49
+ /**
50
+ * Set the blend function for the next draw. All draw methods call
51
+ * this with their params' blend (or undefined → premultiplied over),
52
+ * so state never leaks between draws. Alpha always composites with
53
+ * source-over so blended elements still build coverage normally.
54
+ */
55
+ private applyBlend;
56
+ /** Dims + flip of whatever we're currently drawing into. */
57
+ private currentSurface;
58
+ constructor(canvas: HTMLCanvasElement | OffscreenCanvas);
59
+ init(): Promise<boolean>;
60
+ private buildProgram;
61
+ private compileShader;
62
+ private setupVertexAttribs;
63
+ resize(width: number, height: number, pixelRatio?: number): void;
64
+ createTexture(source: TextureSource): Texture;
65
+ updateTexture(texture: Texture, source: TextureSource): void;
66
+ private uploadToTexture;
67
+ destroyTexture(texture: Texture): void;
68
+ beginFrame(clearColor?: RGBA): void;
69
+ endFrame(): void;
70
+ createRenderTarget(width: number, height: number): RenderTarget;
71
+ destroyRenderTarget(target: RenderTarget): void;
72
+ pushTarget(target: RenderTarget, clearColor?: RGBA): void;
73
+ popTarget(): void;
74
+ drawShapeShadow(params: ShapeShadowDrawParams): void;
75
+ drawShape(params: ShapeDrawParams): void;
76
+ private getLitShapeProgram;
77
+ private drawLitShape;
78
+ private setLitPbrUniforms;
79
+ private flatNormalTex;
80
+ private getFlatNormalTexture;
81
+ private getLitTexturedProgram;
82
+ private drawLitTexturedQuad;
83
+ private drawGradientShape;
84
+ drawTexturedQuad(params: TexturedQuadDrawParams): void;
85
+ drawMaskedQuad(params: MaskedQuadDrawParams): void;
86
+ drawFilteredQuad(params: FilteredQuadDrawParams): void;
87
+ drawBackdropBlend(params: BackdropBlendDrawParams): void;
88
+ drawStylizedQuad(params: StylizedQuadDrawParams): void;
89
+ drawGlassQuad(params: GlassQuadDrawParams): void;
90
+ private glassLocsOf;
91
+ copySurfaceTo(target: RenderTarget): {
92
+ flippedY: boolean;
93
+ };
94
+ finish(): Promise<void>;
95
+ dispose(): void;
96
+ }
97
+ //# sourceMappingURL=webgl-backend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgl-backend.d.ts","sourceRoot":"","sources":["../../src/backend/webgl-backend.ts"],"names":[],"mappings":"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"}