@bardway/trpg-pixi 0.0.0-stage → 0.1.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 (111) hide show
  1. package/LICENSE +21 -0
  2. package/NOTICE +10 -0
  3. package/NOTICE.md +1 -0
  4. package/README.md +25 -2
  5. package/dist/AnimationMilestones.d.ts +17 -0
  6. package/dist/BattleActionMotionMath.d.ts +24 -0
  7. package/dist/BattleActionPresentationRecipes.d.ts +11 -0
  8. package/dist/BattleFxLibrary.d.ts +16 -0
  9. package/dist/BattlePresentationEngine.d.ts +26 -0
  10. package/dist/BattlePresentationPoseRegistry.d.ts +25 -0
  11. package/dist/BattlePresentationRecipe.d.ts +48 -0
  12. package/dist/BattleSequenceScheduler.d.ts +11 -0
  13. package/dist/DisplayEventQueue.d.ts +24 -0
  14. package/dist/PixiAnimationActivity.d.ts +7 -0
  15. package/dist/PixiAnimationDirector.d.ts +21 -0
  16. package/dist/PixiApplicationFactory.d.ts +17 -0
  17. package/dist/PixiAssetManager.d.ts +70 -0
  18. package/dist/PixiBattleActionRecipes.d.ts +75 -0
  19. package/dist/PixiBattleCinematicSurface.d.ts +23 -0
  20. package/dist/PixiBattleEntryTransition.d.ts +87 -0
  21. package/dist/PixiBattleFieldSurface.d.ts +125 -0
  22. package/dist/PixiBattleFxResources.d.ts +154 -0
  23. package/dist/PixiBattleGrid.d.ts +13 -0
  24. package/dist/PixiBattleHudPorts.d.ts +192 -0
  25. package/dist/PixiBattleHudSurface.d.ts +159 -0
  26. package/dist/PixiBattleLightningResources.d.ts +57 -0
  27. package/dist/PixiBattleMapDissolve.d.ts +38 -0
  28. package/dist/PixiBattleSceneTransition.d.ts +30 -0
  29. package/dist/PixiBattleTokenLifecycleCoordinator.d.ts +44 -0
  30. package/dist/PixiBattleVisualLayout.d.ts +284 -0
  31. package/dist/PixiBattleWhipGeometry.d.ts +18 -0
  32. package/dist/PixiBattleWhipMotion.d.ts +63 -0
  33. package/dist/PixiBattleWhipResources.d.ts +53 -0
  34. package/dist/PixiCameraFocusController.d.ts +40 -0
  35. package/dist/PixiCombatMotion.d.ts +223 -0
  36. package/dist/PixiCurrentActorCardGlow.d.ts +37 -0
  37. package/dist/PixiCurrentActorHalo.d.ts +55 -0
  38. package/dist/PixiDirectionalMotionBlur.d.ts +12 -0
  39. package/dist/PixiDisplayRenderer.d.ts +85 -0
  40. package/dist/PixiEffectPlugin.d.ts +25 -0
  41. package/dist/PixiEndingSurface.d.ts +104 -0
  42. package/dist/PixiInvestigatorDossierInsanityFilter.d.ts +14 -0
  43. package/dist/PixiLocalGlowMesh.d.ts +38 -0
  44. package/dist/PixiMapEdgeShadow.d.ts +36 -0
  45. package/dist/PixiMapMediaSurface.d.ts +71 -0
  46. package/dist/PixiMapWorldUtils.d.ts +24 -0
  47. package/dist/PixiMediaBreathRuntime.d.ts +69 -0
  48. package/dist/PixiMotion.d.ts +42 -0
  49. package/dist/PixiObjectiveBreathingGlow.d.ts +39 -0
  50. package/dist/PixiPartyHudSurface.d.ts +58 -0
  51. package/dist/PixiPersistentEffectTransition.d.ts +23 -0
  52. package/dist/PixiPortraitResourceCard.d.ts +147 -0
  53. package/dist/PixiPreludeStoryTransition.d.ts +35 -0
  54. package/dist/PixiPreludeSurface.d.ts +203 -0
  55. package/dist/PixiProgressCinematic.d.ts +65 -0
  56. package/dist/PixiResultEffectSurface.d.ts +101 -0
  57. package/dist/PixiRetainedMeterAnimator.d.ts +44 -0
  58. package/dist/PixiRuntimeContext.d.ts +21 -0
  59. package/dist/PixiSceneGraph.d.ts +42 -0
  60. package/dist/PixiSceneMotion.d.ts +41 -0
  61. package/dist/PixiSceneMotionPorts.d.ts +83 -0
  62. package/dist/PixiScenePresentationDirector.d.ts +118 -0
  63. package/dist/PixiSessionLayout.d.ts +61 -0
  64. package/dist/PixiSessionSkin.d.ts +30 -0
  65. package/dist/PixiShaderRuntime.d.ts +191 -0
  66. package/dist/PixiStageFontLoader.d.ts +2 -0
  67. package/dist/PixiStageMetrics.d.ts +25 -0
  68. package/dist/PixiStageTheme.d.ts +26 -0
  69. package/dist/PixiStoryArchiveMotion.d.ts +19 -0
  70. package/dist/PixiStoryCardCut.d.ts +58 -0
  71. package/dist/PixiStorySurface.d.ts +285 -0
  72. package/dist/PixiStoryWorkspaceSurface.d.ts +64 -0
  73. package/dist/PixiSummaryBoardSurface.d.ts +112 -0
  74. package/dist/PixiSystemHudSurface.d.ts +73 -0
  75. package/dist/PixiTeamCheckCinematic.d.ts +34 -0
  76. package/dist/PixiTextTransitionEffect.d.ts +54 -0
  77. package/dist/PixiTokenPersistentStatus.d.ts +101 -0
  78. package/dist/PixiTokenWorld.d.ts +170 -0
  79. package/dist/PixiTypography.d.ts +96 -0
  80. package/dist/PixiVideoRuntime.d.ts +61 -0
  81. package/dist/PixiViewportController.d.ts +25 -0
  82. package/dist/ResultEffectTuning.d.ts +57 -0
  83. package/dist/RetainedStageSurface.d.ts +50 -0
  84. package/dist/SessionFieldEffectRuntime.d.ts +45 -0
  85. package/dist/SessionSceneHistory.d.ts +10 -0
  86. package/dist/SessionSceneRegistry.d.ts +31 -0
  87. package/dist/StoryEventCoordinator.d.ts +61 -0
  88. package/dist/effects/PixiEffectLayerRegistry.d.ts +54 -0
  89. package/dist/effects/PixiEffectScope.d.ts +20 -0
  90. package/dist/effects/PixiStableRandom.d.ts +2 -0
  91. package/dist/index.d.ts +92 -0
  92. package/dist/index.js +24184 -0
  93. package/dist/index.js.map +7 -0
  94. package/dist/recipes/EffectPrimitiveRuntimeRegistry.d.ts +28 -0
  95. package/dist/recipes/EffectRecipeExecutor.d.ts +73 -0
  96. package/dist/recipes/primitives.d.ts +39 -0
  97. package/dist/recipes/registry.d.ts +57 -0
  98. package/dist/recipes/schema.d.ts +93 -0
  99. package/dist/recipes.d.ts +5 -0
  100. package/dist/recipes.js +1384 -0
  101. package/dist/recipes.js.map +7 -0
  102. package/dist/story/PixiStoryPresentationEngine.d.ts +90 -0
  103. package/dist/story/StoryContentSurface.d.ts +34 -0
  104. package/dist/story/StoryImageFilter.d.ts +15 -0
  105. package/dist/story/StoryTimelineClock.d.ts +22 -0
  106. package/dist/story/StoryVisualMath.d.ts +6 -0
  107. package/dist/tuning/SessionTuningResolver.d.ts +1 -0
  108. package/dist/tuning/SessionTuningTypes.d.ts +1 -0
  109. package/dist/ui/PixiStagePrimitives.d.ts +36 -0
  110. package/dist/uniforms.d.ts +1 -0
  111. package/package.json +44 -4
