textmode.js 0.4.0 → 0.6.0-beta.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 (105) hide show
  1. package/dist/textmode.esm.js +2868 -2164
  2. package/dist/textmode.esm.min.js +2863 -2159
  3. package/dist/textmode.umd.js +11 -8
  4. package/dist/textmode.umd.min.js +11 -8
  5. package/dist/types/Textmode.d.ts +13 -22
  6. package/dist/types/index.d.ts +8 -6
  7. package/dist/types/rendering/index.d.ts +3 -3
  8. package/dist/types/rendering/webgl/batching/DrawQueue.d.ts +89 -0
  9. package/dist/types/rendering/webgl/{VAOManager.d.ts → batching/GeometryAttributeCache.d.ts} +4 -4
  10. package/dist/types/rendering/webgl/batching/InstanceAttributeBinder.d.ts +87 -0
  11. package/dist/types/rendering/webgl/{InstanceBatch.d.ts → batching/InstanceBatch.d.ts} +25 -34
  12. package/dist/types/rendering/webgl/batching/InstanceBuffer.d.ts +78 -0
  13. package/dist/types/rendering/webgl/{InstanceData.d.ts → batching/InstanceData.d.ts} +11 -18
  14. package/dist/types/rendering/webgl/batching/InstanceWriter.d.ts +70 -0
  15. package/dist/types/rendering/webgl/{Framebuffer.d.ts → core/Framebuffer.d.ts} +37 -39
  16. package/dist/types/rendering/webgl/core/Renderer.d.ts +64 -0
  17. package/dist/types/rendering/webgl/{Shader.d.ts → core/Shader.d.ts} +2 -23
  18. package/dist/types/rendering/webgl/core/interfaces/IFramebuffer.d.ts +103 -0
  19. package/dist/types/rendering/webgl/core/interfaces/IRenderer.d.ts +210 -0
  20. package/dist/types/rendering/webgl/geometries/{Arc.d.ts → 2d/Arc.d.ts} +5 -4
  21. package/dist/types/rendering/webgl/geometries/{BezierCurve.d.ts → 2d/BezierCurve.d.ts} +5 -4
  22. package/dist/types/rendering/webgl/geometries/{Ellipse.d.ts → 2d/Ellipse.d.ts} +6 -5
  23. package/dist/types/rendering/webgl/geometries/{Line.d.ts → 2d/Line.d.ts} +5 -4
  24. package/dist/types/rendering/webgl/geometries/{Rectangle.d.ts → 2d/Rectangle.d.ts} +5 -4
  25. package/dist/types/rendering/webgl/geometries/{Triangle.d.ts → 2d/Triangle.d.ts} +5 -4
  26. package/dist/types/rendering/webgl/geometries/BaseGeometry.d.ts +30 -26
  27. package/dist/types/rendering/webgl/geometries/immediate/ImmediateQuad.d.ts +33 -0
  28. package/dist/types/rendering/webgl/geometries/index.d.ts +6 -6
  29. package/dist/types/rendering/webgl/geometries/utils/GeometryDescriptors.d.ts +31 -0
  30. package/dist/types/rendering/webgl/geometries/utils/GeometryGenerator.d.ts +16 -0
  31. package/dist/types/rendering/webgl/index.d.ts +15 -14
  32. package/dist/types/rendering/webgl/materials/Material.d.ts +26 -0
  33. package/dist/types/rendering/webgl/materials/MaterialManager.d.ts +63 -0
  34. package/dist/types/rendering/webgl/materials/index.d.ts +2 -0
  35. package/dist/types/rendering/webgl/pipeline/MaterialBatchPipeline.d.ts +63 -0
  36. package/dist/types/rendering/webgl/pipeline/index.d.ts +7 -0
  37. package/dist/types/rendering/webgl/state/RenderState.d.ts +143 -0
  38. package/dist/types/rendering/webgl/types/DrawCommand.d.ts +5 -3
  39. package/dist/types/rendering/webgl/types/GeometryTypes.d.ts +10 -10
  40. package/dist/types/rendering/webgl/types/RenderTypes.d.ts +1 -1
  41. package/dist/types/rendering/webgl/utils/GLUtils.d.ts +45 -0
  42. package/dist/types/rendering/webgl/utils/hash.d.ts +118 -0
  43. package/dist/types/textmode/AnimationController.d.ts +11 -21
  44. package/dist/types/textmode/Canvas.d.ts +10 -2
  45. package/dist/types/textmode/Grid.d.ts +2 -0
  46. package/dist/types/textmode/TextmodeColor.d.ts +57 -0
  47. package/dist/types/textmode/Textmodifier.d.ts +40 -212
  48. package/dist/types/textmode/interfaces/ITextmodifier.d.ts +272 -0
  49. package/dist/types/textmode/interfaces/index.d.ts +1 -0
  50. package/dist/types/textmode/loadables/TextmodeImage.d.ts +21 -0
  51. package/dist/types/textmode/loadables/TextmodeSource.d.ts +130 -0
  52. package/dist/types/textmode/loadables/TextmodeVideo.d.ts +237 -0
  53. package/dist/types/textmode/{font → loadables/font}/CharacterColorMapper.d.ts +1 -1
  54. package/dist/types/textmode/{font → loadables/font}/CharacterExtractor.d.ts +0 -10
  55. package/dist/types/textmode/{font → loadables/font}/TextmodeFont.d.ts +6 -3
  56. package/dist/types/textmode/{font → loadables/font}/TextureAtlas.d.ts +4 -11
  57. package/dist/types/textmode/{font → loadables/font}/typr/types.d.ts +0 -6
  58. package/dist/types/textmode/loadables/index.d.ts +5 -0
  59. package/dist/types/textmode/loading/LoadingPhaseTracker.d.ts +20 -0
  60. package/dist/types/textmode/loading/LoadingScreenManager.d.ts +170 -0
  61. package/dist/types/textmode/loading/LoadingScreenState.d.ts +22 -0
  62. package/dist/types/textmode/loading/LoadingScreenTheme.d.ts +26 -0
  63. package/dist/types/textmode/loading/LoadingScreenTransition.d.ts +17 -0
  64. package/dist/types/textmode/loading/index.d.ts +6 -0
  65. package/dist/types/textmode/loading/templates/SpinnerTemplate.d.ts +2 -0
  66. package/dist/types/textmode/loading/templates/index.d.ts +1 -0
  67. package/dist/types/textmode/loading/types.d.ts +251 -0
  68. package/dist/types/textmode/managers/KeyboardManager.d.ts +2 -3
  69. package/dist/types/textmode/managers/MouseManager.d.ts +1 -1
  70. package/dist/types/textmode/{plugins → managers}/PluginManager.d.ts +12 -15
  71. package/dist/types/textmode/managers/TouchManager.d.ts +0 -2
  72. package/dist/types/textmode/mixins/AnimationMixin.d.ts +2 -122
  73. package/dist/types/textmode/mixins/FontMixin.d.ts +2 -77
  74. package/dist/types/textmode/mixins/KeyboardMixin.d.ts +3 -85
  75. package/dist/types/textmode/mixins/MouseMixin.d.ts +3 -130
  76. package/dist/types/textmode/mixins/RenderingMixin.d.ts +2 -749
  77. package/dist/types/textmode/mixins/TextmodifierMixin.d.ts +2 -44
  78. package/dist/types/textmode/mixins/TouchMixin.d.ts +2 -187
  79. package/dist/types/textmode/mixins/index.d.ts +8 -8
  80. package/dist/types/textmode/mixins/interfaces/IAnimationMixin.d.ts +167 -0
  81. package/dist/types/textmode/mixins/interfaces/IFontMixin.d.ts +46 -0
  82. package/dist/types/textmode/mixins/interfaces/IKeyboardMixin.d.ts +235 -0
  83. package/dist/types/textmode/mixins/interfaces/IMouseMixin.d.ts +457 -0
  84. package/dist/types/textmode/mixins/interfaces/IRenderingMixin.d.ts +1085 -0
  85. package/dist/types/textmode/mixins/interfaces/ITouchMixin.d.ts +186 -0
  86. package/dist/types/textmode/types.d.ts +49 -0
  87. package/dist/types/textmode/utils/cssColor.d.ts +8 -0
  88. package/dist/types/utils/array.d.ts +34 -0
  89. package/dist/types/utils/math.d.ts +69 -0
  90. package/package.json +1 -1
  91. package/dist/types/rendering/webgl/DrawQueue.d.ts +0 -30
  92. package/dist/types/rendering/webgl/RenderPipeline.d.ts +0 -30
  93. package/dist/types/rendering/webgl/RenderState.d.ts +0 -73
  94. package/dist/types/rendering/webgl/Renderer.d.ts +0 -158
  95. package/dist/types/rendering/webgl/ShaderManager.d.ts +0 -66
  96. package/dist/types/rendering/webgl/geometries/NoiseGrid.d.ts +0 -1
  97. package/dist/types/textmode/TextmodeImage.d.ts +0 -161
  98. package/dist/types/textmode/mixins/ShaderMixin.d.ts +0 -1
  99. /package/dist/types/rendering/webgl/{StateCache.d.ts → utils/ViewportCache.d.ts} +0 -0
  100. /package/dist/types/textmode/{font → loadables/font}/MetricsCalculator.d.ts +0 -0
  101. /package/dist/types/textmode/{font → loadables/font}/index.d.ts +0 -0
  102. /package/dist/types/textmode/{font → loadables/font}/types.d.ts +0 -0
  103. /package/dist/types/textmode/{font → loadables/font}/typr/Typr.d.ts +0 -0
  104. /package/dist/types/textmode/{font → loadables/font}/utils/FontTableReader.d.ts +0 -0
  105. /package/dist/types/textmode/{font → loadables/font}/utils/index.d.ts +0 -0
