apexify.js 4.9.27 → 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.
Files changed (32) hide show
  1. package/README.md +672 -377
  2. package/dist/cjs/Canvas/ApexPainter.d.ts.map +1 -1
  3. package/dist/cjs/Canvas/ApexPainter.js +169 -2
  4. package/dist/cjs/Canvas/ApexPainter.js.map +1 -1
  5. package/dist/cjs/Canvas/utils/Image/imageProperties.d.ts.map +1 -1
  6. package/dist/cjs/Canvas/utils/Image/imageProperties.js +181 -2
  7. package/dist/cjs/Canvas/utils/Image/imageProperties.js.map +1 -1
  8. package/dist/cjs/Canvas/utils/Texts/enhancedTextRenderer.d.ts +33 -0
  9. package/dist/cjs/Canvas/utils/Texts/enhancedTextRenderer.d.ts.map +1 -1
  10. package/dist/cjs/Canvas/utils/Texts/enhancedTextRenderer.js +237 -32
  11. package/dist/cjs/Canvas/utils/Texts/enhancedTextRenderer.js.map +1 -1
  12. package/dist/cjs/Canvas/utils/types.d.ts +50 -10
  13. package/dist/cjs/Canvas/utils/types.d.ts.map +1 -1
  14. package/dist/cjs/Canvas/utils/types.js.map +1 -1
  15. package/dist/esm/Canvas/ApexPainter.d.ts.map +1 -1
  16. package/dist/esm/Canvas/ApexPainter.js +169 -2
  17. package/dist/esm/Canvas/ApexPainter.js.map +1 -1
  18. package/dist/esm/Canvas/utils/Image/imageProperties.d.ts.map +1 -1
  19. package/dist/esm/Canvas/utils/Image/imageProperties.js +181 -2
  20. package/dist/esm/Canvas/utils/Image/imageProperties.js.map +1 -1
  21. package/dist/esm/Canvas/utils/Texts/enhancedTextRenderer.d.ts +33 -0
  22. package/dist/esm/Canvas/utils/Texts/enhancedTextRenderer.d.ts.map +1 -1
  23. package/dist/esm/Canvas/utils/Texts/enhancedTextRenderer.js +237 -32
  24. package/dist/esm/Canvas/utils/Texts/enhancedTextRenderer.js.map +1 -1
  25. package/dist/esm/Canvas/utils/types.d.ts +50 -10
  26. package/dist/esm/Canvas/utils/types.d.ts.map +1 -1
  27. package/dist/esm/Canvas/utils/types.js.map +1 -1
  28. package/lib/Canvas/ApexPainter.ts +192 -2
  29. package/lib/Canvas/utils/Image/imageProperties.ts +207 -2
  30. package/lib/Canvas/utils/Texts/enhancedTextRenderer.ts +274 -36
  31. package/lib/Canvas/utils/types.ts +52 -10
  32. 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
- ctx.stroke();
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;IA8BrF;;;;OAIG;mBACkB,kBAAkB;IASvC;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAcnC;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,SAAS;IAyBxB;;;;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;IAqB9B;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;IAqBzB;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAuB3B;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IA0B3B;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;IAoBzB;;;;;;;;;OASG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAoDhC;;;;;;;;;OASG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;CAmC9B"}
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
- if (textProps.fontPath) {
23
- await this.registerCustomFont(textProps.fontPath, textProps.fontName || 'customFont');
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
- const fontSize = textProps.fontSize || 16;
81
- const fontFamily = textProps.fontName || textProps.fontFamily || 'Arial';
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
- ctx.fillStyle = highlight.color || '#ffff00';
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
- ctx.shadowColor = glow.color || '#ffffff';
221
- ctx.shadowBlur = intensity;
222
- ctx.globalAlpha = opacity;
223
- ctx.fillText(text, x, y);
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
- ctx.lineWidth = stroke.width || 1;
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
- ctx.strokeText(text, x, y);
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
- if (!textProps.underline && !textProps.overline && !textProps.strikethrough) {
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 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;
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
- ctx.beginPath();
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
- ctx.beginPath();
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
- ctx.beginPath();
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