@@ -0,0 +1,118 @@
1
+ import type { BlurFilter, Container, Filter, Graphics, Particle, ParticleContainer, Rectangle, Sprite, Text, Texture } from 'pixi.js';
2
+ import type { PixiAnimationActivity } from './PixiAnimationActivity.js';
3
+ import type { PixiAnimationDirector } from './PixiAnimationDirector.js';
4
+ import type { PixiSummaryBoardSurface, SummaryBoardData } from './PixiSummaryBoardSurface.js';
5
+ import type { PixiPreludeSurface } from './PixiPreludeSurface.js';
6
+ import type { PixiStorySurface, StoryMediaContent } from './PixiStorySurface.js';
7
+ import type { PixiEndingSurface } from './PixiEndingSurface.js';
8
+ import type { PixiPartyHudSurface } from './PixiPartyHudSurface.js';
9
+ import type { PixiBattleHudSurface } from './PixiBattleHudSurface.js';
10
+ import type { PixiStoryWorkspaceSurface } from './PixiStoryWorkspaceSurface.js';
11
+ import type { PixiSceneGraph } from './PixiSceneGraph.js';
12
+ import type { BattleViewportGridLayout, PixiLayoutRect } from './PixiSessionLayout.js';
13
+ import type { SessionTuningResolver } from '@bardway/trpg-media/tuning';
14
+ interface Constructors {
15
+ BlurFilter: typeof BlurFilter;
16
+ Filter?: typeof Filter;
17
+ Container: typeof Container;
18
+ Graphics: typeof Graphics;
19
+ Particle: typeof Particle;
20
+ ParticleContainer: typeof ParticleContainer;
21
+ Rectangle: typeof Rectangle;
22
+ Sprite?: new (texture?: Texture | import('pixi.js').SpriteOptions) => Sprite;
23
+ Text: typeof Text;
24
+ Texture: typeof Texture;
25
+ }
26
+ export interface ScenePresentationFrame {
27
+ owner: string;
28
+ revision: number;
29
+ scene: 'prelude' | 'story' | 'battle' | 'ending';
30
+ hydrate: boolean;
31
+ map?: {
32
+ layout: BattleViewportGridLayout;
33
+ imageUrl: string;
34
+ videoUrl?: string;
35
+ };
36
+ storyContent: StoryMediaContent | null;
37
+ endingImageUrl: string | null;
38
+ endPresentation: 'direct' | 'summary';
39
+ }
40
+ export interface ScenePresentationSurfaces {
41
+ prelude: Pick<PixiPreludeSurface, 'node' | 'createStoryTransitionArtwork'>;
42
+ story: Pick<PixiStorySurface, 'node' | 'mainImageAnchor' | 'mainBackdrop' | 'leftPanelNode' | 'rightPanelNode' | 'waitForPresentationContentReady' | 'getMainBackdropTargetAlpha' | 'resetTransitionPose'>;
43
+ ending: Pick<PixiEndingSurface, 'waitForPhotoReady' | 'playTimeline'>;
44
+ partyHud: Pick<PixiPartyHudSurface, 'getPreludeStoryEntries'>;
45
+ battleHud?: Pick<PixiBattleHudSurface, 'prepareBattleEntry' | 'finishBattleEntry' | 'cancelBattleEntry'>;
46
+ caseWorkspace: Pick<PixiStoryWorkspaceSurface, 'node'>;
47
+ preparePreludeToStory(frame: ScenePresentationFrame): void;
48
+ preparePreludeToStoryHandoff(): void;
49
+ restorePreludeToStoryTransition(story: boolean): void;
50
+ sync(frame: ScenePresentationFrame): void;
51
+ reset(): void;
52
+ getTransitionNumber(key: string, fallback: number): number;
53
+ getTransitionString(key: string, fallback: string): string;
54
+ }
55
+ export interface ScenePresentationDirectorOptions {
56
+ summary: PixiSummaryBoardSurface;
57
+ summaryData(frame: ScenePresentationFrame): SummaryBoardData;
58
+ stage: {
59
+ width: number;
60
+ height: number;
61
+ };
62
+ mediaRect: PixiLayoutRect;
63
+ colors: {
64
+ transition: string;
65
+ mask: string;
66
+ gridLine: string;
67
+ };
68
+ tuning?: SessionTuningResolver;
69
+ resolveExitTarget(frame: ScenePresentationFrame): ScenePresentationFrame;
70
+ waitForMapReady(frame: ScenePresentationFrame, signal: AbortSignal, timeoutMs: number): Promise<'ready' | 'fallback'>;
71
+ onTransitionStarted?(frame: ScenePresentationFrame, signal: AbortSignal): void;
72
+ onCommitted?(frame: ScenePresentationFrame): void;
73
+ }
74
+ /** Owns scene commits and every cross-scene transition. Surfaces never call each other. */
75
+ export declare class PixiScenePresentationDirector {
76
+ private readonly scene;
77
+ private readonly surfaces;
78
+ private readonly animation;
79
+ private readonly activity;
80
+ private readonly constructors;
81
+ private readonly requestRender;
82
+ private readonly commit;
83
+ private readonly options;
84
+ private committed;
85
+ private transitionAbort;
86
+ private activeBattleTransition;
87
+ private reducedMotion;
88
+ private preludeStoryTransitionActive;
89
+ private readonly summary;
90
+ private activeBattleEntryVisuals;
91
+ private activeBattleExitVisuals;
92
+ private tuning;
93
+ private readonly waitForBattleMapReady;
94
+ constructor(scene: PixiSceneGraph, surfaces: ScenePresentationSurfaces, animation: PixiAnimationDirector, activity: PixiAnimationActivity, constructors: Constructors, requestRender: () => void, commit: (snapshot: ScenePresentationFrame) => void, options: ScenePresentationDirectorOptions);
95
+ sync(next: ScenePresentationFrame): Promise<void>;
96
+ setReducedMotion(reducedMotion: boolean): void;
97
+ updateTuning(tuning: SessionTuningResolver): void;
98
+ reset(): void;
99
+ destroy(): void;
100
+ private commitSnapshot;
101
+ private commitBattleSnapshotIfNew;
102
+ private waitForBattleEntryMapSnapshot;
103
+ private playPreludeToStory;
104
+ private playBattleEntry;
105
+ private playBattleExit;
106
+ private playEnding;
107
+ private revealEndingFromBlack;
108
+ private createBattleEntryVisuals;
109
+ private createModalVeil;
110
+ private createVeil;
111
+ private beginTransition;
112
+ private cancelTransition;
113
+ private restoreSceneTransitionPose;
114
+ private transitionNumber;
115
+ private resolveBattleExitTarget;
116
+ private resolvePreludeStoryTiming;
117
+ }
118
+ export {};
@@ -0,0 +1,61 @@
1
+ export interface PixiLayoutRect {
2
+ x: number;
3
+ y: number;
4
+ width: number;
5
+ height: number;
6
+ }
7
+ export interface PixiLayoutCenter {
8
+ x: number;
9
+ y: number;
10
+ }
11
+ /** Builds a rect from a stable visual center for all image-layout scaling. */
12
+ export declare const resolvePixiLayoutRectAtCenter: (center: PixiLayoutCenter, size: Pick<PixiLayoutRect, "width" | "height">) => PixiLayoutRect;
13
+ export declare const resizePixiLayoutRectFromCenter: (rect: PixiLayoutRect, size: Pick<PixiLayoutRect, "width" | "height">) => PixiLayoutRect;
14
+ export interface BattleViewportGridLayout extends PixiLayoutRect {
15
+ cols: number;
16
+ rows: number;
17
+ cellW: number;
18
+ cellH: number;
19
+ offsetX: number;
20
+ offsetY: number;
21
+ renderW: number;
22
+ renderH: number;
23
+ }
24
+ export declare const stablePortraitRotation: (id: string) => number;
25
+ export declare const stableSeededRotation: (id: string, maxDegrees: number, salt?: string) => number;
26
+ /** Stable integer jitter for casually placed repeated cards; never returns zero. */
27
+ export declare const stableSeededPixelOffset: (id: string, minPixels?: number, maxPixels?: number, salt?: string) => number;
28
+ export declare const clampResourceRatio: (current: number | undefined, max: number | undefined) => number;
29
+ export declare const normalizedPositionToScreen: (position: {
30
+ x: number;
31
+ y: number;
32
+ }, rect: PixiLayoutRect) => {
33
+ x: number;
34
+ y: number;
35
+ };
36
+ export declare const resolveBattleViewportGridLayout: (map: {
37
+ size: {
38
+ width: number;
39
+ height: number;
40
+ };
41
+ grid: {
42
+ cols: number;
43
+ rows: number;
44
+ };
45
+ }, viewport: PixiLayoutRect) => BattleViewportGridLayout;
46
+ export interface PixiMosaicTile extends PixiLayoutRect {
47
+ col: number;
48
+ row: number;
49
+ order: number;
50
+ }
51
+ export declare const createBattleMosaicTiles: (layout: BattleViewportGridLayout, transitionId: string) => PixiMosaicTile[];
52
+ export interface ComboSlashRegion {
53
+ index: number;
54
+ points: number[];
55
+ bounds: PixiLayoutRect;
56
+ }
57
+ export declare const createComboSlashRegions: (participantCount: number, bounds?: PixiLayoutRect) => ComboSlashRegion[];
58
+ export declare const PIXI_SESSION_STAGE: {
59
+ readonly width: 1920;
60
+ readonly height: 1080;
61
+ };
@@ -0,0 +1,30 @@
1
+ import type { Sprite, Texture } from 'pixi.js';
2
+ import type { RuntimeLogger } from '@bardway/trpg-media';
3
+ import type { PixiAssetManager } from './PixiAssetManager.js';
4
+ export interface PixiSkinEntry<TId extends string> {
5
+ id: TId;
6
+ alias: string;
7
+ uri: string;
8
+ scope: string;
9
+ required: boolean;
10
+ }
11
+ /** Preserves parallel scoped loading while the host supplies its complete skin manifest. */
12
+ export declare function preloadPixiSkin<TId extends string>(assets: PixiAssetManager, entries: readonly PixiSkinEntry<TId>[], logger: RuntimeLogger, signal?: AbortSignal): Promise<ReadonlyMap<TId, Texture | null>>;
13
+ type SpriteConstructor = new (texture?: Texture | import('pixi.js').SpriteOptions) => Sprite;
14
+ export declare const createStageSkinSprite: (SpriteConstructor: SpriteConstructor, texture: Texture, stage?: {
15
+ width: number;
16
+ height: number;
17
+ }) => Sprite;
18
+ export declare const syncStageSkinSprite: (sprite: Sprite, texture?: Texture, stage?: {
19
+ width: number;
20
+ height: number;
21
+ }) => void;
22
+ export interface SessionDisplayPreludeFrameTextures {
23
+ moduleFrame: Texture | null;
24
+ playerFrame: Texture | null;
25
+ }
26
+ export interface SessionDisplayCaseWorkspaceTextures {
27
+ shell: Texture | null;
28
+ panel: Texture | null;
29
+ }
30
+ export {};
@@ -0,0 +1,191 @@
1
+ import type { Filter, Rectangle, Sprite, Texture, Ticker, UniformGroup } from 'pixi.js';
2
+ import type { PixiAnimationActivity } from './PixiAnimationActivity.js';
3
+ export type PixiShaderEffectId = 'galaxy' | 'prismaticBurst' | 'sideRays' | 'lightning' | 'lightPillar' | 'lineWaves' | 'teamCheckStrands' | 'arcaneVeil' | 'heavyRain' | 'fire' | 'denseFog' | 'dark' | 'thunderstorm' | 'earthquake';
4
+ export type PixiShaderUniformEntry = {
5
+ value: number | Float32Array;
6
+ type: 'f32' | 'vec2<f32>' | 'vec3<f32>';
7
+ };
8
+ export type PixiShaderUniformEntries = Record<string, PixiShaderUniformEntry>;
9
+ interface PixiEffectReleaseTarget {
10
+ sprite: Sprite;
11
+ filter: Filter;
12
+ }
13
+ export interface PixiEffectDefinition<TUniforms extends PixiShaderUniformEntries = PixiShaderUniformEntries> {
14
+ id: PixiShaderEffectId;
15
+ /** A stable mode consumed by the shared full-screen WebGL program. */
16
+ mode: number;
17
+ layer: 'field' | 'global' | 'cinematic';
18
+ qualityCost: 'low' | 'medium' | 'high';
19
+ reducedMotion: 'static-commit' | 'disabled';
20
+ resolution: number;
21
+ fragment: () => string;
22
+ createUniforms: () => TUniforms;
23
+ update: (uniforms: UniformGroup, elapsed: number) => void;
24
+ release: (target: PixiEffectReleaseTarget) => void;
25
+ }
26
+ export declare const PIXI_SHADER_REGISTRY: Readonly<Record<PixiShaderEffectId, PixiEffectDefinition>>;
27
+ export interface PixiShaderUniformConfig {
28
+ mode: number;
29
+ intensity: number;
30
+ rate: number;
31
+ }
32
+ export interface PixiLineWavesUniforms {
33
+ speed: number;
34
+ innerLines: number;
35
+ outerLines: number;
36
+ warpIntensity: number;
37
+ rotation: number;
38
+ edgeFadeWidth: number;
39
+ colorCycleSpeed: number;
40
+ brightness: number;
41
+ color1: Float32Array;
42
+ color2: Float32Array;
43
+ color3: Float32Array;
44
+ }
45
+ export interface PixiSideRaysUniforms {
46
+ speed: number;
47
+ rayColor1: Float32Array;
48
+ rayColor2: Float32Array;
49
+ intensity: number;
50
+ spread: number;
51
+ flipX: number;
52
+ flipY: number;
53
+ tilt: number;
54
+ saturation: number;
55
+ blend: number;
56
+ falloff: number;
57
+ opacity: number;
58
+ }
59
+ export interface PixiLightningUniforms {
60
+ hue: number;
61
+ xOffset: number;
62
+ speed: number;
63
+ intensity: number;
64
+ size: number;
65
+ }
66
+ export interface PixiLightPillarUniforms {
67
+ topColor: Float32Array;
68
+ bottomColor: Float32Array;
69
+ intensity: number;
70
+ glowAmount: number;
71
+ width: number;
72
+ height: number;
73
+ noiseIntensity: number;
74
+ rotation: number;
75
+ waveRotation: number;
76
+ timeScale: number;
77
+ rotationSpeed: number;
78
+ }
79
+ export interface PixiGalaxyUniforms {
80
+ focal: Float32Array;
81
+ rotation: Float32Array;
82
+ starSpeed: number;
83
+ density: number;
84
+ hueShift: number;
85
+ speed: number;
86
+ glowIntensity: number;
87
+ saturation: number;
88
+ twinkleIntensity: number;
89
+ rotationSpeed: number;
90
+ autoCenterRepulsion: number;
91
+ }
92
+ export interface PixiPrismaticBurstUniforms {
93
+ intensity: number;
94
+ speed: number;
95
+ animationType: number;
96
+ distort: number;
97
+ offset: Float32Array;
98
+ noiseAmount: number;
99
+ rayCount: number;
100
+ color1: Float32Array;
101
+ color2: Float32Array;
102
+ color3: Float32Array;
103
+ }
104
+ export interface PixiArcaneVeilUniforms {
105
+ color: Float32Array;
106
+ speed: number;
107
+ scale: number;
108
+ opacity: number;
109
+ quality: number;
110
+ }
111
+ export interface PixiHeavyRainUniforms {
112
+ color: Float32Array;
113
+ density: number;
114
+ speed: number;
115
+ hazeOpacity: number;
116
+ slant: number;
117
+ }
118
+ export interface PixiFieldSurfaceUniforms {
119
+ color1: Float32Array;
120
+ color2: Float32Array;
121
+ color3: Float32Array;
122
+ density: number;
123
+ speed: number;
124
+ opacity: number;
125
+ }
126
+ export interface PixiTeamCheckStrandsUniforms {
127
+ count: number;
128
+ speed: number;
129
+ amplitude: number;
130
+ waviness: number;
131
+ thickness: number;
132
+ glow: number;
133
+ taper: number;
134
+ spread: number;
135
+ hueShift: number;
136
+ opacity: number;
137
+ scale: number;
138
+ saturation: number;
139
+ color1: Float32Array;
140
+ color2: Float32Array;
141
+ color3: Float32Array;
142
+ }
143
+ /** Exact Line Waves parameters previously supplied by the raw WebGL host. */
144
+ type PixiFilterConstructor = {
145
+ from(options: {
146
+ gl: {
147
+ vertex: string;
148
+ fragment: string;
149
+ name: string;
150
+ };
151
+ resources: Record<string, UniformGroup>;
152
+ resolution?: number;
153
+ }): Filter;
154
+ };
155
+ export interface PixiShaderRuntimeConstructors {
156
+ Filter: PixiFilterConstructor;
157
+ Rectangle: new (x?: number, y?: number, width?: number, height?: number) => Rectangle;
158
+ Sprite: new (texture?: Texture) => Sprite;
159
+ Texture: {
160
+ WHITE: Texture;
161
+ };
162
+ UniformGroup: typeof import('pixi.js').UniformGroup;
163
+ }
164
+ export declare class PixiShaderRuntime {
165
+ private readonly constructors;
166
+ private readonly activity;
167
+ private readonly uniformsFor;
168
+ private readonly stageSize;
169
+ private readonly surfaces;
170
+ private readonly stageBounds;
171
+ private readonly stageResolution;
172
+ private paused;
173
+ private playbackRate;
174
+ private reducedMotion;
175
+ private elapsed;
176
+ constructor(constructors: PixiShaderRuntimeConstructors, ticker: Ticker, activity: PixiAnimationActivity, uniformsFor: (effect: PixiShaderEffectId) => PixiShaderUniformEntries, stageSize?: {
177
+ width: number;
178
+ height: number;
179
+ });
180
+ private readonly ticker;
181
+ create(effectId: PixiShaderEffectId, intensity?: number, uniformOverrides?: PixiShaderUniformEntries): Sprite;
182
+ release(sprite: Sprite): void;
183
+ setPaused(paused: boolean): void;
184
+ setPlaybackRate(rate: number): void;
185
+ setReducedMotion(reducedMotion: boolean): void;
186
+ resize(): void;
187
+ setSuspended(sprite: Sprite, suspended: boolean): void;
188
+ destroy(): void;
189
+ private tick;
190
+ }
191
+ export {};
@@ -0,0 +1,2 @@
1
+ /** Waits for browser font resolution without adding the PDF CJK font to the stage preload. */
2
+ export declare const preloadPixiStageFonts: (fontTests: readonly string[]) => Promise<void>;
@@ -0,0 +1,25 @@
1
+ export declare const PIXI_STAGE_METRICS: {
2
+ readonly width: 1920;
3
+ readonly height: 1080;
4
+ readonly centerX: 960;
5
+ readonly centerY: 540;
6
+ readonly aspectRatio: number;
7
+ readonly edgeInset: 28;
8
+ readonly overscanRatio: 0.05;
9
+ };
10
+ export declare const PIXI_STAGE_SAFE_AREA: {
11
+ readonly x: 28;
12
+ readonly y: 28;
13
+ readonly width: number;
14
+ readonly height: number;
15
+ };
16
+ export declare const PIXI_STAGE_OVERSCAN_AREA: {
17
+ readonly x: number;
18
+ readonly y: number;
19
+ readonly width: number;
20
+ readonly height: number;
21
+ };
22
+ export declare const PIXI_LOGICAL_STAGE: {
23
+ readonly width: 1920;
24
+ readonly height: 1080;
25
+ };
@@ -0,0 +1,26 @@
1
+ export interface PixiStageTheme {
2
+ palette: {
3
+ surface: string;
4
+ backdrop: string;
5
+ veil: string;
6
+ accent: string;
7
+ investigator: string;
8
+ enemy: string;
9
+ };
10
+ radius: {
11
+ container: number;
12
+ };
13
+ opacity: {
14
+ disabled: number;
15
+ muted: number;
16
+ strong: number;
17
+ };
18
+ sceneTransition: {
19
+ motionBlurStrength: number;
20
+ motionBlurResolution: number;
21
+ };
22
+ stroke: {
23
+ subtle: number;
24
+ strong: number;
25
+ };
26
+ }
@@ -0,0 +1,19 @@
1
+ import { type PixiDirectionalMotionBlur } from './PixiDirectionalMotionBlur.js';
2
+ export interface StoryArchiveMotionPose {
3
+ x: number;
4
+ y: number;
5
+ scaleX: number;
6
+ scaleY: number;
7
+ rotation: number;
8
+ }
9
+ export interface StoryArchiveMotionFrame extends StoryArchiveMotionPose {
10
+ shadeAlpha: number;
11
+ blurX: number;
12
+ blurY: number;
13
+ }
14
+ export type PixiStoryArchiveMotionFilter = PixiDirectionalMotionBlur;
15
+ export declare const writeStoryArchiveMotionFrame: (start: StoryArchiveMotionPose, end: StoryArchiveMotionPose, linearProgress: number, maxBlurStrength: number, output: StoryArchiveMotionFrame) => void;
16
+ export declare const createPixiStoryArchiveMotionFilter: (FilterConstructor: typeof import("pixi.js").Filter, options?: {
17
+ resolution?: number;
18
+ padding?: number;
19
+ }) => PixiDirectionalMotionBlur;
@@ -0,0 +1,58 @@
1
+ import type { BlurFilter, Container, Graphics, Sprite, Texture } from 'pixi.js';
2
+ import type { PixiAnimationDirector } from './PixiAnimationDirector.js';
3
+ import type { PixiLayoutRect } from './PixiSessionLayout.js';
4
+ import type { PixiMediaBreathRuntime } from './PixiMediaBreathRuntime.js';
5
+ interface Constructors {
6
+ BlurFilter: typeof BlurFilter;
7
+ Container: typeof Container;
8
+ Graphics: typeof Graphics;
9
+ Sprite: new (texture?: Texture | import('pixi.js').SpriteOptions) => Sprite;
10
+ }
11
+ export interface StoryCardCutOptions {
12
+ readonly duration: number;
13
+ readonly travel: number;
14
+ readonly shadowAlpha: number;
15
+ }
16
+ export interface StoryCardCutFrame {
17
+ readonly layer: 'back' | 'front';
18
+ readonly x: number;
19
+ readonly y: number;
20
+ readonly rotation: number;
21
+ readonly scale: number;
22
+ readonly shadowAlpha: number;
23
+ readonly shadowOffsetX: number;
24
+ readonly shadowOffsetY: number;
25
+ readonly edgeAlpha: number;
26
+ }
27
+ export declare const resolveStoryCardCutFrame: (progress: number, bounds: PixiLayoutRect, travel: number, maximumShadowAlpha: number) => StoryCardCutFrame;
28
+ export declare class PixiStoryCardCut {
29
+ private readonly backLayer;
30
+ private readonly frontLayer;
31
+ private readonly animation;
32
+ private readonly requestRender;
33
+ private readonly photoColors;
34
+ readonly node: Container;
35
+ private readonly page;
36
+ private readonly backing;
37
+ private readonly shadow;
38
+ private readonly edge;
39
+ private readonly shadowBlur;
40
+ private activeVersion;
41
+ private progress;
42
+ private boundsResolver;
43
+ private options;
44
+ private frontVisible;
45
+ private onFrontVisible;
46
+ private readonly mediaBreathBinding;
47
+ constructor(backLayer: Container, frontLayer: Container, constructors: Constructors, animation: PixiAnimationDirector, requestRender: () => void, photoColors: {
48
+ paper: string;
49
+ shadow: string;
50
+ paperEdge: string;
51
+ }, mediaBreath?: PixiMediaBreathRuntime);
52
+ play(texture: Texture, boundsResolver: () => PixiLayoutRect, options: StoryCardCutOptions, signal: AbortSignal, onFrontVisible: () => void): Promise<boolean>;
53
+ refresh(): void;
54
+ hide(): void;
55
+ destroy(): void;
56
+ private applyFrame;
57
+ }
58
+ export {};