apexify.js 4.9.28 → 4.9.30
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 +672 -456
- package/dist/cjs/Canvas/ApexPainter.d.ts.map +1 -1
- package/dist/cjs/Canvas/ApexPainter.js +169 -2
- package/dist/cjs/Canvas/ApexPainter.js.map +1 -1
- package/dist/cjs/Canvas/utils/Image/imageProperties.d.ts.map +1 -1
- package/dist/cjs/Canvas/utils/Image/imageProperties.js +181 -2
- package/dist/cjs/Canvas/utils/Image/imageProperties.js.map +1 -1
- package/dist/cjs/Canvas/utils/Texts/enhancedTextRenderer.d.ts +33 -0
- package/dist/cjs/Canvas/utils/Texts/enhancedTextRenderer.d.ts.map +1 -1
- package/dist/cjs/Canvas/utils/Texts/enhancedTextRenderer.js +237 -32
- package/dist/cjs/Canvas/utils/Texts/enhancedTextRenderer.js.map +1 -1
- package/dist/cjs/Canvas/utils/types.d.ts +50 -10
- package/dist/cjs/Canvas/utils/types.d.ts.map +1 -1
- package/dist/cjs/Canvas/utils/types.js.map +1 -1
- package/dist/esm/Canvas/ApexPainter.d.ts.map +1 -1
- package/dist/esm/Canvas/ApexPainter.js +169 -2
- package/dist/esm/Canvas/ApexPainter.js.map +1 -1
- package/dist/esm/Canvas/utils/Image/imageProperties.d.ts.map +1 -1
- package/dist/esm/Canvas/utils/Image/imageProperties.js +181 -2
- package/dist/esm/Canvas/utils/Image/imageProperties.js.map +1 -1
- package/dist/esm/Canvas/utils/Texts/enhancedTextRenderer.d.ts +33 -0
- package/dist/esm/Canvas/utils/Texts/enhancedTextRenderer.d.ts.map +1 -1
- package/dist/esm/Canvas/utils/Texts/enhancedTextRenderer.js +237 -32
- package/dist/esm/Canvas/utils/Texts/enhancedTextRenderer.js.map +1 -1
- package/dist/esm/Canvas/utils/types.d.ts +50 -10
- package/dist/esm/Canvas/utils/types.d.ts.map +1 -1
- package/dist/esm/Canvas/utils/types.js.map +1 -1
- package/lib/Canvas/ApexPainter.ts +192 -2
- package/lib/Canvas/utils/Image/imageProperties.ts +207 -2
- package/lib/Canvas/utils/Texts/enhancedTextRenderer.ts +274 -36
- package/lib/Canvas/utils/types.ts +52 -10
- package/package.json +1 -1
|
@@ -222,7 +222,7 @@ function applyStroke(ctx, a, b, c, d, e, f, g) {
|
|
|
222
222
|
}
|
|
223
223
|
if (!stroke)
|
|
224
224
|
return;
|
|
225
|
-
const { color = "#000", gradient, width = 2, position = 0, blur = 0, opacity = 1 } = stroke;
|
|
225
|
+
const { color = "#000", gradient, width = 2, position = 0, blur = 0, opacity = 1, style = 'solid' } = stroke;
|
|
226
226
|
// expand/shrink by `position`
|
|
227
227
|
const r = {
|
|
228
228
|
x: rect.x - position,
|
|
@@ -243,7 +243,15 @@ function applyStroke(ctx, a, b, c, d, e, f, g) {
|
|
|
243
243
|
else {
|
|
244
244
|
ctx.strokeStyle = color;
|
|
245
245
|
}
|
|
246
|
-
|
|
246
|
+
// Apply stroke style
|
|
247
|
+
applyStrokeStyle(ctx, style, width);
|
|
248
|
+
// Handle complex stroke styles that require multiple passes
|
|
249
|
+
if (style === 'groove' || style === 'ridge' || style === 'double') {
|
|
250
|
+
applyComplexStrokeStyle(ctx, style, width, color, gradient, r);
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
ctx.stroke();
|
|
254
|
+
}
|
|
247
255
|
ctx.filter = "none";
|
|
248
256
|
ctx.globalAlpha = 1;
|
|
249
257
|
ctx.restore();
|
|
@@ -268,4 +276,175 @@ function drawBoxBackground(ctx, rect, boxBg, borderRadius, borderPosition) {
|
|
|
268
276
|
}
|
|
269
277
|
ctx.restore();
|
|
270
278
|
}
|
|
279
|
+
/**
|
|
280
|
+
* Applies stroke style to canvas context
|
|
281
|
+
* @param ctx - Canvas 2D context
|
|
282
|
+
* @param style - Stroke style type
|
|
283
|
+
* @param width - Stroke width for calculating dash patterns
|
|
284
|
+
*/
|
|
285
|
+
function applyStrokeStyle(ctx, style, width) {
|
|
286
|
+
switch (style) {
|
|
287
|
+
case 'solid':
|
|
288
|
+
ctx.setLineDash([]);
|
|
289
|
+
ctx.lineCap = 'butt';
|
|
290
|
+
ctx.lineJoin = 'miter';
|
|
291
|
+
break;
|
|
292
|
+
case 'dashed':
|
|
293
|
+
ctx.setLineDash([width * 3, width * 2]);
|
|
294
|
+
ctx.lineCap = 'butt';
|
|
295
|
+
ctx.lineJoin = 'miter';
|
|
296
|
+
break;
|
|
297
|
+
case 'dotted':
|
|
298
|
+
ctx.setLineDash([width, width]);
|
|
299
|
+
ctx.lineCap = 'round';
|
|
300
|
+
ctx.lineJoin = 'round';
|
|
301
|
+
break;
|
|
302
|
+
case 'groove':
|
|
303
|
+
// Groove effect: draw multiple strokes with different colors/opacity
|
|
304
|
+
ctx.setLineDash([]);
|
|
305
|
+
ctx.lineCap = 'butt';
|
|
306
|
+
ctx.lineJoin = 'miter';
|
|
307
|
+
// Note: Groove effect requires multiple passes - handled in main stroke function
|
|
308
|
+
break;
|
|
309
|
+
case 'ridge':
|
|
310
|
+
// Ridge effect: draw multiple strokes with different colors/opacity
|
|
311
|
+
ctx.setLineDash([]);
|
|
312
|
+
ctx.lineCap = 'butt';
|
|
313
|
+
ctx.lineJoin = 'miter';
|
|
314
|
+
// Note: Ridge effect requires multiple passes - handled in main stroke function
|
|
315
|
+
break;
|
|
316
|
+
case 'double':
|
|
317
|
+
// Double effect: draw multiple strokes
|
|
318
|
+
ctx.setLineDash([]);
|
|
319
|
+
ctx.lineCap = 'butt';
|
|
320
|
+
ctx.lineJoin = 'miter';
|
|
321
|
+
// Note: Double effect requires multiple passes - handled in main stroke function
|
|
322
|
+
break;
|
|
323
|
+
default:
|
|
324
|
+
ctx.setLineDash([]);
|
|
325
|
+
ctx.lineCap = 'butt';
|
|
326
|
+
ctx.lineJoin = 'miter';
|
|
327
|
+
break;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Applies complex stroke styles that require multiple passes
|
|
332
|
+
* @param ctx - Canvas 2D context
|
|
333
|
+
* @param style - Complex stroke style type
|
|
334
|
+
* @param width - Stroke width
|
|
335
|
+
* @param color - Base stroke color
|
|
336
|
+
* @param gradient - Optional gradient
|
|
337
|
+
* @param rect - Rectangle dimensions
|
|
338
|
+
*/
|
|
339
|
+
function applyComplexStrokeStyle(ctx, style, width, color, gradient, rect) {
|
|
340
|
+
const halfWidth = width / 2;
|
|
341
|
+
switch (style) {
|
|
342
|
+
case 'groove':
|
|
343
|
+
// Groove: dark outer, light inner
|
|
344
|
+
ctx.lineWidth = halfWidth;
|
|
345
|
+
// Outer dark stroke
|
|
346
|
+
if (gradient) {
|
|
347
|
+
const gstroke = createGradientFill(ctx, gradient, rect);
|
|
348
|
+
ctx.strokeStyle = gstroke;
|
|
349
|
+
}
|
|
350
|
+
else {
|
|
351
|
+
ctx.strokeStyle = darkenColor(color, 0.3);
|
|
352
|
+
}
|
|
353
|
+
ctx.stroke();
|
|
354
|
+
// Inner light stroke
|
|
355
|
+
ctx.lineWidth = halfWidth;
|
|
356
|
+
if (gradient) {
|
|
357
|
+
const gstroke = createGradientFill(ctx, gradient, rect);
|
|
358
|
+
ctx.strokeStyle = gstroke;
|
|
359
|
+
}
|
|
360
|
+
else {
|
|
361
|
+
ctx.strokeStyle = lightenColor(color, 0.3);
|
|
362
|
+
}
|
|
363
|
+
ctx.stroke();
|
|
364
|
+
break;
|
|
365
|
+
case 'ridge':
|
|
366
|
+
// Ridge: light outer, dark inner
|
|
367
|
+
ctx.lineWidth = halfWidth;
|
|
368
|
+
// Outer light stroke
|
|
369
|
+
if (gradient) {
|
|
370
|
+
const gstroke = createGradientFill(ctx, gradient, rect);
|
|
371
|
+
ctx.strokeStyle = gstroke;
|
|
372
|
+
}
|
|
373
|
+
else {
|
|
374
|
+
ctx.strokeStyle = lightenColor(color, 0.3);
|
|
375
|
+
}
|
|
376
|
+
ctx.stroke();
|
|
377
|
+
// Inner dark stroke
|
|
378
|
+
ctx.lineWidth = halfWidth;
|
|
379
|
+
if (gradient) {
|
|
380
|
+
const gstroke = createGradientFill(ctx, gradient, rect);
|
|
381
|
+
ctx.strokeStyle = gstroke;
|
|
382
|
+
}
|
|
383
|
+
else {
|
|
384
|
+
ctx.strokeStyle = darkenColor(color, 0.3);
|
|
385
|
+
}
|
|
386
|
+
ctx.stroke();
|
|
387
|
+
break;
|
|
388
|
+
case 'double':
|
|
389
|
+
// Double: two parallel strokes
|
|
390
|
+
const gap = Math.max(1, width / 4);
|
|
391
|
+
// First stroke (outer)
|
|
392
|
+
ctx.lineWidth = halfWidth;
|
|
393
|
+
if (gradient) {
|
|
394
|
+
const gstroke = createGradientFill(ctx, gradient, rect);
|
|
395
|
+
ctx.strokeStyle = gstroke;
|
|
396
|
+
}
|
|
397
|
+
else {
|
|
398
|
+
ctx.strokeStyle = color;
|
|
399
|
+
}
|
|
400
|
+
ctx.stroke();
|
|
401
|
+
// Second stroke (inner)
|
|
402
|
+
ctx.lineWidth = halfWidth;
|
|
403
|
+
if (gradient) {
|
|
404
|
+
const gstroke = createGradientFill(ctx, gradient, rect);
|
|
405
|
+
ctx.strokeStyle = gstroke;
|
|
406
|
+
}
|
|
407
|
+
else {
|
|
408
|
+
ctx.strokeStyle = color;
|
|
409
|
+
}
|
|
410
|
+
ctx.stroke();
|
|
411
|
+
break;
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
/**
|
|
415
|
+
* Darkens a color by a factor
|
|
416
|
+
* @param color - Color string
|
|
417
|
+
* @param factor - Darkening factor (0-1)
|
|
418
|
+
* @returns Darkened color string
|
|
419
|
+
*/
|
|
420
|
+
function darkenColor(color, factor) {
|
|
421
|
+
// Simple darkening for hex colors
|
|
422
|
+
if (color.startsWith('#')) {
|
|
423
|
+
const hex = color.slice(1);
|
|
424
|
+
const num = parseInt(hex, 16);
|
|
425
|
+
const r = Math.max(0, Math.floor((num >> 16) * (1 - factor)));
|
|
426
|
+
const g = Math.max(0, Math.floor(((num >> 8) & 0x00FF) * (1 - factor)));
|
|
427
|
+
const b = Math.max(0, Math.floor((num & 0x0000FF) * (1 - factor)));
|
|
428
|
+
return `#${((r << 16) | (g << 8) | b).toString(16).padStart(6, '0')}`;
|
|
429
|
+
}
|
|
430
|
+
return color; // Return original for non-hex colors
|
|
431
|
+
}
|
|
432
|
+
/**
|
|
433
|
+
* Lightens a color by a factor
|
|
434
|
+
* @param color - Color string
|
|
435
|
+
* @param factor - Lightening factor (0-1)
|
|
436
|
+
* @returns Lightened color string
|
|
437
|
+
*/
|
|
438
|
+
function lightenColor(color, factor) {
|
|
439
|
+
// Simple lightening for hex colors
|
|
440
|
+
if (color.startsWith('#')) {
|
|
441
|
+
const hex = color.slice(1);
|
|
442
|
+
const num = parseInt(hex, 16);
|
|
443
|
+
const r = Math.min(255, Math.floor((num >> 16) + (255 - (num >> 16)) * factor));
|
|
444
|
+
const g = Math.min(255, Math.floor(((num >> 8) & 0x00FF) + (255 - ((num >> 8) & 0x00FF)) * factor));
|
|
445
|
+
const b = Math.min(255, Math.floor((num & 0x0000FF) + (255 - (num & 0x0000FF)) * factor));
|
|
446
|
+
return `#${((r << 16) | (g << 8) | b).toString(16).padStart(6, '0')}`;
|
|
447
|
+
}
|
|
448
|
+
return color; // Return original for non-hex colors
|
|
449
|
+
}
|
|
271
450
|
//# sourceMappingURL=imageProperties.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"imageProperties.js","sourceRoot":"","sources":["../../../../../lib/Canvas/utils/Image/imageProperties.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"imageProperties.js","sourceRoot":"","sources":["../../../../../lib/Canvas/utils/Image/imageProperties.ts"],"names":[],"mappings":"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"}
|
|
@@ -123,5 +123,38 @@ export declare class EnhancedTextRenderer {
|
|
|
123
123
|
* @returns Canvas gradient
|
|
124
124
|
*/
|
|
125
125
|
private static createGradient;
|
|
126
|
+
/**
|
|
127
|
+
* Applies stroke style to text context
|
|
128
|
+
* @param ctx - Canvas 2D context
|
|
129
|
+
* @param style - Stroke style type
|
|
130
|
+
* @param width - Stroke width for calculating dash patterns
|
|
131
|
+
*/
|
|
132
|
+
private static applyTextStrokeStyle;
|
|
133
|
+
/**
|
|
134
|
+
* Renders complex text stroke styles that require multiple passes
|
|
135
|
+
* @param ctx - Canvas 2D context
|
|
136
|
+
* @param text - Text to render
|
|
137
|
+
* @param x - X position
|
|
138
|
+
* @param y - Y position
|
|
139
|
+
* @param style - Complex stroke style type
|
|
140
|
+
* @param width - Stroke width
|
|
141
|
+
* @param color - Base stroke color
|
|
142
|
+
* @param gradient - Optional gradient
|
|
143
|
+
*/
|
|
144
|
+
private static renderComplexTextStroke;
|
|
145
|
+
/**
|
|
146
|
+
* Darkens a color by a factor
|
|
147
|
+
* @param color - Color string
|
|
148
|
+
* @param factor - Darkening factor (0-1)
|
|
149
|
+
* @returns Darkened color string
|
|
150
|
+
*/
|
|
151
|
+
private static darkenColor;
|
|
152
|
+
/**
|
|
153
|
+
* Lightens a color by a factor
|
|
154
|
+
* @param color - Color string
|
|
155
|
+
* @param factor - Lightening factor (0-1)
|
|
156
|
+
* @returns Lightened color string
|
|
157
|
+
*/
|
|
158
|
+
private static lightenColor;
|
|
126
159
|
}
|
|
127
160
|
//# sourceMappingURL=enhancedTextRenderer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enhancedTextRenderer.d.ts","sourceRoot":"","sources":["../../../../../lib/Canvas/utils/Texts/enhancedTextRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAY,MAAM,UAAU,CAAC;AAIpD;;GAEG;AACH,qBAAa,oBAAoB;IAC/B;;;;OAIG;WACU,UAAU,CAAC,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"enhancedTextRenderer.d.ts","sourceRoot":"","sources":["../../../../../lib/Canvas/utils/Texts/enhancedTextRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAY,MAAM,UAAU,CAAC;AAIpD;;GAEG;AACH,qBAAa,oBAAoB;IAC/B;;;;OAIG;WACU,UAAU,CAAC,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCrF;;;;OAIG;mBACkB,kBAAkB;IASvC;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAcnC;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,SAAS;IA0BxB;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAK7B;;;;OAIG;mBACkB,iBAAiB;IAuCtC;;;;OAIG;mBACkB,gBAAgB;IAIrC;;;;;;;OAOG;mBACkB,cAAc;IAwCnC;;;;;;;;OAQG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IA2B9B;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;IAoCzB;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAuB3B;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAqC3B;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;IAoBzB;;;;;;;;;OASG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IA6EhC;;;;;;;;;OASG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAoC7B;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAwCnC;;;;;;;;;;OAUG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAkFtC;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAa1B;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;CAY5B"}
|
|
@@ -18,9 +18,11 @@ class EnhancedTextRenderer {
|
|
|
18
18
|
static async renderText(ctx, textProps) {
|
|
19
19
|
ctx.save();
|
|
20
20
|
try {
|
|
21
|
-
// 1. Register custom font if provided
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
// 1. Register custom font if provided (support both new and legacy properties)
|
|
22
|
+
const fontPath = textProps.font?.path || textProps.fontPath;
|
|
23
|
+
const fontName = textProps.font?.name || textProps.fontName;
|
|
24
|
+
if (fontPath) {
|
|
25
|
+
await this.registerCustomFont(fontPath, fontName || 'customFont');
|
|
24
26
|
}
|
|
25
27
|
// 2. Apply transformations
|
|
26
28
|
this.applyTransformations(ctx, textProps);
|
|
@@ -77,8 +79,9 @@ class EnhancedTextRenderer {
|
|
|
77
79
|
* @param textProps - Text properties
|
|
78
80
|
*/
|
|
79
81
|
static setupFont(ctx, textProps) {
|
|
80
|
-
|
|
81
|
-
const
|
|
82
|
+
// Support both new font object and legacy properties
|
|
83
|
+
const fontSize = textProps.font?.size || textProps.fontSize || 16;
|
|
84
|
+
const fontFamily = textProps.font?.name || textProps.fontName || textProps.font?.family || textProps.fontFamily || 'Arial';
|
|
82
85
|
// Build font string with decorations
|
|
83
86
|
let fontString = '';
|
|
84
87
|
if (textProps.bold)
|
|
@@ -111,7 +114,7 @@ class EnhancedTextRenderer {
|
|
|
111
114
|
* @param textProps - Text properties
|
|
112
115
|
*/
|
|
113
116
|
static async renderWrappedText(ctx, textProps) {
|
|
114
|
-
const fontSize = textProps.fontSize || 16;
|
|
117
|
+
const fontSize = textProps.font?.size || textProps.fontSize || 16;
|
|
115
118
|
const lineHeight = (textProps.lineHeight || 1.4) * fontSize;
|
|
116
119
|
const maxHeight = textProps.maxHeight;
|
|
117
120
|
const maxLines = maxHeight ? Math.floor(maxHeight / lineHeight) : Infinity;
|
|
@@ -163,7 +166,7 @@ class EnhancedTextRenderer {
|
|
|
163
166
|
// Calculate text dimensions
|
|
164
167
|
const metrics = ctx.measureText(text);
|
|
165
168
|
const textWidth = metrics.width;
|
|
166
|
-
const fontSize = textProps.fontSize || 16;
|
|
169
|
+
const fontSize = textProps.font?.size || textProps.fontSize || 16;
|
|
167
170
|
const textHeight = fontSize;
|
|
168
171
|
// Apply highlight background
|
|
169
172
|
if (textProps.highlight) {
|
|
@@ -199,7 +202,13 @@ class EnhancedTextRenderer {
|
|
|
199
202
|
ctx.save();
|
|
200
203
|
const opacity = highlight.opacity !== undefined ? highlight.opacity : 0.3;
|
|
201
204
|
ctx.globalAlpha = opacity;
|
|
202
|
-
|
|
205
|
+
// Set fill style (gradient or color)
|
|
206
|
+
if (highlight.gradient) {
|
|
207
|
+
ctx.fillStyle = this.createGradient(ctx, highlight.gradient, x, y, x + width, y + height);
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
ctx.fillStyle = highlight.color || '#ffff00';
|
|
211
|
+
}
|
|
203
212
|
// Adjust highlight position based on text baseline
|
|
204
213
|
const highlightY = y - height * 0.8; // Adjust for different baselines
|
|
205
214
|
ctx.fillRect(x, highlightY, width, height);
|
|
@@ -217,10 +226,26 @@ class EnhancedTextRenderer {
|
|
|
217
226
|
ctx.save();
|
|
218
227
|
const intensity = glow.intensity || 10;
|
|
219
228
|
const opacity = glow.opacity !== undefined ? glow.opacity : 0.8;
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
229
|
+
// For glow, we need to use shadowColor which only supports solid colors
|
|
230
|
+
// So we'll render the glow with the base color and then overlay with gradient if needed
|
|
231
|
+
if (glow.gradient) {
|
|
232
|
+
// First render with shadow for glow effect
|
|
233
|
+
ctx.shadowColor = '#ffffff'; // Use white as base for glow
|
|
234
|
+
ctx.shadowBlur = intensity;
|
|
235
|
+
ctx.globalAlpha = opacity;
|
|
236
|
+
ctx.fillText(text, x, y);
|
|
237
|
+
// Then overlay with gradient
|
|
238
|
+
ctx.shadowColor = 'transparent';
|
|
239
|
+
ctx.shadowBlur = 0;
|
|
240
|
+
ctx.fillStyle = this.createGradient(ctx, glow.gradient, x, y, x + ctx.measureText(text).width, y);
|
|
241
|
+
ctx.fillText(text, x, y);
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
ctx.shadowColor = glow.color || '#ffffff';
|
|
245
|
+
ctx.shadowBlur = intensity;
|
|
246
|
+
ctx.globalAlpha = opacity;
|
|
247
|
+
ctx.fillText(text, x, y);
|
|
248
|
+
}
|
|
224
249
|
ctx.restore();
|
|
225
250
|
}
|
|
226
251
|
/**
|
|
@@ -253,7 +278,9 @@ class EnhancedTextRenderer {
|
|
|
253
278
|
*/
|
|
254
279
|
static renderStroke(ctx, text, x, y, stroke) {
|
|
255
280
|
ctx.save();
|
|
256
|
-
|
|
281
|
+
const strokeWidth = stroke.width || 1;
|
|
282
|
+
const strokeStyle = stroke.style || 'solid';
|
|
283
|
+
ctx.lineWidth = strokeWidth;
|
|
257
284
|
if (stroke.gradient) {
|
|
258
285
|
ctx.strokeStyle = this.createGradient(ctx, stroke.gradient, x, y, x + ctx.measureText(text).width, y);
|
|
259
286
|
}
|
|
@@ -263,7 +290,15 @@ class EnhancedTextRenderer {
|
|
|
263
290
|
if (stroke.opacity !== undefined) {
|
|
264
291
|
ctx.globalAlpha = stroke.opacity;
|
|
265
292
|
}
|
|
266
|
-
|
|
293
|
+
// Apply stroke style
|
|
294
|
+
this.applyTextStrokeStyle(ctx, strokeStyle, strokeWidth);
|
|
295
|
+
// Handle complex stroke styles
|
|
296
|
+
if (strokeStyle === 'groove' || strokeStyle === 'ridge' || strokeStyle === 'double') {
|
|
297
|
+
this.renderComplexTextStroke(ctx, text, x, y, strokeStyle, strokeWidth, stroke.color, stroke.gradient);
|
|
298
|
+
}
|
|
299
|
+
else {
|
|
300
|
+
ctx.strokeText(text, x, y);
|
|
301
|
+
}
|
|
267
302
|
ctx.restore();
|
|
268
303
|
}
|
|
269
304
|
/**
|
|
@@ -296,38 +331,55 @@ class EnhancedTextRenderer {
|
|
|
296
331
|
* @param textProps - Text properties
|
|
297
332
|
*/
|
|
298
333
|
static renderDecorations(ctx, text, x, y, width, height, textProps) {
|
|
299
|
-
|
|
334
|
+
const hasDecorations = textProps.underline || textProps.overline || textProps.strikethrough;
|
|
335
|
+
if (!hasDecorations) {
|
|
300
336
|
return;
|
|
301
337
|
}
|
|
302
338
|
ctx.save();
|
|
303
|
-
const fontSize = textProps.fontSize || 16;
|
|
304
|
-
const
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
339
|
+
const fontSize = textProps.font?.size || textProps.fontSize || 16;
|
|
340
|
+
const defaultColor = textProps.color || '#000000';
|
|
341
|
+
// Helper function to render a decoration line
|
|
342
|
+
const renderDecorationLine = (decorationY, decoration, lineName) => {
|
|
343
|
+
if (!decoration)
|
|
344
|
+
return;
|
|
345
|
+
ctx.save();
|
|
346
|
+
let decorationColor = defaultColor;
|
|
347
|
+
let decorationWidth = Math.max(1, fontSize * 0.05); // 5% of font size
|
|
348
|
+
if (typeof decoration === 'object') {
|
|
349
|
+
decorationColor = decoration.color || defaultColor;
|
|
350
|
+
decorationWidth = decoration.width || decorationWidth;
|
|
351
|
+
// Set stroke style (gradient or color)
|
|
352
|
+
if (decoration.gradient) {
|
|
353
|
+
ctx.strokeStyle = this.createGradient(ctx, decoration.gradient, x, decorationY, x + width, decorationY);
|
|
354
|
+
}
|
|
355
|
+
else {
|
|
356
|
+
ctx.strokeStyle = decorationColor;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
else {
|
|
360
|
+
ctx.strokeStyle = decorationColor;
|
|
361
|
+
}
|
|
362
|
+
ctx.lineWidth = decorationWidth;
|
|
363
|
+
ctx.beginPath();
|
|
364
|
+
ctx.moveTo(x, decorationY);
|
|
365
|
+
ctx.lineTo(x + width, decorationY);
|
|
366
|
+
ctx.stroke();
|
|
367
|
+
ctx.restore();
|
|
368
|
+
};
|
|
308
369
|
// Underline
|
|
309
370
|
if (textProps.underline) {
|
|
310
371
|
const underlineY = y + fontSize * 0.1;
|
|
311
|
-
|
|
312
|
-
ctx.moveTo(x, underlineY);
|
|
313
|
-
ctx.lineTo(x + width, underlineY);
|
|
314
|
-
ctx.stroke();
|
|
372
|
+
renderDecorationLine(underlineY, textProps.underline, 'underline');
|
|
315
373
|
}
|
|
316
374
|
// Overline
|
|
317
375
|
if (textProps.overline) {
|
|
318
376
|
const overlineY = y - fontSize * 0.8;
|
|
319
|
-
|
|
320
|
-
ctx.moveTo(x, overlineY);
|
|
321
|
-
ctx.lineTo(x + width, overlineY);
|
|
322
|
-
ctx.stroke();
|
|
377
|
+
renderDecorationLine(overlineY, textProps.overline, 'overline');
|
|
323
378
|
}
|
|
324
379
|
// Strikethrough
|
|
325
380
|
if (textProps.strikethrough) {
|
|
326
381
|
const strikethroughY = y - fontSize * 0.3;
|
|
327
|
-
|
|
328
|
-
ctx.moveTo(x, strikethroughY);
|
|
329
|
-
ctx.lineTo(x + width, strikethroughY);
|
|
330
|
-
ctx.stroke();
|
|
382
|
+
renderDecorationLine(strikethroughY, textProps.strikethrough, 'strikethrough');
|
|
331
383
|
}
|
|
332
384
|
ctx.restore();
|
|
333
385
|
}
|
|
@@ -360,6 +412,159 @@ class EnhancedTextRenderer {
|
|
|
360
412
|
}
|
|
361
413
|
return gradient;
|
|
362
414
|
}
|
|
415
|
+
/**
|
|
416
|
+
* Applies stroke style to text context
|
|
417
|
+
* @param ctx - Canvas 2D context
|
|
418
|
+
* @param style - Stroke style type
|
|
419
|
+
* @param width - Stroke width for calculating dash patterns
|
|
420
|
+
*/
|
|
421
|
+
static applyTextStrokeStyle(ctx, style, width) {
|
|
422
|
+
switch (style) {
|
|
423
|
+
case 'solid':
|
|
424
|
+
ctx.setLineDash([]);
|
|
425
|
+
ctx.lineCap = 'butt';
|
|
426
|
+
ctx.lineJoin = 'miter';
|
|
427
|
+
break;
|
|
428
|
+
case 'dashed':
|
|
429
|
+
ctx.setLineDash([width * 3, width * 2]);
|
|
430
|
+
ctx.lineCap = 'butt';
|
|
431
|
+
ctx.lineJoin = 'miter';
|
|
432
|
+
break;
|
|
433
|
+
case 'dotted':
|
|
434
|
+
ctx.setLineDash([width, width]);
|
|
435
|
+
ctx.lineCap = 'round';
|
|
436
|
+
ctx.lineJoin = 'round';
|
|
437
|
+
break;
|
|
438
|
+
case 'groove':
|
|
439
|
+
case 'ridge':
|
|
440
|
+
case 'double':
|
|
441
|
+
ctx.setLineDash([]);
|
|
442
|
+
ctx.lineCap = 'butt';
|
|
443
|
+
ctx.lineJoin = 'miter';
|
|
444
|
+
break;
|
|
445
|
+
default:
|
|
446
|
+
ctx.setLineDash([]);
|
|
447
|
+
ctx.lineCap = 'butt';
|
|
448
|
+
ctx.lineJoin = 'miter';
|
|
449
|
+
break;
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
/**
|
|
453
|
+
* Renders complex text stroke styles that require multiple passes
|
|
454
|
+
* @param ctx - Canvas 2D context
|
|
455
|
+
* @param text - Text to render
|
|
456
|
+
* @param x - X position
|
|
457
|
+
* @param y - Y position
|
|
458
|
+
* @param style - Complex stroke style type
|
|
459
|
+
* @param width - Stroke width
|
|
460
|
+
* @param color - Base stroke color
|
|
461
|
+
* @param gradient - Optional gradient
|
|
462
|
+
*/
|
|
463
|
+
static renderComplexTextStroke(ctx, text, x, y, style, width, color, gradient) {
|
|
464
|
+
const halfWidth = width / 2;
|
|
465
|
+
const textWidth = ctx.measureText(text).width;
|
|
466
|
+
switch (style) {
|
|
467
|
+
case 'groove':
|
|
468
|
+
// Groove: dark outer, light inner
|
|
469
|
+
ctx.lineWidth = halfWidth;
|
|
470
|
+
// Outer dark stroke
|
|
471
|
+
if (gradient) {
|
|
472
|
+
ctx.strokeStyle = this.createGradient(ctx, gradient, x, y, x + textWidth, y);
|
|
473
|
+
}
|
|
474
|
+
else {
|
|
475
|
+
ctx.strokeStyle = this.darkenColor(color || '#000000', 0.3);
|
|
476
|
+
}
|
|
477
|
+
ctx.strokeText(text, x, y);
|
|
478
|
+
// Inner light stroke
|
|
479
|
+
ctx.lineWidth = halfWidth;
|
|
480
|
+
if (gradient) {
|
|
481
|
+
ctx.strokeStyle = this.createGradient(ctx, gradient, x, y, x + textWidth, y);
|
|
482
|
+
}
|
|
483
|
+
else {
|
|
484
|
+
ctx.strokeStyle = this.lightenColor(color || '#000000', 0.3);
|
|
485
|
+
}
|
|
486
|
+
ctx.strokeText(text, x, y);
|
|
487
|
+
break;
|
|
488
|
+
case 'ridge':
|
|
489
|
+
// Ridge: light outer, dark inner
|
|
490
|
+
ctx.lineWidth = halfWidth;
|
|
491
|
+
// Outer light stroke
|
|
492
|
+
if (gradient) {
|
|
493
|
+
ctx.strokeStyle = this.createGradient(ctx, gradient, x, y, x + textWidth, y);
|
|
494
|
+
}
|
|
495
|
+
else {
|
|
496
|
+
ctx.strokeStyle = this.lightenColor(color || '#000000', 0.3);
|
|
497
|
+
}
|
|
498
|
+
ctx.strokeText(text, x, y);
|
|
499
|
+
// Inner dark stroke
|
|
500
|
+
ctx.lineWidth = halfWidth;
|
|
501
|
+
if (gradient) {
|
|
502
|
+
ctx.strokeStyle = this.createGradient(ctx, gradient, x, y, x + textWidth, y);
|
|
503
|
+
}
|
|
504
|
+
else {
|
|
505
|
+
ctx.strokeStyle = this.darkenColor(color || '#000000', 0.3);
|
|
506
|
+
}
|
|
507
|
+
ctx.strokeText(text, x, y);
|
|
508
|
+
break;
|
|
509
|
+
case 'double':
|
|
510
|
+
// Double: two parallel strokes
|
|
511
|
+
ctx.lineWidth = halfWidth;
|
|
512
|
+
// First stroke (outer)
|
|
513
|
+
if (gradient) {
|
|
514
|
+
ctx.strokeStyle = this.createGradient(ctx, gradient, x, y, x + textWidth, y);
|
|
515
|
+
}
|
|
516
|
+
else {
|
|
517
|
+
ctx.strokeStyle = color || '#000000';
|
|
518
|
+
}
|
|
519
|
+
ctx.strokeText(text, x, y);
|
|
520
|
+
// Second stroke (inner)
|
|
521
|
+
ctx.lineWidth = halfWidth;
|
|
522
|
+
if (gradient) {
|
|
523
|
+
ctx.strokeStyle = this.createGradient(ctx, gradient, x, y, x + textWidth, y);
|
|
524
|
+
}
|
|
525
|
+
else {
|
|
526
|
+
ctx.strokeStyle = color || '#000000';
|
|
527
|
+
}
|
|
528
|
+
ctx.strokeText(text, x, y);
|
|
529
|
+
break;
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
/**
|
|
533
|
+
* Darkens a color by a factor
|
|
534
|
+
* @param color - Color string
|
|
535
|
+
* @param factor - Darkening factor (0-1)
|
|
536
|
+
* @returns Darkened color string
|
|
537
|
+
*/
|
|
538
|
+
static darkenColor(color, factor) {
|
|
539
|
+
// Simple darkening for hex colors
|
|
540
|
+
if (color.startsWith('#')) {
|
|
541
|
+
const hex = color.slice(1);
|
|
542
|
+
const num = parseInt(hex, 16);
|
|
543
|
+
const r = Math.max(0, Math.floor((num >> 16) * (1 - factor)));
|
|
544
|
+
const g = Math.max(0, Math.floor(((num >> 8) & 0x00FF) * (1 - factor)));
|
|
545
|
+
const b = Math.max(0, Math.floor((num & 0x0000FF) * (1 - factor)));
|
|
546
|
+
return `#${((r << 16) | (g << 8) | b).toString(16).padStart(6, '0')}`;
|
|
547
|
+
}
|
|
548
|
+
return color; // Return original for non-hex colors
|
|
549
|
+
}
|
|
550
|
+
/**
|
|
551
|
+
* Lightens a color by a factor
|
|
552
|
+
* @param color - Color string
|
|
553
|
+
* @param factor - Lightening factor (0-1)
|
|
554
|
+
* @returns Lightened color string
|
|
555
|
+
*/
|
|
556
|
+
static lightenColor(color, factor) {
|
|
557
|
+
// Simple lightening for hex colors
|
|
558
|
+
if (color.startsWith('#')) {
|
|
559
|
+
const hex = color.slice(1);
|
|
560
|
+
const num = parseInt(hex, 16);
|
|
561
|
+
const r = Math.min(255, Math.floor((num >> 16) + (255 - (num >> 16)) * factor));
|
|
562
|
+
const g = Math.min(255, Math.floor(((num >> 8) & 0x00FF) + (255 - ((num >> 8) & 0x00FF)) * factor));
|
|
563
|
+
const b = Math.min(255, Math.floor((num & 0x0000FF) + (255 - (num & 0x0000FF)) * factor));
|
|
564
|
+
return `#${((r << 16) | (g << 8) | b).toString(16).padStart(6, '0')}`;
|
|
565
|
+
}
|
|
566
|
+
return color; // Return original for non-hex colors
|
|
567
|
+
}
|
|
363
568
|
}
|
|
364
569
|
exports.EnhancedTextRenderer = EnhancedTextRenderer;
|
|
365
570
|
//# sourceMappingURL=enhancedTextRenderer.js.map
|