apexify.js 4.9.26 → 4.9.27
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/README.md +358 -47
- package/dist/cjs/Canvas/ApexPainter.d.ts +122 -78
- package/dist/cjs/Canvas/ApexPainter.d.ts.map +1 -1
- package/dist/cjs/Canvas/ApexPainter.js +461 -352
- package/dist/cjs/Canvas/ApexPainter.js.map +1 -1
- package/dist/cjs/Canvas/utils/Background/bg.d.ts +23 -11
- package/dist/cjs/Canvas/utils/Background/bg.d.ts.map +1 -1
- package/dist/cjs/Canvas/utils/Background/bg.js +174 -107
- package/dist/cjs/Canvas/utils/Background/bg.js.map +1 -1
- package/dist/cjs/Canvas/utils/Custom/customLines.js +2 -2
- package/dist/cjs/Canvas/utils/Custom/customLines.js.map +1 -1
- package/dist/cjs/Canvas/utils/Image/imageFilters.d.ts +11 -0
- package/dist/cjs/Canvas/utils/Image/imageFilters.d.ts.map +1 -0
- package/dist/cjs/Canvas/utils/Image/imageFilters.js +307 -0
- package/dist/cjs/Canvas/utils/Image/imageFilters.js.map +1 -0
- package/dist/cjs/Canvas/utils/Image/imageProperties.d.ts +47 -112
- package/dist/cjs/Canvas/utils/Image/imageProperties.d.ts.map +1 -1
- package/dist/cjs/Canvas/utils/Image/imageProperties.js +229 -560
- package/dist/cjs/Canvas/utils/Image/imageProperties.js.map +1 -1
- package/dist/cjs/Canvas/utils/Image/professionalImageFilters.d.ts +11 -0
- package/dist/cjs/Canvas/utils/Image/professionalImageFilters.d.ts.map +1 -0
- package/dist/cjs/Canvas/utils/Image/professionalImageFilters.js +351 -0
- package/dist/cjs/Canvas/utils/Image/professionalImageFilters.js.map +1 -0
- package/dist/cjs/Canvas/utils/Image/simpleProfessionalFilters.d.ts +11 -0
- package/dist/cjs/Canvas/utils/Image/simpleProfessionalFilters.d.ts.map +1 -0
- package/dist/cjs/Canvas/utils/Image/simpleProfessionalFilters.js +215 -0
- package/dist/cjs/Canvas/utils/Image/simpleProfessionalFilters.js.map +1 -0
- package/dist/cjs/Canvas/utils/Patterns/enhancedPatternRenderer.d.ts +71 -0
- package/dist/cjs/Canvas/utils/Patterns/enhancedPatternRenderer.d.ts.map +1 -0
- package/dist/cjs/Canvas/utils/Patterns/enhancedPatternRenderer.js +392 -0
- package/dist/cjs/Canvas/utils/Patterns/enhancedPatternRenderer.js.map +1 -0
- package/dist/cjs/Canvas/utils/Shapes/shapes.d.ts +29 -0
- package/dist/cjs/Canvas/utils/Shapes/shapes.d.ts.map +1 -0
- package/dist/cjs/Canvas/utils/Shapes/shapes.js +334 -0
- package/dist/cjs/Canvas/utils/Shapes/shapes.js.map +1 -0
- package/dist/cjs/Canvas/utils/Texts/enhancedTextRenderer.d.ts +127 -0
- package/dist/cjs/Canvas/utils/Texts/enhancedTextRenderer.d.ts.map +1 -0
- package/dist/cjs/Canvas/utils/Texts/enhancedTextRenderer.js +365 -0
- package/dist/cjs/Canvas/utils/Texts/enhancedTextRenderer.js.map +1 -0
- package/dist/cjs/Canvas/utils/types.d.ts +227 -131
- package/dist/cjs/Canvas/utils/types.d.ts.map +1 -1
- package/dist/cjs/Canvas/utils/types.js +0 -1
- package/dist/cjs/Canvas/utils/types.js.map +1 -1
- package/dist/cjs/Canvas/utils/utils.d.ts +7 -4
- package/dist/cjs/Canvas/utils/utils.d.ts.map +1 -1
- package/dist/cjs/Canvas/utils/utils.js +17 -7
- package/dist/cjs/Canvas/utils/utils.js.map +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/Canvas/ApexPainter.d.ts +122 -78
- package/dist/esm/Canvas/ApexPainter.d.ts.map +1 -1
- package/dist/esm/Canvas/ApexPainter.js +461 -352
- package/dist/esm/Canvas/ApexPainter.js.map +1 -1
- package/dist/esm/Canvas/utils/Background/bg.d.ts +23 -11
- package/dist/esm/Canvas/utils/Background/bg.d.ts.map +1 -1
- package/dist/esm/Canvas/utils/Background/bg.js +174 -107
- package/dist/esm/Canvas/utils/Background/bg.js.map +1 -1
- package/dist/esm/Canvas/utils/Custom/customLines.js +2 -2
- package/dist/esm/Canvas/utils/Custom/customLines.js.map +1 -1
- package/dist/esm/Canvas/utils/Image/imageFilters.d.ts +11 -0
- package/dist/esm/Canvas/utils/Image/imageFilters.d.ts.map +1 -0
- package/dist/esm/Canvas/utils/Image/imageFilters.js +307 -0
- package/dist/esm/Canvas/utils/Image/imageFilters.js.map +1 -0
- package/dist/esm/Canvas/utils/Image/imageProperties.d.ts +47 -112
- package/dist/esm/Canvas/utils/Image/imageProperties.d.ts.map +1 -1
- package/dist/esm/Canvas/utils/Image/imageProperties.js +229 -560
- package/dist/esm/Canvas/utils/Image/imageProperties.js.map +1 -1
- package/dist/esm/Canvas/utils/Image/professionalImageFilters.d.ts +11 -0
- package/dist/esm/Canvas/utils/Image/professionalImageFilters.d.ts.map +1 -0
- package/dist/esm/Canvas/utils/Image/professionalImageFilters.js +351 -0
- package/dist/esm/Canvas/utils/Image/professionalImageFilters.js.map +1 -0
- package/dist/esm/Canvas/utils/Image/simpleProfessionalFilters.d.ts +11 -0
- package/dist/esm/Canvas/utils/Image/simpleProfessionalFilters.d.ts.map +1 -0
- package/dist/esm/Canvas/utils/Image/simpleProfessionalFilters.js +215 -0
- package/dist/esm/Canvas/utils/Image/simpleProfessionalFilters.js.map +1 -0
- package/dist/esm/Canvas/utils/Patterns/enhancedPatternRenderer.d.ts +71 -0
- package/dist/esm/Canvas/utils/Patterns/enhancedPatternRenderer.d.ts.map +1 -0
- package/dist/esm/Canvas/utils/Patterns/enhancedPatternRenderer.js +392 -0
- package/dist/esm/Canvas/utils/Patterns/enhancedPatternRenderer.js.map +1 -0
- package/dist/esm/Canvas/utils/Shapes/shapes.d.ts +29 -0
- package/dist/esm/Canvas/utils/Shapes/shapes.d.ts.map +1 -0
- package/dist/esm/Canvas/utils/Shapes/shapes.js +334 -0
- package/dist/esm/Canvas/utils/Shapes/shapes.js.map +1 -0
- package/dist/esm/Canvas/utils/Texts/enhancedTextRenderer.d.ts +127 -0
- package/dist/esm/Canvas/utils/Texts/enhancedTextRenderer.d.ts.map +1 -0
- package/dist/esm/Canvas/utils/Texts/enhancedTextRenderer.js +365 -0
- package/dist/esm/Canvas/utils/Texts/enhancedTextRenderer.js.map +1 -0
- package/dist/esm/Canvas/utils/types.d.ts +227 -131
- package/dist/esm/Canvas/utils/types.d.ts.map +1 -1
- package/dist/esm/Canvas/utils/types.js +0 -1
- package/dist/esm/Canvas/utils/types.js.map +1 -1
- package/dist/esm/Canvas/utils/utils.d.ts +7 -4
- package/dist/esm/Canvas/utils/utils.d.ts.map +1 -1
- package/dist/esm/Canvas/utils/utils.js +17 -7
- package/dist/esm/Canvas/utils/utils.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/lib/Canvas/ApexPainter.ts +1325 -1218
- package/lib/Canvas/utils/Background/bg.ts +247 -173
- package/lib/Canvas/utils/Custom/customLines.ts +3 -3
- package/lib/Canvas/utils/Image/imageFilters.ts +356 -0
- package/lib/Canvas/utils/Image/imageProperties.ts +322 -775
- package/lib/Canvas/utils/Image/professionalImageFilters.ts +391 -0
- package/lib/Canvas/utils/Image/simpleProfessionalFilters.ts +229 -0
- package/lib/Canvas/utils/Patterns/enhancedPatternRenderer.ts +444 -0
- package/lib/Canvas/utils/Shapes/shapes.ts +528 -0
- package/lib/Canvas/utils/Texts/enhancedTextRenderer.ts +478 -0
- package/lib/Canvas/utils/types.ts +301 -117
- package/lib/Canvas/utils/utils.ts +85 -72
- package/package.json +106 -188
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.EnhancedTextRenderer = void 0;
|
|
7
|
+
const canvas_1 = require("@napi-rs/canvas");
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
/**
|
|
10
|
+
* Enhanced text renderer with comprehensive styling options
|
|
11
|
+
*/
|
|
12
|
+
class EnhancedTextRenderer {
|
|
13
|
+
/**
|
|
14
|
+
* Renders text with all enhanced features
|
|
15
|
+
* @param ctx - Canvas 2D context
|
|
16
|
+
* @param textProps - Text properties configuration
|
|
17
|
+
*/
|
|
18
|
+
static async renderText(ctx, textProps) {
|
|
19
|
+
ctx.save();
|
|
20
|
+
try {
|
|
21
|
+
// 1. Register custom font if provided
|
|
22
|
+
if (textProps.fontPath) {
|
|
23
|
+
await this.registerCustomFont(textProps.fontPath, textProps.fontName || 'customFont');
|
|
24
|
+
}
|
|
25
|
+
// 2. Apply transformations
|
|
26
|
+
this.applyTransformations(ctx, textProps);
|
|
27
|
+
// 3. Setup font and spacing
|
|
28
|
+
this.setupFont(ctx, textProps);
|
|
29
|
+
// 4. Apply text alignment
|
|
30
|
+
this.setupAlignment(ctx, textProps);
|
|
31
|
+
// 5. Handle text wrapping or single line rendering
|
|
32
|
+
if (textProps.maxWidth) {
|
|
33
|
+
await this.renderWrappedText(ctx, textProps);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
await this.renderSingleLine(ctx, textProps);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
finally {
|
|
40
|
+
ctx.restore();
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Registers a custom font from file path
|
|
45
|
+
* @param fontPath - Path to font file
|
|
46
|
+
* @param fontName - Name to register the font as
|
|
47
|
+
*/
|
|
48
|
+
static async registerCustomFont(fontPath, fontName) {
|
|
49
|
+
try {
|
|
50
|
+
const fullPath = path_1.default.join(process.cwd(), fontPath);
|
|
51
|
+
canvas_1.GlobalFonts.registerFromPath(fullPath, fontName);
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
console.warn(`Failed to register font from path: ${fontPath}`, error);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Applies transformations (rotation, opacity)
|
|
59
|
+
* @param ctx - Canvas 2D context
|
|
60
|
+
* @param textProps - Text properties
|
|
61
|
+
*/
|
|
62
|
+
static applyTransformations(ctx, textProps) {
|
|
63
|
+
// Apply rotation
|
|
64
|
+
if (textProps.rotation && textProps.rotation !== 0) {
|
|
65
|
+
ctx.translate(textProps.x, textProps.y);
|
|
66
|
+
ctx.rotate((textProps.rotation * Math.PI) / 180);
|
|
67
|
+
ctx.translate(-textProps.x, -textProps.y);
|
|
68
|
+
}
|
|
69
|
+
// Apply global opacity
|
|
70
|
+
if (textProps.opacity !== undefined) {
|
|
71
|
+
ctx.globalAlpha = Math.max(0, Math.min(1, textProps.opacity));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Sets up font properties and spacing
|
|
76
|
+
* @param ctx - Canvas 2D context
|
|
77
|
+
* @param textProps - Text properties
|
|
78
|
+
*/
|
|
79
|
+
static setupFont(ctx, textProps) {
|
|
80
|
+
const fontSize = textProps.fontSize || 16;
|
|
81
|
+
const fontFamily = textProps.fontName || textProps.fontFamily || 'Arial';
|
|
82
|
+
// Build font string with decorations
|
|
83
|
+
let fontString = '';
|
|
84
|
+
if (textProps.bold)
|
|
85
|
+
fontString += 'bold ';
|
|
86
|
+
if (textProps.italic)
|
|
87
|
+
fontString += 'italic ';
|
|
88
|
+
fontString += `${fontSize}px "${fontFamily}"`;
|
|
89
|
+
ctx.font = fontString;
|
|
90
|
+
// Apply letter spacing
|
|
91
|
+
if (textProps.letterSpacing !== undefined) {
|
|
92
|
+
ctx.letterSpacing = `${textProps.letterSpacing}px`;
|
|
93
|
+
}
|
|
94
|
+
// Apply word spacing
|
|
95
|
+
if (textProps.wordSpacing !== undefined) {
|
|
96
|
+
ctx.wordSpacing = `${textProps.wordSpacing}px`;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Sets up text alignment
|
|
101
|
+
* @param ctx - Canvas 2D context
|
|
102
|
+
* @param textProps - Text properties
|
|
103
|
+
*/
|
|
104
|
+
static setupAlignment(ctx, textProps) {
|
|
105
|
+
ctx.textAlign = textProps.textAlign || 'left';
|
|
106
|
+
ctx.textBaseline = textProps.textBaseline || 'alphabetic';
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Renders wrapped text with all effects
|
|
110
|
+
* @param ctx - Canvas 2D context
|
|
111
|
+
* @param textProps - Text properties
|
|
112
|
+
*/
|
|
113
|
+
static async renderWrappedText(ctx, textProps) {
|
|
114
|
+
const fontSize = textProps.fontSize || 16;
|
|
115
|
+
const lineHeight = (textProps.lineHeight || 1.4) * fontSize;
|
|
116
|
+
const maxHeight = textProps.maxHeight;
|
|
117
|
+
const maxLines = maxHeight ? Math.floor(maxHeight / lineHeight) : Infinity;
|
|
118
|
+
// Split text into words and wrap
|
|
119
|
+
const words = textProps.text.split(' ');
|
|
120
|
+
const lines = [];
|
|
121
|
+
let currentLine = '';
|
|
122
|
+
for (const word of words) {
|
|
123
|
+
const testLine = currentLine ? currentLine + ' ' + word : word;
|
|
124
|
+
const testWidth = ctx.measureText(testLine).width;
|
|
125
|
+
if (testWidth > (textProps.maxWidth || Infinity) && currentLine) {
|
|
126
|
+
lines.push(currentLine);
|
|
127
|
+
currentLine = word;
|
|
128
|
+
if (lines.length >= maxLines) {
|
|
129
|
+
currentLine = '...';
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
currentLine = testLine;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
if (currentLine && lines.length < maxLines) {
|
|
138
|
+
lines.push(currentLine);
|
|
139
|
+
}
|
|
140
|
+
// Render each line
|
|
141
|
+
for (let i = 0; i < lines.length; i++) {
|
|
142
|
+
const y = textProps.y + (i * lineHeight);
|
|
143
|
+
await this.renderTextLine(ctx, lines[i], textProps.x, y, textProps);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Renders single line text with all effects
|
|
148
|
+
* @param ctx - Canvas 2D context
|
|
149
|
+
* @param textProps - Text properties
|
|
150
|
+
*/
|
|
151
|
+
static async renderSingleLine(ctx, textProps) {
|
|
152
|
+
await this.renderTextLine(ctx, textProps.text, textProps.x, textProps.y, textProps);
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Renders a single line of text with all effects applied
|
|
156
|
+
* @param ctx - Canvas 2D context
|
|
157
|
+
* @param text - Text to render
|
|
158
|
+
* @param x - X position
|
|
159
|
+
* @param y - Y position
|
|
160
|
+
* @param textProps - Text properties
|
|
161
|
+
*/
|
|
162
|
+
static async renderTextLine(ctx, text, x, y, textProps) {
|
|
163
|
+
// Calculate text dimensions
|
|
164
|
+
const metrics = ctx.measureText(text);
|
|
165
|
+
const textWidth = metrics.width;
|
|
166
|
+
const fontSize = textProps.fontSize || 16;
|
|
167
|
+
const textHeight = fontSize;
|
|
168
|
+
// Apply highlight background
|
|
169
|
+
if (textProps.highlight) {
|
|
170
|
+
this.renderHighlight(ctx, x, y, textWidth, textHeight, textProps.highlight);
|
|
171
|
+
}
|
|
172
|
+
// Apply glow effect
|
|
173
|
+
if (textProps.glow) {
|
|
174
|
+
this.renderGlow(ctx, text, x, y, textProps.glow);
|
|
175
|
+
}
|
|
176
|
+
// Apply shadow effect
|
|
177
|
+
if (textProps.shadow) {
|
|
178
|
+
this.renderShadow(ctx, text, x, y, textProps.shadow);
|
|
179
|
+
}
|
|
180
|
+
// Apply stroke
|
|
181
|
+
if (textProps.stroke) {
|
|
182
|
+
this.renderStroke(ctx, text, x, y, textProps.stroke);
|
|
183
|
+
}
|
|
184
|
+
// Apply fill
|
|
185
|
+
this.renderFill(ctx, text, x, y, textProps);
|
|
186
|
+
// Apply text decorations
|
|
187
|
+
this.renderDecorations(ctx, text, x, y, textWidth, textHeight, textProps);
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Renders highlight background
|
|
191
|
+
* @param ctx - Canvas 2D context
|
|
192
|
+
* @param x - X position
|
|
193
|
+
* @param y - Y position
|
|
194
|
+
* @param width - Text width
|
|
195
|
+
* @param height - Text height
|
|
196
|
+
* @param highlight - Highlight options
|
|
197
|
+
*/
|
|
198
|
+
static renderHighlight(ctx, x, y, width, height, highlight) {
|
|
199
|
+
ctx.save();
|
|
200
|
+
const opacity = highlight.opacity !== undefined ? highlight.opacity : 0.3;
|
|
201
|
+
ctx.globalAlpha = opacity;
|
|
202
|
+
ctx.fillStyle = highlight.color || '#ffff00';
|
|
203
|
+
// Adjust highlight position based on text baseline
|
|
204
|
+
const highlightY = y - height * 0.8; // Adjust for different baselines
|
|
205
|
+
ctx.fillRect(x, highlightY, width, height);
|
|
206
|
+
ctx.restore();
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Renders glow effect
|
|
210
|
+
* @param ctx - Canvas 2D context
|
|
211
|
+
* @param text - Text to render
|
|
212
|
+
* @param x - X position
|
|
213
|
+
* @param y - Y position
|
|
214
|
+
* @param glow - Glow options
|
|
215
|
+
*/
|
|
216
|
+
static renderGlow(ctx, text, x, y, glow) {
|
|
217
|
+
ctx.save();
|
|
218
|
+
const intensity = glow.intensity || 10;
|
|
219
|
+
const opacity = glow.opacity !== undefined ? glow.opacity : 0.8;
|
|
220
|
+
ctx.shadowColor = glow.color || '#ffffff';
|
|
221
|
+
ctx.shadowBlur = intensity;
|
|
222
|
+
ctx.globalAlpha = opacity;
|
|
223
|
+
ctx.fillText(text, x, y);
|
|
224
|
+
ctx.restore();
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Renders shadow effect
|
|
228
|
+
* @param ctx - Canvas 2D context
|
|
229
|
+
* @param text - Text to render
|
|
230
|
+
* @param x - X position
|
|
231
|
+
* @param y - Y position
|
|
232
|
+
* @param shadow - Shadow options
|
|
233
|
+
*/
|
|
234
|
+
static renderShadow(ctx, text, x, y, shadow) {
|
|
235
|
+
ctx.save();
|
|
236
|
+
ctx.shadowColor = shadow.color || 'rgba(0, 0, 0, 0.5)';
|
|
237
|
+
ctx.shadowOffsetX = shadow.offsetX || 2;
|
|
238
|
+
ctx.shadowOffsetY = shadow.offsetY || 2;
|
|
239
|
+
ctx.shadowBlur = shadow.blur || 4;
|
|
240
|
+
if (shadow.opacity !== undefined) {
|
|
241
|
+
ctx.globalAlpha = shadow.opacity;
|
|
242
|
+
}
|
|
243
|
+
ctx.fillText(text, x, y);
|
|
244
|
+
ctx.restore();
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Renders stroke/outline
|
|
248
|
+
* @param ctx - Canvas 2D context
|
|
249
|
+
* @param text - Text to render
|
|
250
|
+
* @param x - X position
|
|
251
|
+
* @param y - Y position
|
|
252
|
+
* @param stroke - Stroke options
|
|
253
|
+
*/
|
|
254
|
+
static renderStroke(ctx, text, x, y, stroke) {
|
|
255
|
+
ctx.save();
|
|
256
|
+
ctx.lineWidth = stroke.width || 1;
|
|
257
|
+
if (stroke.gradient) {
|
|
258
|
+
ctx.strokeStyle = this.createGradient(ctx, stroke.gradient, x, y, x + ctx.measureText(text).width, y);
|
|
259
|
+
}
|
|
260
|
+
else {
|
|
261
|
+
ctx.strokeStyle = stroke.color || '#000000';
|
|
262
|
+
}
|
|
263
|
+
if (stroke.opacity !== undefined) {
|
|
264
|
+
ctx.globalAlpha = stroke.opacity;
|
|
265
|
+
}
|
|
266
|
+
ctx.strokeText(text, x, y);
|
|
267
|
+
ctx.restore();
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Renders text fill
|
|
271
|
+
* @param ctx - Canvas 2D context
|
|
272
|
+
* @param text - Text to render
|
|
273
|
+
* @param x - X position
|
|
274
|
+
* @param y - Y position
|
|
275
|
+
* @param textProps - Text properties
|
|
276
|
+
*/
|
|
277
|
+
static renderFill(ctx, text, x, y, textProps) {
|
|
278
|
+
ctx.save();
|
|
279
|
+
if (textProps.gradient) {
|
|
280
|
+
ctx.fillStyle = this.createGradient(ctx, textProps.gradient, x, y, x + ctx.measureText(text).width, y);
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
ctx.fillStyle = textProps.color || '#000000';
|
|
284
|
+
}
|
|
285
|
+
ctx.fillText(text, x, y);
|
|
286
|
+
ctx.restore();
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Renders text decorations (underline, overline, strikethrough)
|
|
290
|
+
* @param ctx - Canvas 2D context
|
|
291
|
+
* @param text - Text to render
|
|
292
|
+
* @param x - X position
|
|
293
|
+
* @param y - Y position
|
|
294
|
+
* @param width - Text width
|
|
295
|
+
* @param height - Text height
|
|
296
|
+
* @param textProps - Text properties
|
|
297
|
+
*/
|
|
298
|
+
static renderDecorations(ctx, text, x, y, width, height, textProps) {
|
|
299
|
+
if (!textProps.underline && !textProps.overline && !textProps.strikethrough) {
|
|
300
|
+
return;
|
|
301
|
+
}
|
|
302
|
+
ctx.save();
|
|
303
|
+
const fontSize = textProps.fontSize || 16;
|
|
304
|
+
const decorationColor = textProps.color || '#000000';
|
|
305
|
+
const decorationWidth = Math.max(1, fontSize * 0.05); // 5% of font size
|
|
306
|
+
ctx.strokeStyle = decorationColor;
|
|
307
|
+
ctx.lineWidth = decorationWidth;
|
|
308
|
+
// Underline
|
|
309
|
+
if (textProps.underline) {
|
|
310
|
+
const underlineY = y + fontSize * 0.1;
|
|
311
|
+
ctx.beginPath();
|
|
312
|
+
ctx.moveTo(x, underlineY);
|
|
313
|
+
ctx.lineTo(x + width, underlineY);
|
|
314
|
+
ctx.stroke();
|
|
315
|
+
}
|
|
316
|
+
// Overline
|
|
317
|
+
if (textProps.overline) {
|
|
318
|
+
const overlineY = y - fontSize * 0.8;
|
|
319
|
+
ctx.beginPath();
|
|
320
|
+
ctx.moveTo(x, overlineY);
|
|
321
|
+
ctx.lineTo(x + width, overlineY);
|
|
322
|
+
ctx.stroke();
|
|
323
|
+
}
|
|
324
|
+
// Strikethrough
|
|
325
|
+
if (textProps.strikethrough) {
|
|
326
|
+
const strikethroughY = y - fontSize * 0.3;
|
|
327
|
+
ctx.beginPath();
|
|
328
|
+
ctx.moveTo(x, strikethroughY);
|
|
329
|
+
ctx.lineTo(x + width, strikethroughY);
|
|
330
|
+
ctx.stroke();
|
|
331
|
+
}
|
|
332
|
+
ctx.restore();
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* Creates a gradient for text fill or stroke
|
|
336
|
+
* @param ctx - Canvas 2D context
|
|
337
|
+
* @param gradientOptions - Gradient configuration
|
|
338
|
+
* @param startX - Start X position
|
|
339
|
+
* @param startY - Start Y position
|
|
340
|
+
* @param endX - End X position
|
|
341
|
+
* @param endY - End Y position
|
|
342
|
+
* @returns Canvas gradient
|
|
343
|
+
*/
|
|
344
|
+
static createGradient(ctx, gradientOptions, startX, startY, endX, endY) {
|
|
345
|
+
if (!gradientOptions || !gradientOptions.type || !gradientOptions.colors) {
|
|
346
|
+
throw new Error("Invalid gradient options. Provide a valid object with type and colors properties.");
|
|
347
|
+
}
|
|
348
|
+
let gradient;
|
|
349
|
+
if (gradientOptions.type === "linear") {
|
|
350
|
+
gradient = ctx.createLinearGradient(startX, startY, endX, endY);
|
|
351
|
+
}
|
|
352
|
+
else if (gradientOptions.type === "radial") {
|
|
353
|
+
gradient = ctx.createRadialGradient(gradientOptions.startX || startX, gradientOptions.startY || startY, gradientOptions.startRadius || 0, gradientOptions.endX || endX, gradientOptions.endY || endY, gradientOptions.endRadius || 0);
|
|
354
|
+
}
|
|
355
|
+
else {
|
|
356
|
+
throw new Error('Unsupported gradient type. Use "linear" or "radial".');
|
|
357
|
+
}
|
|
358
|
+
for (const colorStop of gradientOptions.colors) {
|
|
359
|
+
gradient.addColorStop(colorStop.stop, colorStop.color);
|
|
360
|
+
}
|
|
361
|
+
return gradient;
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
exports.EnhancedTextRenderer = EnhancedTextRenderer;
|
|
365
|
+
//# sourceMappingURL=enhancedTextRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enhancedTextRenderer.js","sourceRoot":"","sources":["../../../../../lib/Canvas/utils/Texts/enhancedTextRenderer.ts"],"names":[],"mappings":"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"}
|