@empty-sekai/sekai-custom-profile-sdk 0.3.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 (130) hide show
  1. package/LICENSE +235 -0
  2. package/LICENSE-EXCEPTION +32 -0
  3. package/NOTICE +11 -0
  4. package/README.en.md +456 -0
  5. package/README.md +458 -0
  6. package/dist/allium_renderer_wasm.js +14 -0
  7. package/dist/allium_renderer_wasm.wasm +0 -0
  8. package/dist/authoring.d.ts +14 -0
  9. package/dist/authoring.js +34 -0
  10. package/dist/cache/glyphPersistentCache.d.ts +145 -0
  11. package/dist/cache/glyphPersistentCache.js +346 -0
  12. package/dist/cache/indexedDbGlyphRecordStore.d.ts +26 -0
  13. package/dist/cache/indexedDbGlyphRecordStore.js +214 -0
  14. package/dist/cache/sessionImageResourceCache.d.ts +39 -0
  15. package/dist/cache/sessionImageResourceCache.js +156 -0
  16. package/dist/emscripten.d.ts +11 -0
  17. package/dist/emscripten.js +1 -0
  18. package/dist/fontProvider.d.ts +36 -0
  19. package/dist/fontProvider.js +84 -0
  20. package/dist/fontSdfAtlas.d.ts +92 -0
  21. package/dist/fontSdfAtlas.js +296 -0
  22. package/dist/gpu/browserSemanticResources.d.ts +64 -0
  23. package/dist/gpu/browserSemanticResources.js +232 -0
  24. package/dist/gpu/generalTextRenderPlacement.d.ts +8 -0
  25. package/dist/gpu/generalTextRenderPlacement.js +131 -0
  26. package/dist/gpu/previewTransformTextureLayout.d.ts +1 -0
  27. package/dist/gpu/previewTransformTextureLayout.js +12 -0
  28. package/dist/gpu/semanticCommandGeometry.d.ts +21 -0
  29. package/dist/gpu/semanticCommandGeometry.js +226 -0
  30. package/dist/gpu/semanticCommandPlanner.d.ts +131 -0
  31. package/dist/gpu/semanticCommandPlanner.js +203 -0
  32. package/dist/gpu/semanticTextGlyphBridge.d.ts +3 -0
  33. package/dist/gpu/semanticTextGlyphBridge.js +22 -0
  34. package/dist/gpu/semanticWebglSceneRenderer.d.ts +70 -0
  35. package/dist/gpu/semanticWebglSceneRenderer.js +211 -0
  36. package/dist/gpu/slotRanges.d.ts +5 -0
  37. package/dist/gpu/slotRanges.js +14 -0
  38. package/dist/gpu/webglSdfAtlasTexture.d.ts +17 -0
  39. package/dist/gpu/webglSdfAtlasTexture.js +72 -0
  40. package/dist/gpu/webglSdfGlyphPipeline.d.ts +26 -0
  41. package/dist/gpu/webglSdfGlyphPipeline.js +267 -0
  42. package/dist/gpu/webglSemanticCommandExecutor.d.ts +79 -0
  43. package/dist/gpu/webglSemanticCommandExecutor.js +686 -0
  44. package/dist/index.d.ts +18 -0
  45. package/dist/index.js +8 -0
  46. package/dist/interaction/numericTextRegions.d.ts +46 -0
  47. package/dist/interaction/numericTextRegions.js +44 -0
  48. package/dist/localizationProvider.d.ts +33 -0
  49. package/dist/localizationProvider.js +74 -0
  50. package/dist/originPrebuiltSdfAtlasPackage.d.ts +39 -0
  51. package/dist/originPrebuiltSdfAtlasPackage.js +316 -0
  52. package/dist/prebuiltSdfAtlas.d.ts +36 -0
  53. package/dist/prebuiltSdfAtlas.js +261 -0
  54. package/dist/protocol.d.ts +456 -0
  55. package/dist/protocol.js +1 -0
  56. package/dist/renderer.d.ts +218 -0
  57. package/dist/renderer.js +641 -0
  58. package/dist/resourceProvider.d.ts +24 -0
  59. package/dist/resourceProvider.js +41 -0
  60. package/dist/telemetry/rendererTelemetry.d.ts +158 -0
  61. package/dist/telemetry/rendererTelemetry.js +232 -0
  62. package/dist/third-party/freetype/FTL.txt +169 -0
  63. package/dist/types/atlas.d.ts +90 -0
  64. package/dist/types/atlas.js +1 -0
  65. package/dist/types/authoring.d.ts +81 -0
  66. package/dist/types/authoring.js +1 -0
  67. package/dist/types/core.d.ts +128 -0
  68. package/dist/types/core.js +1 -0
  69. package/dist/types/freeType.d.ts +54 -0
  70. package/dist/types/freeType.js +13 -0
  71. package/dist/types/glyph.d.ts +33 -0
  72. package/dist/types/glyph.js +1 -0
  73. package/dist/types/layout.d.ts +25 -0
  74. package/dist/types/layout.js +1 -0
  75. package/dist/types/text.d.ts +28 -0
  76. package/dist/types/text.js +1 -0
  77. package/dist/worker/glyphWorkScheduler.d.ts +29 -0
  78. package/dist/worker/glyphWorkScheduler.js +107 -0
  79. package/dist/worker-client.d.ts +114 -0
  80. package/dist/worker-client.js +413 -0
  81. package/dist/worker.d.ts +1 -0
  82. package/dist/worker.js +708 -0
  83. package/package.json +46 -0
  84. package/src/atlas.rs +652 -0
  85. package/src/authoring.ts +42 -0
  86. package/src/authoring_runtime.rs +303 -0
  87. package/src/cache/glyphPersistentCache.ts +463 -0
  88. package/src/cache/indexedDbGlyphRecordStore.ts +238 -0
  89. package/src/cache/sessionImageResourceCache.ts +186 -0
  90. package/src/edt.rs +97 -0
  91. package/src/emscripten.ts +17 -0
  92. package/src/fontProvider.ts +127 -0
  93. package/src/fontSdfAtlas.ts +431 -0
  94. package/src/geometry.rs +149 -0
  95. package/src/glyph_plan.rs +226 -0
  96. package/src/gpu/browserSemanticResources.ts +294 -0
  97. package/src/gpu/generalTextRenderPlacement.ts +175 -0
  98. package/src/gpu/previewTransformTextureLayout.ts +12 -0
  99. package/src/gpu/semanticCommandGeometry.ts +260 -0
  100. package/src/gpu/semanticCommandPlanner.ts +280 -0
  101. package/src/gpu/semanticTextGlyphBridge.ts +35 -0
  102. package/src/gpu/semanticWebglSceneRenderer.ts +261 -0
  103. package/src/gpu/slotRanges.ts +15 -0
  104. package/src/gpu/webglSdfAtlasTexture.ts +69 -0
  105. package/src/gpu/webglSdfGlyphPipeline.ts +299 -0
  106. package/src/gpu/webglSemanticCommandExecutor.ts +739 -0
  107. package/src/index.ts +84 -0
  108. package/src/interaction/numericTextRegions.ts +80 -0
  109. package/src/layout.rs +1882 -0
  110. package/src/lib.rs +1443 -0
  111. package/src/localizationProvider.ts +113 -0
  112. package/src/main.rs +55 -0
  113. package/src/masterdata_runtime.rs +496 -0
  114. package/src/originPrebuiltSdfAtlasPackage.ts +403 -0
  115. package/src/prebuiltSdfAtlas.ts +306 -0
  116. package/src/protocol.ts +150 -0
  117. package/src/renderer.ts +792 -0
  118. package/src/resourceProvider.ts +69 -0
  119. package/src/scene.rs +665 -0
  120. package/src/telemetry/rendererTelemetry.ts +358 -0
  121. package/src/types/atlas.ts +80 -0
  122. package/src/types/authoring.ts +85 -0
  123. package/src/types/core.ts +110 -0
  124. package/src/types/freeType.ts +63 -0
  125. package/src/types/glyph.ts +33 -0
  126. package/src/types/layout.ts +28 -0
  127. package/src/types/text.ts +28 -0
  128. package/src/worker/glyphWorkScheduler.ts +130 -0
  129. package/src/worker-client.ts +484 -0
  130. package/src/worker.ts +895 -0
