textmode.js 0.9.0 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/textmode.esm.js +965 -965
- package/dist/textmode.umd.js +13 -13
- package/dist/types/Textmode.d.ts +133 -0
- package/dist/types/errors/Error.d.ts +24 -0
- package/dist/types/errors/ErrorHandler.d.ts +77 -0
- package/dist/types/errors/index.d.ts +2 -0
- package/dist/types/exports/conversion.d.ts +1 -0
- package/dist/types/exports/filters.d.ts +1 -0
- package/dist/types/exports/input.d.ts +1 -0
- package/dist/types/exports/layering.d.ts +1 -0
- package/dist/types/exports/loadables.d.ts +1 -0
- package/dist/types/exports/loading.d.ts +1 -0
- package/dist/types/exports/plugins.d.ts +1 -0
- package/dist/types/index.d.ts +85 -0
- package/dist/types/rendering/index.d.ts +4 -0
- package/dist/types/rendering/webgl/batching/DrawQueue.d.ts +89 -0
- package/dist/types/rendering/webgl/batching/GeometryAttributeCache.d.ts +18 -0
- package/dist/types/rendering/webgl/batching/InstanceAttributeBinder.d.ts +83 -0
- package/dist/types/rendering/webgl/batching/InstanceBatch.d.ts +87 -0
- package/dist/types/rendering/webgl/batching/InstanceBuffer.d.ts +68 -0
- package/dist/types/rendering/webgl/batching/InstanceData.d.ts +56 -0
- package/dist/types/rendering/webgl/batching/InstanceWriter.d.ts +78 -0
- package/dist/types/rendering/webgl/core/Framebuffer.d.ts +94 -0
- package/dist/types/rendering/webgl/core/Renderer.d.ts +78 -0
- package/dist/types/rendering/webgl/core/Shader.d.ts +62 -0
- package/dist/types/rendering/webgl/core/interfaces/IFramebuffer.d.ts +101 -0
- package/dist/types/rendering/webgl/core/interfaces/IRenderer.d.ts +214 -0
- package/dist/types/rendering/webgl/geometries/2d/Arc.d.ts +17 -0
- package/dist/types/rendering/webgl/geometries/2d/BezierCurve.d.ts +23 -0
- package/dist/types/rendering/webgl/geometries/2d/Ellipse.d.ts +21 -0
- package/dist/types/rendering/webgl/geometries/2d/Line.d.ts +21 -0
- package/dist/types/rendering/webgl/geometries/2d/Rectangle.d.ts +21 -0
- package/dist/types/rendering/webgl/geometries/2d/Triangle.d.ts +21 -0
- package/dist/types/rendering/webgl/geometries/BaseGeometry.d.ts +57 -0
- package/dist/types/rendering/webgl/geometries/immediate/ImmediateQuad.d.ts +33 -0
- package/dist/types/rendering/webgl/geometries/index.d.ts +6 -0
- package/dist/types/rendering/webgl/geometries/utils/GeometryDescriptors.d.ts +31 -0
- package/dist/types/rendering/webgl/geometries/utils/GeometryGenerator.d.ts +16 -0
- package/dist/types/rendering/webgl/index.d.ts +19 -0
- package/dist/types/rendering/webgl/materials/Material.d.ts +23 -0
- package/dist/types/rendering/webgl/materials/MaterialManager.d.ts +56 -0
- package/dist/types/rendering/webgl/materials/index.d.ts +2 -0
- package/dist/types/rendering/webgl/pipeline/MaterialBatchPipeline.d.ts +54 -0
- package/dist/types/rendering/webgl/pipeline/index.d.ts +7 -0
- package/dist/types/rendering/webgl/state/RenderState.d.ts +159 -0
- package/dist/types/rendering/webgl/types/DrawCommand.d.ts +29 -0
- package/dist/types/rendering/webgl/types/GeometryTypes.d.ts +147 -0
- package/dist/types/rendering/webgl/types/RenderTypes.d.ts +18 -0
- package/dist/types/rendering/webgl/types/UniformTypes.d.ts +11 -0
- package/dist/types/rendering/webgl/utils/GLUtils.d.ts +68 -0
- package/dist/types/rendering/webgl/utils/ViewportCache.d.ts +3 -0
- package/dist/types/rendering/webgl/utils/hash.d.ts +102 -0
- package/dist/types/textmode/AnimationController.d.ts +110 -0
- package/dist/types/textmode/Canvas.d.ts +58 -0
- package/dist/types/textmode/Grid.d.ts +563 -0
- package/dist/types/textmode/TextmodeColor.d.ts +405 -0
- package/dist/types/textmode/Textmodifier.d.ts +113 -0
- package/dist/types/textmode/conversion/ConversionManager.d.ts +89 -0
- package/dist/types/textmode/conversion/ConversionRegistry.d.ts +78 -0
- package/dist/types/textmode/conversion/index.d.ts +2 -0
- package/dist/types/textmode/conversion/strategies/brightness.d.ts +2 -0
- package/dist/types/textmode/filters/FilterManager.d.ts +132 -0
- package/dist/types/textmode/filters/index.d.ts +2 -0
- package/dist/types/textmode/filters/types.d.ts +78 -0
- package/dist/types/textmode/interfaces/IDisposable.d.ts +14 -0
- package/dist/types/textmode/interfaces/ITextmodifier.d.ts +753 -0
- package/dist/types/textmode/interfaces/index.d.ts +2 -0
- package/dist/types/textmode/layers/Layer2DCompositor.d.ts +89 -0
- package/dist/types/textmode/layers/LayerManager.d.ts +115 -0
- package/dist/types/textmode/layers/TextmodeLayer.d.ts +105 -0
- package/dist/types/textmode/layers/index.d.ts +4 -0
- package/dist/types/textmode/layers/interfaces/ILayerManager.d.ts +158 -0
- package/dist/types/textmode/layers/interfaces/ITextmodeLayer.d.ts +821 -0
- package/dist/types/textmode/layers/types.d.ts +78 -0
- package/dist/types/textmode/loadables/ITextmodeSource.d.ts +541 -0
- package/dist/types/textmode/loadables/TextmodeImage.d.ts +45 -0
- package/dist/types/textmode/loadables/TextmodeSource.d.ts +65 -0
- package/dist/types/textmode/loadables/TextmodeTexture.d.ts +95 -0
- package/dist/types/textmode/loadables/font/CharacterColorMapper.d.ts +34 -0
- package/dist/types/textmode/loadables/font/CharacterExtractor.d.ts +22 -0
- package/dist/types/textmode/loadables/font/MetricsCalculator.d.ts +23 -0
- package/dist/types/textmode/loadables/font/TextmodeFont.d.ts +176 -0
- package/dist/types/textmode/loadables/font/TextureAtlas.d.ts +66 -0
- package/dist/types/textmode/loadables/font/index.d.ts +8 -0
- package/dist/types/textmode/loadables/font/types.d.ts +28 -0
- package/dist/types/textmode/loadables/font/typr/Typr.d.ts +20 -0
- package/dist/types/textmode/loadables/font/typr/types.d.ts +241 -0
- package/dist/types/textmode/loadables/font/utils/CmapUtils.d.ts +11 -0
- package/dist/types/textmode/loadables/font/utils/FontTableReader.d.ts +40 -0
- package/dist/types/textmode/loadables/font/utils/index.d.ts +7 -0
- package/dist/types/textmode/loadables/index.d.ts +6 -0
- package/dist/types/textmode/loadables/video/ITextmodeVideo.d.ts +339 -0
- package/dist/types/textmode/loadables/video/TextmodeVideo.d.ts +81 -0
- package/dist/types/textmode/loading/LoadingPhase.d.ts +28 -0
- package/dist/types/textmode/loading/LoadingPhaseTracker.d.ts +20 -0
- package/dist/types/textmode/loading/LoadingScreenManager.d.ts +208 -0
- package/dist/types/textmode/loading/LoadingScreenState.d.ts +22 -0
- package/dist/types/textmode/loading/LoadingScreenTheme.d.ts +26 -0
- package/dist/types/textmode/loading/LoadingScreenTransition.d.ts +17 -0
- package/dist/types/textmode/loading/index.d.ts +7 -0
- package/dist/types/textmode/loading/templates/SpinnerTemplate.d.ts +2 -0
- package/dist/types/textmode/loading/templates/index.d.ts +1 -0
- package/dist/types/textmode/loading/types.d.ts +255 -0
- package/dist/types/textmode/managers/KeyboardManager.d.ts +128 -0
- package/dist/types/textmode/managers/MouseManager.d.ts +159 -0
- package/dist/types/textmode/managers/PluginManager.d.ts +220 -0
- package/dist/types/textmode/managers/TouchManager.d.ts +237 -0
- package/dist/types/textmode/managers/index.d.ts +12 -0
- package/dist/types/textmode/mixins/AnimationMixin.d.ts +8 -0
- package/dist/types/textmode/mixins/KeyboardMixin.d.ts +13 -0
- package/dist/types/textmode/mixins/MouseMixin.d.ts +10 -0
- package/dist/types/textmode/mixins/RenderingMixin.d.ts +8 -0
- package/dist/types/textmode/mixins/TextmodifierMixin.d.ts +19 -0
- package/dist/types/textmode/mixins/TouchMixin.d.ts +6 -0
- package/dist/types/textmode/mixins/index.d.ts +9 -0
- package/dist/types/textmode/mixins/interfaces/IAnimationMixin.d.ts +674 -0
- package/dist/types/textmode/mixins/interfaces/IKeyboardMixin.d.ts +234 -0
- package/dist/types/textmode/mixins/interfaces/IMouseMixin.d.ts +425 -0
- package/dist/types/textmode/mixins/interfaces/IRenderingMixin.d.ts +2147 -0
- package/dist/types/textmode/mixins/interfaces/ITouchMixin.d.ts +509 -0
- package/dist/types/textmode/types.d.ts +52 -0
- package/dist/types/utils/Disposable.d.ts +18 -0
- package/dist/types/utils/TextmodeCollection.d.ts +172 -0
- package/dist/types/utils/array.d.ts +34 -0
- package/dist/types/utils/color.d.ts +61 -0
- package/dist/types/utils/input.d.ts +11 -0
- package/dist/types/utils/math.d.ts +118 -0
- package/dist/types/utils/shader.d.ts +12 -0
- package/package.json +2 -2
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import type { GLRenderer, GLShader, GLFramebuffer, UniformValue } from '../../rendering';
|
|
2
|
+
import type { QueuedFilter, FilterName } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Manages filter registration, shader compilation, and filter chain application.
|
|
5
|
+
*
|
|
6
|
+
* Used both for layer-level filters and global post-processing filters.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* // Register a custom filter
|
|
11
|
+
* await t.filters.register('brightness', brightnessShader, {
|
|
12
|
+
* u_amount: ['amount', 1.0]
|
|
13
|
+
* });
|
|
14
|
+
*
|
|
15
|
+
* // Use the filter globally
|
|
16
|
+
* t.filter('brightness', 1.5);
|
|
17
|
+
*
|
|
18
|
+
* // Or on a layer
|
|
19
|
+
* t.layers.base.filter('brightness', { amount: 0.8 });
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export declare class TextmodeFilterManager {
|
|
23
|
+
private readonly _renderer;
|
|
24
|
+
private readonly _filters;
|
|
25
|
+
private readonly _shaderCache;
|
|
26
|
+
private readonly _copyShader;
|
|
27
|
+
private _pingPongBuffers;
|
|
28
|
+
private _isInitialized;
|
|
29
|
+
/**
|
|
30
|
+
* Create a new TextmodeFilterManager.
|
|
31
|
+
* @param renderer The WebGL renderer instance
|
|
32
|
+
* @ignore
|
|
33
|
+
*/
|
|
34
|
+
constructor(renderer: GLRenderer);
|
|
35
|
+
/**
|
|
36
|
+
* Register a custom filter with the given ID, shader, and uniform definitions.
|
|
37
|
+
*
|
|
38
|
+
* @param id Unique filter identifier
|
|
39
|
+
* @param shader Pre-compiled GLShader, fragment shader source string, or path to a .frag/.glsl file
|
|
40
|
+
* @param uniformDefs Maps uniform names to [paramName, defaultValue] tuples
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```ts
|
|
44
|
+
* // Register with inline shader source
|
|
45
|
+
* await t.filters.register('blur', blurFragSource, {
|
|
46
|
+
* u_radius: ['radius', 5.0],
|
|
47
|
+
* u_direction: ['direction', [1.0, 0.0]]
|
|
48
|
+
* });
|
|
49
|
+
*
|
|
50
|
+
* // Register with file path
|
|
51
|
+
* await t.filters.register('vignette', './vignette.frag', {
|
|
52
|
+
* u_intensity: ['intensity', 0.5]
|
|
53
|
+
* });
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
register(id: FilterName, shader: GLShader | string, uniformDefs?: Record<string, [paramName: string, defaultValue: UniformValue]>): Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* Unregister a filter by its ID.
|
|
59
|
+
*
|
|
60
|
+
* @param id The filter ID to unregister
|
|
61
|
+
* @returns true if the filter was unregistered, false if it wasn't found
|
|
62
|
+
*/
|
|
63
|
+
unregister(id: FilterName): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Check if a filter with the given ID is registered.
|
|
66
|
+
*
|
|
67
|
+
* @param id The filter ID to check
|
|
68
|
+
* @returns true if the filter exists
|
|
69
|
+
*/
|
|
70
|
+
has(id: FilterName): boolean;
|
|
71
|
+
/**
|
|
72
|
+
* Initialize ping-pong buffers for filter chain processing.
|
|
73
|
+
* @param width Buffer width in pixels
|
|
74
|
+
* @param height Buffer height in pixels
|
|
75
|
+
* @ignore
|
|
76
|
+
*/
|
|
77
|
+
$initialize(width: number, height: number): void;
|
|
78
|
+
/**
|
|
79
|
+
* Apply a chain of filters to the source texture, outputting to target.
|
|
80
|
+
* Uses the manager's internal ping-pong buffers.
|
|
81
|
+
*
|
|
82
|
+
* @param sourceTexture The input texture
|
|
83
|
+
* @param targetFramebuffer The output framebuffer
|
|
84
|
+
* @param filters The queue of filters to apply in order
|
|
85
|
+
* @param width Framebuffer width
|
|
86
|
+
* @param height Framebuffer height
|
|
87
|
+
* @ignore
|
|
88
|
+
*/
|
|
89
|
+
$applyFilters(sourceTexture: WebGLTexture, targetFramebuffer: GLFramebuffer, filters: QueuedFilter[], width: number, height: number): void;
|
|
90
|
+
/**
|
|
91
|
+
* Apply a chain of filters using external ping-pong buffers.
|
|
92
|
+
* This allows sharing the filter registry while using different buffer sizes
|
|
93
|
+
* (e.g., layer filters at grid dimensions vs global filters at canvas dimensions).
|
|
94
|
+
*
|
|
95
|
+
* @param sourceTexture The input texture
|
|
96
|
+
* @param targetFramebuffer The output framebuffer
|
|
97
|
+
* @param filters The queue of filters to apply in order
|
|
98
|
+
* @param width Framebuffer width
|
|
99
|
+
* @param height Framebuffer height
|
|
100
|
+
* @param pingPongBuffers External ping-pong buffers to use
|
|
101
|
+
* @ignore
|
|
102
|
+
*/
|
|
103
|
+
$applyFiltersWithBuffers(sourceTexture: WebGLTexture, targetFramebuffer: GLFramebuffer, filters: QueuedFilter[], width: number, height: number, pingPongBuffers: [GLFramebuffer, GLFramebuffer]): void;
|
|
104
|
+
/**
|
|
105
|
+
* Apply a single filter pass with explicit source buffer.
|
|
106
|
+
*/
|
|
107
|
+
private _applyFilterWithBuffer;
|
|
108
|
+
/**
|
|
109
|
+
* Get or create a cached shader for the given filter.
|
|
110
|
+
*/
|
|
111
|
+
private _getOrCreateShader;
|
|
112
|
+
/**
|
|
113
|
+
* Copy a texture to a framebuffer using the copy shader.
|
|
114
|
+
*/
|
|
115
|
+
private _copyTexture;
|
|
116
|
+
/**
|
|
117
|
+
* Resize the ping-pong buffers.
|
|
118
|
+
* @param width New width in pixels
|
|
119
|
+
* @param height New height in pixels
|
|
120
|
+
* @ignore
|
|
121
|
+
*/
|
|
122
|
+
$resize(width: number, height: number): void;
|
|
123
|
+
/**
|
|
124
|
+
* Dispose of all resources.
|
|
125
|
+
* @ignore
|
|
126
|
+
*/
|
|
127
|
+
$dispose(): void;
|
|
128
|
+
/**
|
|
129
|
+
* Register all built-in filters.
|
|
130
|
+
*/
|
|
131
|
+
private _registerBuiltInFilters;
|
|
132
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import type { GLShader } from '../../rendering';
|
|
2
|
+
import type { UniformValue } from '../../rendering/webgl/types/UniformTypes';
|
|
3
|
+
import type { GLRenderer } from '../../rendering/webgl/core/Renderer';
|
|
4
|
+
/**
|
|
5
|
+
* Built-in filter names provided by textmode.js
|
|
6
|
+
*/
|
|
7
|
+
export type BuiltInFilterName = 'invert' | 'grayscale' | 'sepia' | 'threshold';
|
|
8
|
+
/**
|
|
9
|
+
* Filter name type that allows both built-in and custom filter names
|
|
10
|
+
*/
|
|
11
|
+
export type FilterName = BuiltInFilterName | string;
|
|
12
|
+
/**
|
|
13
|
+
* Filter parameter types for built-in filters.
|
|
14
|
+
*
|
|
15
|
+
* Most filters accept either a single number (for the primary parameter)
|
|
16
|
+
* or an object with named properties.
|
|
17
|
+
*/
|
|
18
|
+
export interface BuiltInFilterParams {
|
|
19
|
+
/** Inverts all colors (no params needed) */
|
|
20
|
+
invert: void;
|
|
21
|
+
/** Converts to grayscale. Amount: 0-1, default 1 */
|
|
22
|
+
grayscale: number | {
|
|
23
|
+
amount?: number;
|
|
24
|
+
} | void;
|
|
25
|
+
/** Applies sepia tone. Amount: 0-1, default 1 */
|
|
26
|
+
sepia: number | {
|
|
27
|
+
amount?: number;
|
|
28
|
+
} | void;
|
|
29
|
+
/** Black/white threshold. Threshold: 0-1, default 0.5 */
|
|
30
|
+
threshold: number | {
|
|
31
|
+
threshold?: number;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* A queued filter operation to be applied during rendering
|
|
36
|
+
* @ignore
|
|
37
|
+
*/
|
|
38
|
+
export interface QueuedFilter<TParams = unknown> {
|
|
39
|
+
name: FilterName;
|
|
40
|
+
params: TParams;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Context provided to filter strategies for shader creation
|
|
44
|
+
* @ignore
|
|
45
|
+
*/
|
|
46
|
+
export interface FilterContext {
|
|
47
|
+
/** The WebGL renderer instance */
|
|
48
|
+
renderer: GLRenderer;
|
|
49
|
+
/** The WebGL2 rendering context */
|
|
50
|
+
gl: WebGL2RenderingContext;
|
|
51
|
+
/** Width of the framebuffer being filtered */
|
|
52
|
+
width: number;
|
|
53
|
+
/** Height of the framebuffer being filtered */
|
|
54
|
+
height: number;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Interface for implementing custom filter strategies.
|
|
58
|
+
* @ignore
|
|
59
|
+
*/
|
|
60
|
+
export interface TextmodeFilterStrategy<TParams = unknown> {
|
|
61
|
+
/** Unique identifier for this filter */
|
|
62
|
+
readonly id: FilterName;
|
|
63
|
+
/**
|
|
64
|
+
* Create the shader program for this filter.
|
|
65
|
+
* Called once when the filter is first used (lazy initialization).
|
|
66
|
+
* @param context The filter context containing renderer and dimensions
|
|
67
|
+
* @returns The compiled shader program
|
|
68
|
+
*/
|
|
69
|
+
createShader(context: FilterContext): GLShader;
|
|
70
|
+
/**
|
|
71
|
+
* Create uniform values for this filter based on user parameters.
|
|
72
|
+
* Called each time the filter is applied.
|
|
73
|
+
* @param params The parameters passed by the user (can be undefined)
|
|
74
|
+
* @param context The filter context containing dimensions
|
|
75
|
+
* @returns An object mapping uniform names to values
|
|
76
|
+
*/
|
|
77
|
+
createUniforms(params: TParams, context: FilterContext): Record<string, UniformValue>;
|
|
78
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interface for objects that require explicit resource disposal.
|
|
3
|
+
*/
|
|
4
|
+
export interface IDisposable {
|
|
5
|
+
/**
|
|
6
|
+
* Dispose of the resource and free associated WebGL resources.
|
|
7
|
+
*/
|
|
8
|
+
dispose(): void;
|
|
9
|
+
/**
|
|
10
|
+
* Register a callback to be run when this resource is disposed.
|
|
11
|
+
* @ignore
|
|
12
|
+
*/
|
|
13
|
+
$addOnDispose?(callback: () => void): void;
|
|
14
|
+
}
|