apexify.js 4.2.10 → 4.3.0

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.
@@ -88,6 +88,7 @@ export interface ImageProperties {
88
88
  y?: number;
89
89
  isFilled?: boolean;
90
90
  color?: string;
91
+ opacity?: number;
91
92
  gradient?: {
92
93
  type?: 'linear' | 'radial';
93
94
  startX?: number;
@@ -103,11 +104,26 @@ export interface ImageProperties {
103
104
  };
104
105
  rotation?: number;
105
106
  borderRadius?: number | "circular";
107
+ borderPosition?: 'all' | 'top' | 'left' | 'right' | 'bottom';
106
108
  stroke?: {
107
109
  color?: string;
108
110
  width?: number;
109
111
  position?: number;
110
112
  borderRadius?: number | "circular";
113
+ borderPosition?: 'all' | 'top' | 'left' | 'right' | 'bottom';
114
+ gradient?: {
115
+ type: 'linear' | 'radial';
116
+ startX?: number;
117
+ startY?: number;
118
+ endX?: number;
119
+ endY?: number;
120
+ startRadius?: number;
121
+ endRadius?: number;
122
+ colors: {
123
+ stop: number;
124
+ color: string;
125
+ }[];
126
+ };
111
127
  };
112
128
  shadow?: {
113
129
  color?: string;
@@ -116,6 +132,7 @@ export interface ImageProperties {
116
132
  blur?: number;
117
133
  opacity?: number;
118
134
  borderRadius?: number | "circular";
135
+ borderPosition?: 'all' | 'top' | 'left' | 'right' | 'bottom';
119
136
  };
120
137
  }
121
138
  export interface TextObject {
@@ -155,6 +172,19 @@ export interface TextObject {
155
172
  stroke?: {
156
173
  color?: string;
157
174
  width?: number;
175
+ gradient?: {
176
+ type: 'linear' | 'radial';
177
+ startX?: number;
178
+ startY?: number;
179
+ endX?: number;
180
+ endY?: number;
181
+ startRadius?: number;
182
+ endRadius?: number;
183
+ colors: {
184
+ stop: number;
185
+ color: string;
186
+ }[];
187
+ };
158
188
  };
159
189
  rotation?: number;
160
190
  opacity?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../lib/canvas/utils/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../lib/canvas/utils/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../lib/canvas/utils/types.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAoDF,CAAC;AA6DD,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../lib/canvas/utils/types.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAoDF,CAAC;AA2ED,CAAC"}
@@ -503,7 +503,7 @@ export class ApexPainter {
503
503
  }
504
504
 
505
505
  private async drawImage(ctx: any, image: ImageProperties): Promise<void> {
506
- const { source, x, y, width, height, rotation, borderRadius, stroke, shadow, isFilled, color, gradient } = image;
506
+ const { source, x, y, width, height, rotation, borderRadius, stroke, shadow, isFilled, color, gradient, borderPosition, opacity } = image;
507
507
 
508
508
  if (!source || typeof x !== 'number' || typeof y !== 'number' || typeof width !== 'number' || typeof height !== 'number') {
509
509
  throw new Error('Invalid image properties');
@@ -514,6 +514,10 @@ export class ApexPainter {
514
514
  const shapeNames = ['circle', 'square', 'triangle', 'pentagon', 'hexagon', 'heptagon', 'octagon', 'star', 'kite'];
515
515
  const isShape = shapeNames.includes(source.toLowerCase());
516
516
 
517
+ if (opacity) {
518
+ ctx.globalAlpha = opacity;
519
+ }
520
+
517
521
  if (source.startsWith('http')) {
518
522
  const response = await fetch(source);
519
523
  if (!response.ok) {
@@ -522,7 +526,7 @@ export class ApexPainter {
522
526
  const buffer = await response.arrayBuffer();
523
527
  img = await loadImage(Buffer.from(buffer));
524
528
  } else if (isShape) {
525
- drawShape(ctx, { source, x, y, width, height, rotation, borderRadius, stroke, shadow, isFilled, color, gradient });
529
+ drawShape(ctx, { source, x, y, width, height, rotation, borderRadius, stroke, shadow, isFilled, color, gradient, borderPosition });
526
530
  } else {
527
531
  const imagePath = path.join(process.cwd(), source);
528
532
  try {
@@ -536,7 +540,7 @@ export class ApexPainter {
536
540
  ctx.save();
537
541
  applyRotation(ctx, rotation || 0, x, y, width, height);
538
542
  applyShadow(ctx, shadow, x, y, width, height);
539
- imageRadius(ctx, img, x, y, width, height, borderRadius || 0);
543
+ imageRadius(ctx, img, x, y, width, height, borderRadius || 0, borderPosition);
540
544
  applyStroke(ctx, stroke, x, y, width, height);
541
545
  ctx.restore();
542
546
  } else {
@@ -544,8 +548,11 @@ export class ApexPainter {
544
548
  throw new Error('Invalid image source or shape name');
545
549
  }
546
550
  }
551
+
547
552
  } catch (error: any) {
548
553
  throw new Error(error.message);
554
+ } finally {
555
+ ctx.globalAlpha = 1.0;
549
556
  }
550
557
  }
551
558
 
@@ -24,7 +24,7 @@ export function applyShadow(ctx: any, shadow: ImageProperties['shadow'], x: numb
24
24
  const shadowY =
25
25
  y + (shadow.offsetY || 0);
26
26
 
27
- objectRadius(ctx, shadowX, shadowY, width, height, shadow.borderRadius || 2)
27
+ objectRadius(ctx, shadowX, shadowY, width, height, shadow.borderRadius || 2, shadow.borderPosition)
28
28
 
29
29
  ctx.fillStyle = shadow.color || "transparent";
30
30
  ctx.fill();
@@ -47,36 +47,37 @@ export function applyShadow(ctx: any, shadow: ImageProperties['shadow'], x: numb
47
47
  * @param width The width of the shape.
48
48
  * @param height The height of the shape.
49
49
  */
50
- export function applyStroke(ctx: any, stroke: ImageProperties['stroke'], x: number, y: number, width: number, height: number, gradient?: any): void {
51
- ctx.save();
50
+ export function applyStroke(ctx: any, stroke: ImageProperties['stroke'], x: number, y: number, width: number, height: number): void {
51
+ ctx.save();
52
52
 
53
- if (stroke) {
54
- if (gradient) {
55
- const gradientFill = createGradient(
56
- ctx,
57
- gradient,
58
- x,
59
- y,
60
- x + width,
61
- y + height,
62
- );
63
- ctx.strokeStyle = gradientFill;
64
- } else {
65
- ctx.strokeStyle = stroke.color || "transparent";
66
- }
67
- ctx.lineWidth = stroke.width || 0;
53
+ if (stroke) {
54
+ if (stroke.gradient) {
55
+ const gradientFill = createGradient(
56
+ ctx,
57
+ stroke.gradient,
58
+ x,
59
+ y,
60
+ x + width,
61
+ y + height
62
+ );
63
+ ctx.strokeStyle = gradientFill;
64
+ } else {
65
+ ctx.strokeStyle = stroke.color || "transparent";
66
+ }
68
67
 
69
- const adjustedX = x - (stroke.position || 0);
70
- const adjustedY = y - (stroke.position || 0);
71
- const adjustedWidth = width + (stroke.position || 0) * 2;
72
- const adjustedHeight = height + (stroke.position || 0) * 2;
68
+ ctx.lineWidth = stroke.width || 0;
73
69
 
74
- objectRadius(ctx, adjustedX, adjustedY, adjustedWidth, adjustedHeight, stroke.borderRadius || 2);
70
+ const adjustedX = x - (stroke.position || 0);
71
+ const adjustedY = y - (stroke.position || 0);
72
+ const adjustedWidth = width + (stroke.position || 0) * 2;
73
+ const adjustedHeight = height + (stroke.position || 0) * 2;
75
74
 
76
- ctx.stroke();
77
- }
75
+ objectRadius(ctx, adjustedX, adjustedY, adjustedWidth, adjustedHeight, stroke.borderRadius || 2, stroke.borderPosition);
78
76
 
79
- ctx.restore();
77
+ ctx.stroke();
78
+ }
79
+
80
+ ctx.restore();
80
81
  }
81
82
 
82
83
  /**
@@ -85,7 +86,7 @@ export function applyStroke(ctx: any, stroke: ImageProperties['stroke'], x: numb
85
86
  * @param shapeSettings The settings for the shape.
86
87
  */
87
88
  export function drawShape(ctx: any, shapeSettings: any) {
88
- const { source, x, y, width, height, rotation, borderRadius, stroke, shadow, isFilled, color, gradient } = shapeSettings;
89
+ const { source, x, y, width, height, rotation, borderRadius, borderPosition, stroke, shadow, isFilled, color, gradient } = shapeSettings;
89
90
 
90
91
  const shapeName = source.toLowerCase();
91
92
 
@@ -192,7 +193,7 @@ export function drawShape(ctx: any, shapeSettings: any) {
192
193
  }
193
194
  if (isFilled) {
194
195
  if (borderRadius) {
195
- objectRadius(ctx, x, y, width, height, borderRadius);
196
+ objectRadius(ctx, x, y, width, height, borderRadius, borderPosition);
196
197
  if (gradient) {
197
198
  const gradientFill = createGradient(
198
199
  ctx,
@@ -229,6 +230,7 @@ export function drawShape(ctx: any, shapeSettings: any) {
229
230
  ctx.fill()
230
231
  }
231
232
  }
233
+ applyStroke(ctx, stroke, x, y, width, height);
232
234
  } else {
233
235
  if (gradient) {
234
236
  const gradientFill = createGradient(
@@ -241,64 +243,73 @@ export function drawShape(ctx: any, shapeSettings: any) {
241
243
  );
242
244
  ctx.fillStyle = gradientFill;
243
245
  }
244
- applyStroke(ctx, stroke, x, y, width, height, gradient);
246
+ applyStroke(ctx, stroke, x, y, width, height);
245
247
  }
246
248
 
247
249
  ctx.restore();
248
250
  }
249
251
 
250
252
  export function createGradient(ctx: any, gradientOptions: any, startX: number, startY: number, endX: number, endY: number) {
251
- if (!gradientOptions || !gradientOptions.type) {
252
- throw new Error(
253
- "Invalid gradient options. Provide a valid object with a type property.",
254
- );
255
- }
253
+ if (!gradientOptions || !gradientOptions.type || !gradientOptions.colors) {
254
+ throw new Error("Invalid gradient options. Provide a valid object with type and colors properties.");
255
+ }
256
256
 
257
- if (gradientOptions.type === "linear") {
258
- if (
259
- typeof startX !== "number" ||
260
- typeof startY !== "number" ||
261
- typeof endX !== "number" ||
262
- typeof endY !== "number"
263
- ) {
264
- throw new Error(
265
- "Invalid gradient options for linear gradient. Numeric values are required for startX, startY, endX, and endY.",
266
- );
267
- }
268
- } else if (gradientOptions.type === "radial") {
269
- if (
270
- typeof gradientOptions.startX !== "number" ||
271
- typeof gradientOptions.startY !== "number" ||
272
- typeof gradientOptions.startRadius !== "number" ||
273
- typeof gradientOptions.endX !== "number" ||
274
- typeof gradientOptions.endY !== "number" ||
275
- typeof gradientOptions.endRadius !== "number"
276
- ) {
277
- throw new Error(
278
- "Invalid gradient options for radial gradient. Numeric values are required for startX, startY, startRadius, endX, endY, and endRadius.",
279
- );
280
- }
281
- } else {
282
- throw new Error('Unsupported gradient type. Use "linear" or "radial".');
283
- }
257
+ if (!Array.isArray(gradientOptions.colors)) {
258
+ throw new Error("Invalid gradient options. The colors property should be an array of color stops.");
259
+ }
284
260
 
285
- const gradient =
286
- gradientOptions.type === "linear"
287
- ? ctx.createLinearGradient(startX, startY, endX, endY)
288
- : ctx.createRadialGradient(
289
- gradientOptions.startX,
290
- gradientOptions.startY,
291
- gradientOptions.startRadius,
292
- gradientOptions.endX,
293
- gradientOptions.endY,
294
- gradientOptions.endRadius,
295
- );
296
-
297
- for (const colorStop of gradientOptions.colors) {
298
- gradient.addColorStop(colorStop.stop, colorStop.color);
299
- }
261
+ if (gradientOptions.type === "linear") {
262
+ if (
263
+ typeof startX !== "number" ||
264
+ typeof startY !== "number" ||
265
+ typeof endX !== "number" ||
266
+ typeof endY !== "number"
267
+ ) {
268
+ throw new Error("Invalid gradient options for linear gradient. Numeric values are required for startX, startY, endX, and endY.");
269
+ }
270
+ const gradient = ctx.createLinearGradient(startX, startY, endX, endY);
271
+
272
+ for (const colorStop of gradientOptions.colors) {
273
+ if (typeof colorStop.stop !== "number" || typeof colorStop.color !== "string") {
274
+ throw new Error("Invalid color stop. Each color stop should have a numeric stop value and a color string.");
275
+ }
276
+ gradient.addColorStop(colorStop.stop, colorStop.color);
277
+ }
278
+
279
+ return gradient;
280
+
281
+ } else if (gradientOptions.type === "radial") {
282
+ if (
283
+ typeof gradientOptions.startX !== "number" ||
284
+ typeof gradientOptions.startY !== "number" ||
285
+ typeof gradientOptions.startRadius !== "number" ||
286
+ typeof gradientOptions.endX !== "number" ||
287
+ typeof gradientOptions.endY !== "number" ||
288
+ typeof gradientOptions.endRadius !== "number"
289
+ ) {
290
+ throw new Error("Invalid gradient options for radial gradient. Numeric values are required for startX, startY, startRadius, endX, endY, and endRadius.");
291
+ }
292
+ const gradient = ctx.createRadialGradient(
293
+ gradientOptions.startX,
294
+ gradientOptions.startY,
295
+ gradientOptions.startRadius,
296
+ gradientOptions.endX,
297
+ gradientOptions.endY,
298
+ gradientOptions.endRadius
299
+ );
300
+
301
+ for (const colorStop of gradientOptions.colors) {
302
+ if (typeof colorStop.stop !== "number" || typeof colorStop.color !== "string") {
303
+ throw new Error("Invalid color stop. Each color stop should have a numeric stop value and a color string.");
304
+ }
305
+ gradient.addColorStop(colorStop.stop, colorStop.color);
306
+ }
307
+
308
+ return gradient;
300
309
 
301
- return gradient;
310
+ } else {
311
+ throw new Error('Unsupported gradient type. Use "linear" or "radial".');
312
+ }
302
313
  }
303
314
 
304
315
 
@@ -330,8 +341,9 @@ export function applyRotation(ctx: any, rotation: number, x: number, y: number,
330
341
  * @param width The width of the shape.
331
342
  * @param height The height of the shape.
332
343
  * @param borderRadius The border radius value.
344
+ * @param borderPosition The border radius position to be applied on.
333
345
  */
334
- export function imageRadius(ctx: any, image: any, x: number, y: number, width: number, height: number, borderRadius: any ): void {
346
+ export function imageRadius(ctx: any, image: any, x: number, y: number, width: number, height: number, borderRadius: any, borderPosition: string = 'all'): void {
335
347
  ctx.save();
336
348
  ctx.beginPath();
337
349
 
@@ -361,6 +373,9 @@ export function imageRadius(ctx: any, image: any, x: number, y: number, width: n
361
373
  ctx.restore();
362
374
  }
363
375
 
376
+
377
+
378
+
364
379
  /**
365
380
  * Applies border radius to the canvas context for objects.
366
381
  * @param ctx The canvas rendering context.
@@ -369,8 +384,9 @@ export function imageRadius(ctx: any, image: any, x: number, y: number, width: n
369
384
  * @param width The width of the object.
370
385
  * @param height The height of the object.
371
386
  * @param borderRadius The border radius value.
387
+ * @param borderPosition The border radius position to be applied on.
372
388
  */
373
- export function objectRadius(ctx: any, x: any, y: any, width: number, height: number, borderRadius: any = 0.1): void {
389
+ export function objectRadius(ctx: any, x: any, y: any, width: number, height: number, borderRadius: any = 0.1, borderPosition: string = 'all'): void {
374
390
  ctx.save();
375
391
  if (borderRadius === "circular") {
376
392
  const circleRadius = Math.min(width, height) / 2;
@@ -7,9 +7,10 @@ import { TextObject } from "./types";
7
7
  */
8
8
  export function drawText(ctx: any, textOptions: TextObject, size: any) {
9
9
  ctx.save();
10
-
10
+
11
+ // Apply rotation if specified
11
12
  if (textOptions.rotation && textOptions.rotation !== 0) {
12
- ctx.translate(textOptions.x || 0, textOptions?.y || 0);
13
+ ctx.translate(textOptions.x || 0, textOptions.y || 0);
13
14
  ctx.rotate(textOptions.rotation * Math.PI / 180);
14
15
  }
15
16
 
@@ -17,79 +18,75 @@ export function drawText(ctx: any, textOptions: TextObject, size: any) {
17
18
  ctx.textAlign = textOptions.textAlign || 'left';
18
19
  ctx.textBaseline = textOptions.textBaseline || 'alphabetic';
19
20
 
21
+ // Apply shadow
20
22
  if (textOptions.shadow) {
21
23
  const { color, offsetX, offsetY, blur, opacity } = textOptions.shadow;
22
24
  ctx.shadowColor = color || "transparent";
23
25
  ctx.shadowOffsetX = offsetX || 0;
24
26
  ctx.shadowOffsetY = offsetY || 0;
25
27
  ctx.shadowBlur = blur || 0;
26
- ctx.globalAlpha = opacity || null;
28
+ ctx.globalAlpha = opacity || 1;
27
29
  }
28
30
 
29
- if (textOptions.opacity) {
30
- if (textOptions.opacity > 1 || textOptions.opacity < 0) throw new Error("Text opacity Error: the value can't be smaller than 0 or bigger than 1.")
31
+ // Apply opacity
32
+ if (textOptions.opacity !== undefined) {
33
+ if (textOptions.opacity > 1 || textOptions.opacity < 0)
34
+ throw new Error("Text opacity Error: the value can't be smaller than 0 or bigger than 1.");
31
35
  ctx.globalAlpha = textOptions.opacity;
32
36
  }
33
37
 
34
-
35
- if (textOptions.outlined) {
36
- ctx.strokeStyle = textOptions.stroke && textOptions.stroke.color ? textOptions.stroke.color : textOptions.color;
37
- ctx.lineWidth = textOptions.stroke && textOptions.stroke.width ? textOptions.stroke.width : 1;
38
+ const textWidth = ctx.measureText(textOptions.text).width;
39
+ const textHeight = textOptions.fontSize || 16; // Rough estimate for height
40
+
41
+ // Apply gradient fill
42
+ if (textOptions.gradient) {
43
+ const gradientFill = createGradient(
44
+ ctx,
45
+ textOptions.gradient,
46
+ textOptions.x || 0,
47
+ textOptions.y || 0 - textHeight,
48
+ (textOptions.x || 0) + textWidth,
49
+ (textOptions.y || 0)
50
+ );
51
+ console.log("Gradient Fill Created:", gradientFill);
52
+ ctx.fillStyle = gradientFill;
38
53
  } else {
54
+ ctx.fillStyle = textOptions.color || 'darkgray';
55
+ }
39
56
 
40
- if (textOptions.gradient) {
41
- if (textOptions.gradient.type === 'linear') {
42
- const gradient = ctx.createLinearGradient(
43
- textOptions.gradient?.startX || 0,
44
- textOptions.gradient?.startY || 10,
45
- textOptions.gradient?.endX || 20,
46
- textOptions.gradient?.endY || 30
47
- );
48
-
49
- textOptions.gradient.colors.forEach(({ stop, color }) => {
50
- gradient.addColorStop(stop, color);
51
- });
52
-
53
- ctx.fillStyle = gradient;
54
- } else if (textOptions.gradient.type === 'radial') {
55
- const gradient = ctx.createRadialGradient(
56
- textOptions.gradient?.startX || 0,
57
- textOptions.gradient?.startY || 10,
58
- textOptions.gradient?.startRadius || 0,
59
- textOptions.gradient?.endX || 20,
60
- textOptions.gradient?.endY || 30,
61
- textOptions.gradient?.endRadius || 30
62
- );
63
-
64
- textOptions.gradient.colors.forEach(({ stop, color }) => {
65
- gradient.addColorStop(stop, color);
66
- });
67
-
68
- ctx.fillStyle = gradient;
69
- } else {
70
- throw new Error("Error Gradient: Invalid gradient type. Valid types: `radial` or `linear`.")
71
- }
57
+ // Apply stroke with gradient
58
+ if (textOptions.outlined || textOptions.stroke) {
59
+ if (textOptions.stroke?.gradient) {
60
+ const gradientStroke = createGradient(
61
+ ctx,
62
+ textOptions.stroke.gradient,
63
+ textOptions.x || 0,
64
+ textOptions.y || 0 - textHeight,
65
+ (textOptions.x || 0) + textWidth,
66
+ (textOptions.y || 0)
67
+ );
68
+ console.log("Gradient Stroke Created:", gradientStroke);
69
+ ctx.strokeStyle = gradientStroke;
72
70
  } else {
73
- ctx.fillStyle = textOptions.color || 'darkgray';
71
+ ctx.strokeStyle = textOptions.stroke?.color || textOptions.color;
74
72
  }
75
-
73
+ ctx.lineWidth = textOptions.stroke?.width || 1;
74
+ ctx.strokeText(textOptions.text, textOptions.x || 0, textOptions.y || 0);
76
75
  }
77
76
 
77
+ // Draw the text
78
78
  if (textOptions.maxWidth) {
79
79
  WrappedText(ctx, textOptions.text || 'Hello World', textOptions.x || 0, textOptions.y || 0, textOptions.maxWidth, textOptions);
80
80
  } else {
81
- if (textOptions.outlined) {
82
- ctx.strokeText(textOptions.text, textOptions.x, textOptions.y);
81
+ if (!textOptions.rotation) {
82
+ ctx.fillText(textOptions.text, textOptions.x || 0, textOptions.y || 0);
83
83
  } else {
84
- if (!textOptions.rotation) ctx.fillText(textOptions.text, textOptions.x, textOptions.y);
85
- if (textOptions.rotation) ctx.fillText(textOptions.text, 0, 0);
86
-
84
+ ctx.fillText(textOptions.text, 0, 0);
87
85
  }
88
86
  }
89
87
 
90
88
  ctx.restore();
91
89
  }
92
-
93
90
  /**
94
91
  * Draws wrapped text on the canvas context.
95
92
  * @param ctx The canvas rendering context.
@@ -107,11 +104,10 @@ export function WrappedText(ctx: any, text: string, x: number, y: number, maxWid
107
104
 
108
105
  ctx.save();
109
106
 
110
- if (textOptions.outlined) {
111
- ctx.strokeStyle = textOptions.stroke && textOptions.stroke.color ? textOptions.stroke.color : textOptions.color;
112
- ctx.lineWidth = textOptions.stroke && textOptions.stroke.width ? textOptions.stroke.width : 1;
113
- } else {
114
- ctx.fillStyle = textOptions.color || 'darkgray';
107
+ ctx.fillStyle = textOptions.color || 'darkgray';
108
+ if (textOptions.outlined || textOptions.stroke) {
109
+ ctx.strokeStyle = textOptions.stroke?.color || textOptions.color;
110
+ ctx.lineWidth = textOptions.stroke?.width || 1;
115
111
  }
116
112
 
117
113
  if (textOptions.rotation && textOptions.rotation !== 0) {
@@ -128,7 +124,7 @@ export function WrappedText(ctx: any, text: string, x: number, y: number, maxWid
128
124
 
129
125
  if (testWidth > maxWidth && n > 0) {
130
126
  const adjustedY = y + lineHeight;
131
- if (textOptions.outlined) {
127
+ if (textOptions.outlined || textOptions.stroke) {
132
128
  ctx.strokeText(currentLine.trim(), x, adjustedY);
133
129
  } else {
134
130
  ctx.fillText(currentLine.trim(), x, adjustedY);
@@ -141,11 +137,44 @@ export function WrappedText(ctx: any, text: string, x: number, y: number, maxWid
141
137
  }
142
138
 
143
139
  const adjustedY = y + lineHeight;
144
- if (textOptions.outlined) {
140
+ if (textOptions.outlined || textOptions.stroke) {
145
141
  ctx.strokeText(currentLine.trim(), x, adjustedY);
146
142
  } else {
147
143
  ctx.fillText(currentLine.trim(), x, adjustedY);
148
144
  }
149
145
 
150
146
  ctx.restore();
151
- }
147
+ }
148
+
149
+ export function createGradient(ctx: any, gradientOptions: any, startX: number, startY: number, endX: number, endY: number) {
150
+ if (!gradientOptions || !gradientOptions.type || !gradientOptions.colors) {
151
+ throw new Error("Invalid gradient options. Provide a valid object with type and colors properties.");
152
+ }
153
+
154
+ if (!Array.isArray(gradientOptions.colors)) {
155
+ throw new Error("Invalid gradient options. The colors property should be an array of color stops.");
156
+ }
157
+
158
+ let gradient;
159
+ if (gradientOptions.type === "linear") {
160
+ gradient = ctx.createLinearGradient(startX, startY, endX, endY);
161
+ } else if (gradientOptions.type === "radial") {
162
+ gradient = ctx.createRadialGradient(
163
+ gradientOptions.startX || startX,
164
+ gradientOptions.startY || startY,
165
+ gradientOptions.startRadius || 0,
166
+ gradientOptions.endX || endX,
167
+ gradientOptions.endY || endY,
168
+ gradientOptions.endRadius || 0
169
+ );
170
+ } else {
171
+ throw new Error('Unsupported gradient type. Use "linear" or "radial".');
172
+ }
173
+
174
+ for (const colorStop of gradientOptions.colors) {
175
+ console.log(`Adding color stop: ${colorStop.stop} ${colorStop.color}`);
176
+ gradient.addColorStop(colorStop.stop, colorStop.color);
177
+ }
178
+
179
+ return gradient;
180
+ }