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.
Files changed (129) hide show
  1. package/dist/textmode.esm.js +965 -965
  2. package/dist/textmode.umd.js +13 -13
  3. package/dist/types/Textmode.d.ts +133 -0
  4. package/dist/types/errors/Error.d.ts +24 -0
  5. package/dist/types/errors/ErrorHandler.d.ts +77 -0
  6. package/dist/types/errors/index.d.ts +2 -0
  7. package/dist/types/exports/conversion.d.ts +1 -0
  8. package/dist/types/exports/filters.d.ts +1 -0
  9. package/dist/types/exports/input.d.ts +1 -0
  10. package/dist/types/exports/layering.d.ts +1 -0
  11. package/dist/types/exports/loadables.d.ts +1 -0
  12. package/dist/types/exports/loading.d.ts +1 -0
  13. package/dist/types/exports/plugins.d.ts +1 -0
  14. package/dist/types/index.d.ts +85 -0
  15. package/dist/types/rendering/index.d.ts +4 -0
  16. package/dist/types/rendering/webgl/batching/DrawQueue.d.ts +89 -0
  17. package/dist/types/rendering/webgl/batching/GeometryAttributeCache.d.ts +18 -0
  18. package/dist/types/rendering/webgl/batching/InstanceAttributeBinder.d.ts +83 -0
  19. package/dist/types/rendering/webgl/batching/InstanceBatch.d.ts +87 -0
  20. package/dist/types/rendering/webgl/batching/InstanceBuffer.d.ts +68 -0
  21. package/dist/types/rendering/webgl/batching/InstanceData.d.ts +56 -0
  22. package/dist/types/rendering/webgl/batching/InstanceWriter.d.ts +78 -0
  23. package/dist/types/rendering/webgl/core/Framebuffer.d.ts +94 -0
  24. package/dist/types/rendering/webgl/core/Renderer.d.ts +78 -0
  25. package/dist/types/rendering/webgl/core/Shader.d.ts +62 -0
  26. package/dist/types/rendering/webgl/core/interfaces/IFramebuffer.d.ts +101 -0
  27. package/dist/types/rendering/webgl/core/interfaces/IRenderer.d.ts +214 -0
  28. package/dist/types/rendering/webgl/geometries/2d/Arc.d.ts +17 -0
  29. package/dist/types/rendering/webgl/geometries/2d/BezierCurve.d.ts +23 -0
  30. package/dist/types/rendering/webgl/geometries/2d/Ellipse.d.ts +21 -0
  31. package/dist/types/rendering/webgl/geometries/2d/Line.d.ts +21 -0
  32. package/dist/types/rendering/webgl/geometries/2d/Rectangle.d.ts +21 -0
  33. package/dist/types/rendering/webgl/geometries/2d/Triangle.d.ts +21 -0
  34. package/dist/types/rendering/webgl/geometries/BaseGeometry.d.ts +57 -0
  35. package/dist/types/rendering/webgl/geometries/immediate/ImmediateQuad.d.ts +33 -0
  36. package/dist/types/rendering/webgl/geometries/index.d.ts +6 -0
  37. package/dist/types/rendering/webgl/geometries/utils/GeometryDescriptors.d.ts +31 -0
  38. package/dist/types/rendering/webgl/geometries/utils/GeometryGenerator.d.ts +16 -0
  39. package/dist/types/rendering/webgl/index.d.ts +19 -0
  40. package/dist/types/rendering/webgl/materials/Material.d.ts +23 -0
  41. package/dist/types/rendering/webgl/materials/MaterialManager.d.ts +56 -0
  42. package/dist/types/rendering/webgl/materials/index.d.ts +2 -0
  43. package/dist/types/rendering/webgl/pipeline/MaterialBatchPipeline.d.ts +54 -0
  44. package/dist/types/rendering/webgl/pipeline/index.d.ts +7 -0
  45. package/dist/types/rendering/webgl/state/RenderState.d.ts +159 -0
  46. package/dist/types/rendering/webgl/types/DrawCommand.d.ts +29 -0
  47. package/dist/types/rendering/webgl/types/GeometryTypes.d.ts +147 -0
  48. package/dist/types/rendering/webgl/types/RenderTypes.d.ts +18 -0
  49. package/dist/types/rendering/webgl/types/UniformTypes.d.ts +11 -0
  50. package/dist/types/rendering/webgl/utils/GLUtils.d.ts +68 -0
  51. package/dist/types/rendering/webgl/utils/ViewportCache.d.ts +3 -0
  52. package/dist/types/rendering/webgl/utils/hash.d.ts +102 -0
  53. package/dist/types/textmode/AnimationController.d.ts +110 -0
  54. package/dist/types/textmode/Canvas.d.ts +58 -0
  55. package/dist/types/textmode/Grid.d.ts +563 -0
  56. package/dist/types/textmode/TextmodeColor.d.ts +405 -0
  57. package/dist/types/textmode/Textmodifier.d.ts +113 -0
  58. package/dist/types/textmode/conversion/ConversionManager.d.ts +89 -0
  59. package/dist/types/textmode/conversion/ConversionRegistry.d.ts +78 -0
  60. package/dist/types/textmode/conversion/index.d.ts +2 -0
  61. package/dist/types/textmode/conversion/strategies/brightness.d.ts +2 -0
  62. package/dist/types/textmode/filters/FilterManager.d.ts +132 -0
  63. package/dist/types/textmode/filters/index.d.ts +2 -0
  64. package/dist/types/textmode/filters/types.d.ts +78 -0
  65. package/dist/types/textmode/interfaces/IDisposable.d.ts +14 -0
  66. package/dist/types/textmode/interfaces/ITextmodifier.d.ts +753 -0
  67. package/dist/types/textmode/interfaces/index.d.ts +2 -0
  68. package/dist/types/textmode/layers/Layer2DCompositor.d.ts +89 -0
  69. package/dist/types/textmode/layers/LayerManager.d.ts +115 -0
  70. package/dist/types/textmode/layers/TextmodeLayer.d.ts +105 -0
  71. package/dist/types/textmode/layers/index.d.ts +4 -0
  72. package/dist/types/textmode/layers/interfaces/ILayerManager.d.ts +158 -0
  73. package/dist/types/textmode/layers/interfaces/ITextmodeLayer.d.ts +821 -0
  74. package/dist/types/textmode/layers/types.d.ts +78 -0
  75. package/dist/types/textmode/loadables/ITextmodeSource.d.ts +541 -0
  76. package/dist/types/textmode/loadables/TextmodeImage.d.ts +45 -0
  77. package/dist/types/textmode/loadables/TextmodeSource.d.ts +65 -0
  78. package/dist/types/textmode/loadables/TextmodeTexture.d.ts +95 -0
  79. package/dist/types/textmode/loadables/font/CharacterColorMapper.d.ts +34 -0
  80. package/dist/types/textmode/loadables/font/CharacterExtractor.d.ts +22 -0
  81. package/dist/types/textmode/loadables/font/MetricsCalculator.d.ts +23 -0
  82. package/dist/types/textmode/loadables/font/TextmodeFont.d.ts +176 -0
  83. package/dist/types/textmode/loadables/font/TextureAtlas.d.ts +66 -0
  84. package/dist/types/textmode/loadables/font/index.d.ts +8 -0
  85. package/dist/types/textmode/loadables/font/types.d.ts +28 -0
  86. package/dist/types/textmode/loadables/font/typr/Typr.d.ts +20 -0
  87. package/dist/types/textmode/loadables/font/typr/types.d.ts +241 -0
  88. package/dist/types/textmode/loadables/font/utils/CmapUtils.d.ts +11 -0
  89. package/dist/types/textmode/loadables/font/utils/FontTableReader.d.ts +40 -0
  90. package/dist/types/textmode/loadables/font/utils/index.d.ts +7 -0
  91. package/dist/types/textmode/loadables/index.d.ts +6 -0
  92. package/dist/types/textmode/loadables/video/ITextmodeVideo.d.ts +339 -0
  93. package/dist/types/textmode/loadables/video/TextmodeVideo.d.ts +81 -0
  94. package/dist/types/textmode/loading/LoadingPhase.d.ts +28 -0
  95. package/dist/types/textmode/loading/LoadingPhaseTracker.d.ts +20 -0
  96. package/dist/types/textmode/loading/LoadingScreenManager.d.ts +208 -0
  97. package/dist/types/textmode/loading/LoadingScreenState.d.ts +22 -0
  98. package/dist/types/textmode/loading/LoadingScreenTheme.d.ts +26 -0
  99. package/dist/types/textmode/loading/LoadingScreenTransition.d.ts +17 -0
  100. package/dist/types/textmode/loading/index.d.ts +7 -0
  101. package/dist/types/textmode/loading/templates/SpinnerTemplate.d.ts +2 -0
  102. package/dist/types/textmode/loading/templates/index.d.ts +1 -0
  103. package/dist/types/textmode/loading/types.d.ts +255 -0
  104. package/dist/types/textmode/managers/KeyboardManager.d.ts +128 -0
  105. package/dist/types/textmode/managers/MouseManager.d.ts +159 -0
  106. package/dist/types/textmode/managers/PluginManager.d.ts +220 -0
  107. package/dist/types/textmode/managers/TouchManager.d.ts +237 -0
  108. package/dist/types/textmode/managers/index.d.ts +12 -0
  109. package/dist/types/textmode/mixins/AnimationMixin.d.ts +8 -0
  110. package/dist/types/textmode/mixins/KeyboardMixin.d.ts +13 -0
  111. package/dist/types/textmode/mixins/MouseMixin.d.ts +10 -0
  112. package/dist/types/textmode/mixins/RenderingMixin.d.ts +8 -0
  113. package/dist/types/textmode/mixins/TextmodifierMixin.d.ts +19 -0
  114. package/dist/types/textmode/mixins/TouchMixin.d.ts +6 -0
  115. package/dist/types/textmode/mixins/index.d.ts +9 -0
  116. package/dist/types/textmode/mixins/interfaces/IAnimationMixin.d.ts +674 -0
  117. package/dist/types/textmode/mixins/interfaces/IKeyboardMixin.d.ts +234 -0
  118. package/dist/types/textmode/mixins/interfaces/IMouseMixin.d.ts +425 -0
  119. package/dist/types/textmode/mixins/interfaces/IRenderingMixin.d.ts +2147 -0
  120. package/dist/types/textmode/mixins/interfaces/ITouchMixin.d.ts +509 -0
  121. package/dist/types/textmode/types.d.ts +52 -0
  122. package/dist/types/utils/Disposable.d.ts +18 -0
  123. package/dist/types/utils/TextmodeCollection.d.ts +172 -0
  124. package/dist/types/utils/array.d.ts +34 -0
  125. package/dist/types/utils/color.d.ts +61 -0
  126. package/dist/types/utils/input.d.ts +11 -0
  127. package/dist/types/utils/math.d.ts +118 -0
  128. package/dist/types/utils/shader.d.ts +12 -0
  129. 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,2 @@
1
+ export type { FilterName, BuiltInFilterName, BuiltInFilterParams, QueuedFilter, FilterContext, TextmodeFilterStrategy, } from './types';
2
+ export { TextmodeFilterManager } from './FilterManager';
@@ -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
+ }