@@ -1,66 +0,0 @@
1
- import { GLShader } from './Shader';
2
- /**
3
- * Registry keys for built-in shaders
4
- */
5
- export declare enum BuiltInShader {
6
- MRT_DRAW = "mrt-draw",
7
- MRT_COPY = "mrt-copy",
8
- ASCII_CONVERSION = "ascii-conversion",
9
- IMAGE_TO_MRT = "image-to-mrt"
10
- }
11
- /**
12
- * Centralized shader management system for textmode.js
13
- *
14
- * Provides a registry pattern for managing shared shaders, eliminating
15
- * duplication and providing a single source of truth for shader lifecycle.
16
- *
17
- * Key benefits:
18
- * - Eliminates shader duplication (especially copy shader)
19
- * - Centralizes vertex shader imports
20
- * - Provides lazy initialization
21
- * - Supports future extensibility (shader variants, hot-reloading)
22
- * - Consistent resource management
23
- */
24
- export declare class ShaderManager {
25
- private _gl;
26
- private _copyShader;
27
- private _mainDrawShader;
28
- private _conversionShader;
29
- private _imageToMRTShader;
30
- constructor(gl: WebGL2RenderingContext);
31
- /**
32
- * Get the shared MRT copy shader used for framebuffer compositing
33
- * This shader handles copying 5-attachment MRT data with proper transparency
34
- */
35
- $getCopyShader(): GLShader;
36
- /**
37
- * Get the main MRT draw shader used for standard geometry rendering
38
- * This shader outputs to all 5 MRT attachments for textmode rendering
39
- */
40
- $getMainDrawShader(): GLShader;
41
- /**
42
- * Get the ASCII conversion shader used for final display output
43
- * This shader converts MRT data to final ASCII characters
44
- */
45
- $getConversionShader(): GLShader;
46
- /**
47
- * Get the shader that converts a single RGBA texture into MRT attachments.
48
- * It writes brightness into o_character and grayscale into o_primaryColor.
49
- */
50
- $getImageToMRTShader(): GLShader;
51
- /**
52
- * Create a custom filter shader using the standard instanced vertex shader
53
- * These shaders are not cached as they are user-specific
54
- */
55
- $createFilterShader(fragmentSource: string): GLShader;
56
- /**
57
- * Create a custom shader with arbitrary vertex and fragment sources
58
- * These shaders are not cached as they are user-specific
59
- */
60
- $createShader(vertexSource: string, fragmentSource: string): GLShader;
61
- /**
62
- * Dispose of all managed shaders and clear the registry
63
- * This method is idempotent and safe to call multiple times
64
- */
65
- $dispose(): void;
66
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,161 +0,0 @@
1
- import type { GLRenderer } from '../rendering/webgl/Renderer';
2
- /**
3
- * Consolidated render data for TextmodeImage
4
- */
5
- export interface TextmodeImageRenderData {
6
- texture: WebGLTexture;
7
- invert: number;
8
- flipX: number;
9
- flipY: number;
10
- charRotation: [number, number];
11
- charColorFixed: boolean;
12
- charColor: [number, number, number, number];
13
- cellColorFixed: boolean;
14
- cellColor: [number, number, number, number];
15
- backgroundColor: [number, number, number, number];
16
- charCount: number;
17
- charList: number[][];
18
- }
19
- /**
20
- * Represents an image uploaded for textmode rendering via {@link Textmodifier.loadImage}.
21
- *
22
- * It can be drawn to the canvas via {@link Textmodifier.image}.
23
- *
24
- * An image uploaded currently runs through an adjustable brightness-converter that converts
25
- * the original image into a textmode representation using characters.
26
- * Those adjustable options are available via chainable methods on this class.
27
- */
28
- export declare class TextmodeImage {
29
- /**
30
- * Underlying WebGL texture handle.
31
- */
32
- private _texture;
33
- /** Original pixel dimensions of the source image. */
34
- private _width;
35
- private _height;
36
- private _gl;
37
- private _invert;
38
- private _flipX;
39
- private _flipY;
40
- private _charRotation;
41
- private _charColorMode;
42
- private _cellColorMode;
43
- private _charColor;
44
- private _cellColor;
45
- private _backgroundColor;
46
- private _glyphColors;
47
- private _glyphColorResolver;
48
- /**
49
- * Create a new TextmodeImage instance.
50
- * @param gl WebGL2 rendering context
51
- * @param texture WebGL texture containing the image
52
- * @param width Original image width in pixels
53
- * @param height Original image height in pixels
54
- *
55
- * @ignore
56
- */
57
- constructor(gl: WebGL2RenderingContext, texture: WebGLTexture, width: number, height: number);
58
- /**
59
- * Dispose of GPU resources.
60
- * @ignore
61
- */
62
- $dispose(): void;
63
- /** Normalize boolean | number to 0/1 */
64
- private _to01;
65
- /**
66
- * Set the invert flag.
67
- *
68
- * Setting this flag to `true` will swap the character and cell colors when rendering the image.
69
- *
70
- * @param v Flag value
71
- * @returns This instance for chaining.
72
- */
73
- invert(v?: boolean | number): this;
74
- /**
75
- * Set horizontal flip indicator flag.
76
- * @param v Flag value
77
- * @returns This instance for chaining.
78
- */
79
- flipX(v?: boolean | number): this;
80
- /**
81
- * Set vertical flip indicator flag.
82
- * @param v Flag value
83
- * @returns This instance for chaining.
84
- */
85
- flipY(v?: boolean | number): this;
86
- /**
87
- * Set the character rotation in degrees.
88
- * @param degrees Rotation in degrees *(0-360)*
89
- * @returns This instance for chaining.
90
- */
91
- charRotation(degrees: number): this;
92
- /**
93
- * Get all render data needed by the GLRenderer.
94
- * @ignore
95
- */
96
- $getRenderData(): TextmodeImageRenderData;
97
- /**
98
- * Set character color mode: `'sampled'` *(from image)* or `'fixed'` *(use {@link charColor})*.
99
- * @param mode
100
- * @returns
101
- */
102
- charColorMode(mode: 'sampled' | 'fixed'): this;
103
- /**
104
- * Set the cell color mode: `'sampled'` *(from image)* or `'fixed'` *(use {@link cellColor})*.
105
- * @param mode
106
- * @returns
107
- */
108
- cellColorMode(mode: 'sampled' | 'fixed'): this;
109
- /**
110
- * Defines the character color used when {@link charColorMode} is `'fixed'`.
111
- * @param r Red channel (0-255)
112
- * @param g Green channel (0-255)
113
- * @param b Blue channel (0-255)
114
- * @returns This instance for chaining.
115
- */
116
- charColor(r: number, g?: number, b?: number, a?: number): this;
117
- /**
118
- * Defines the cell color used when {@link cellColorMode} is `'fixed'`.
119
- * @param r Red channel (0-255)
120
- * @param g Green channel (0-255)
121
- * @param b Blue channel (0-255)
122
- * @returns This instance for chaining.
123
- */
124
- cellColor(r: number, g?: number, b?: number, a?: number): this;
125
- /**
126
- * Set background color for transparent pixels.
127
- * @param r Red channel (0-255)
128
- * @param g Green channel (0-255)
129
- * @param b Blue channel (0-255)
130
- * @param a Alpha channel (0-255)
131
- * @returns This instance for chaining.
132
- */
133
- background(r: number, g?: number, b?: number, a?: number): this;
134
- /**
135
- * Define the characters to use for brightness mapping as a string.
136
- *
137
- * The maximum number of characters for brightness mapping currently is `64`; excess characters are ignored.
138
- *
139
- * @param chars
140
- * @returns
141
- */
142
- characters(chars: string): this;
143
- /**
144
- * Create a TextmodeImage from an HTML image/video/canvas element.
145
- * Texture parameters use NEAREST and CLAMP to align with grid sampling.
146
- * @ignore
147
- */
148
- static $fromSource(renderer: GLRenderer, source: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement, glyphResolver: (s: string) => ([number, number, number])[]): TextmodeImage;
149
- /**
150
- * WebGL texture handle containing the original source image.
151
- */
152
- get texture(): WebGLTexture;
153
- /**
154
- * Original pixel width of the source image.
155
- */
156
- get width(): number;
157
- /**
158
- * Original pixel height of the source image.
159
- */
160
- get height(): number;
161
- }
@@ -1 +0,0 @@
1
- export {};