package/src/index.ts ADDED
@@ -0,0 +1,84 @@
1
+ export {
2
+ BrowserRenderer,
3
+ BrowserRendererError,
4
+ BrowserScene,
5
+ } from "./renderer.js";
6
+ export { BrowserAuthoringClient } from "./authoring.js";
7
+ export type {
8
+ BrowserRendererOptions,
9
+ MasterDataTableLoader,
10
+ MasterDataTableRequest,
11
+ ProfileSceneCreateOptions,
12
+ } from "./renderer.js";
13
+ export type {
14
+ ProvidedResource,
15
+ ResourceContext,
16
+ ResourceDescriptor,
17
+ ResourceProvider,
18
+ ResourceSource,
19
+ } from "./resourceProvider.js";
20
+ export { LocalizationProviderManager } from "./localizationProvider.js";
21
+ export type {
22
+ LocalizationContext,
23
+ LocalizationProvider,
24
+ LocalizationProviderStats,
25
+ LocalizationRequest,
26
+ } from "./localizationProvider.js";
27
+ export { FontProviderManager } from "./fontProvider.js";
28
+ export type {
29
+ FontContext,
30
+ FontProvider,
31
+ FontProviderStats,
32
+ FontRequest,
33
+ ProvidedFont,
34
+ } from "./fontProvider.js";
35
+ export {
36
+ createHttpPrebuiltSdfAtlasProvider,
37
+ isValidPrebuiltSdfAtlasManifest,
38
+ } from "./prebuiltSdfAtlas.js";
39
+ export type {
40
+ PrebuiltSdfAtlasGlyph,
41
+ PrebuiltSdfAtlasManifest,
42
+ PrebuiltSdfAtlasPage,
43
+ PrebuiltSdfAtlasProvider,
44
+ } from "./prebuiltSdfAtlas.js";
45
+ export {
46
+ createOriginPrebuiltSdfAtlasPackage,
47
+ PrebuiltSdfAtlasStorageError,
48
+ } from "./originPrebuiltSdfAtlasPackage.js";
49
+ export type {
50
+ OriginPrebuiltSdfAtlasPackage,
51
+ PrebuiltSdfAtlasInstallOptions,
52
+ PrebuiltSdfAtlasInstallProgress,
53
+ PrebuiltSdfAtlasPackageStatus,
54
+ PrebuiltSdfAtlasStorageErrorCode,
55
+ } from "./originPrebuiltSdfAtlasPackage.js";
56
+ export type {
57
+ CoreControlBinding,
58
+ CoreInteractionRegion,
59
+ CoreSceneDelta,
60
+ CoreSceneDump,
61
+ StableId,
62
+ } from "./types/core.js";
63
+ export type {
64
+ RendererFontContract,
65
+ RendererWorkerStats,
66
+ } from "./protocol.js";
67
+ export type {
68
+ RendererMasterData,
69
+ } from "./worker-client.js";
70
+ export { RendererAuthoringDocument } from "./worker-client.js";
71
+ export { AUTHORING_CHECKPOINT_SCHEMA } from "./types/authoring.js";
72
+ export type {
73
+ AuthoringCheckpoint,
74
+ AuthoringCategory,
75
+ AuthoringChangeKind,
76
+ AuthoringCommand,
77
+ AuthoringDelta,
78
+ AuthoringElementChange,
79
+ AuthoringSelection,
80
+ AuthoringElementId,
81
+ AuthoringPageChange,
82
+ AuthoringPageChangeKind,
83
+ GameProfileDocument,
84
+ } from "./types/authoring.js";
@@ -0,0 +1,80 @@
1
+ import type { GlyphInstance } from "../types/glyph.js";
2
+
3
+ type NumericRun = { text: string; plain_start: number; plain_end: number };
4
+ type NumericCommand = {
5
+ id: string;
6
+ layer_id: string;
7
+ clip?: Array<[number, number]> | null;
8
+ numeric_text_runs?: NumericRun[];
9
+ };
10
+
11
+ export type NumericTextRegion = {
12
+ id: string;
13
+ layer_id: string;
14
+ role: "numeric_run";
15
+ bounds: { x: number; y: number; width: number; height: number };
16
+ quad: [[number, number], [number, number], [number, number], [number, number]];
17
+ hit_geometry: [[number, number], [number, number], [number, number], [number, number]];
18
+ clip: Array<[number, number]> | null;
19
+ resolved_data: { text: string; plain_start: number; plain_end: number };
20
+ capabilities: [];
21
+ render_mask: boolean;
22
+ };
23
+
24
+ export type NumericRegionRuntimeState = {
25
+ layerTransform: { dx: number; dy: number };
26
+ commandTransform: { dx: number; dy: number };
27
+ };
28
+
29
+ export function buildNumericTextRegions(
30
+ command: NumericCommand,
31
+ instances: Array<Pick<GlyphInstance, "layerId" | "plainTextIndex" | "deviceCharQuad">>,
32
+ renderMask: boolean,
33
+ runtimeState?: NumericRegionRuntimeState,
34
+ ): NumericTextRegion[] {
35
+ return (command.numeric_text_runs ?? []).flatMap((run) => {
36
+ const points = instances
37
+ .filter((instance) => instance.layerId === command.id && instance.plainTextIndex >= run.plain_start && instance.plainTextIndex < run.plain_end)
38
+ .flatMap((instance) => instance.deviceCharQuad[1]);
39
+ if (points.length === 0) return [];
40
+ const minX = Math.min(...points.map(([x]) => x));
41
+ const minY = Math.min(...points.map(([, y]) => y));
42
+ const maxX = Math.max(...points.map(([x]) => x));
43
+ const maxY = Math.max(...points.map(([, y]) => y));
44
+ const quad: NumericTextRegion["quad"] = [[minX, minY], [maxX, minY], [maxX, maxY], [minX, maxY]];
45
+ const region: NumericTextRegion = {
46
+ id: `${command.id}:numeric:${run.plain_start}:${run.plain_end}`,
47
+ layer_id: command.layer_id,
48
+ role: "numeric_run",
49
+ bounds: { x: minX, y: minY, width: maxX - minX, height: maxY - minY },
50
+ quad,
51
+ hit_geometry: quad,
52
+ clip: command.clip ?? null,
53
+ resolved_data: { text: run.text, plain_start: run.plain_start, plain_end: run.plain_end },
54
+ capabilities: [],
55
+ render_mask: renderMask,
56
+ };
57
+ return [runtimeState ? applyNumericRegionRuntimeState(region, runtimeState) : region];
58
+ });
59
+ }
60
+
61
+ export function applyNumericRegionRuntimeState(
62
+ region: NumericTextRegion,
63
+ state: NumericRegionRuntimeState,
64
+ ): NumericTextRegion {
65
+ const dx = state.layerTransform.dx + state.commandTransform.dx;
66
+ const dy = state.layerTransform.dy + state.commandTransform.dy;
67
+ const translate = ([x, y]: [number, number]): [number, number] => [x + dx, y + dy];
68
+ const translateClip = ([x, y]: [number, number]): [number, number] => [
69
+ x + state.layerTransform.dx,
70
+ y + state.layerTransform.dy,
71
+ ];
72
+ const quad = region.quad.map(translate) as NumericTextRegion["quad"];
73
+ return {
74
+ ...region,
75
+ bounds: { ...region.bounds, x: region.bounds.x + dx, y: region.bounds.y + dy },
76
+ quad,
77
+ hit_geometry: quad,
78
+ clip: region.clip?.map(translateClip) ?? null,
79
+ };
80
+ }