apexify.js 5.2.2 → 5.2.6
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/CHANGELOG.md +173 -4
- package/README.md +66 -0
- package/dist/cjs/Canvas/ApexPainter.d.ts +191 -4
- package/dist/cjs/Canvas/ApexPainter.d.ts.map +1 -1
- package/dist/cjs/Canvas/ApexPainter.js +201 -96
- package/dist/cjs/Canvas/ApexPainter.js.map +1 -1
- package/dist/cjs/Canvas/extended/CanvasCreator.d.ts.map +1 -1
- package/dist/cjs/Canvas/extended/CanvasCreator.js +3 -18
- package/dist/cjs/Canvas/extended/CanvasCreator.js.map +1 -1
- package/dist/cjs/Canvas/extended/GIFCreator.d.ts +15 -3
- package/dist/cjs/Canvas/extended/GIFCreator.d.ts.map +1 -1
- package/dist/cjs/Canvas/extended/GIFCreator.js +107 -9
- package/dist/cjs/Canvas/extended/GIFCreator.js.map +1 -1
- package/dist/cjs/Canvas/extended/HitDetectionCreator.d.ts +148 -0
- package/dist/cjs/Canvas/extended/HitDetectionCreator.d.ts.map +1 -0
- package/dist/cjs/Canvas/extended/HitDetectionCreator.js +294 -0
- package/dist/cjs/Canvas/extended/HitDetectionCreator.js.map +1 -0
- package/dist/cjs/Canvas/extended/ImageCreator.d.ts +3 -2
- package/dist/cjs/Canvas/extended/ImageCreator.d.ts.map +1 -1
- package/dist/cjs/Canvas/extended/ImageCreator.js +43 -4
- package/dist/cjs/Canvas/extended/ImageCreator.js.map +1 -1
- package/dist/cjs/Canvas/extended/Path2DCreator.d.ts +166 -0
- package/dist/cjs/Canvas/extended/Path2DCreator.d.ts.map +1 -0
- package/dist/cjs/Canvas/extended/Path2DCreator.js +246 -0
- package/dist/cjs/Canvas/extended/Path2DCreator.js.map +1 -0
- package/dist/cjs/Canvas/extended/PixelDataCreator.d.ts +69 -0
- package/dist/cjs/Canvas/extended/PixelDataCreator.d.ts.map +1 -0
- package/dist/cjs/Canvas/extended/PixelDataCreator.js +232 -0
- package/dist/cjs/Canvas/extended/PixelDataCreator.js.map +1 -0
- package/dist/cjs/Canvas/extended/TextCreator.d.ts.map +1 -1
- package/dist/cjs/Canvas/extended/TextCreator.js +0 -7
- package/dist/cjs/Canvas/extended/TextCreator.js.map +1 -1
- package/dist/cjs/Canvas/extended/TextMetricsCreator.d.ts +18 -0
- package/dist/cjs/Canvas/extended/TextMetricsCreator.d.ts.map +1 -0
- package/dist/cjs/Canvas/extended/TextMetricsCreator.js +194 -0
- package/dist/cjs/Canvas/extended/TextMetricsCreator.js.map +1 -0
- package/dist/cjs/Canvas/extended/VideoCreator.d.ts.map +1 -1
- package/dist/cjs/Canvas/extended/VideoCreator.js +1 -42
- package/dist/cjs/Canvas/extended/VideoCreator.js.map +1 -1
- package/dist/cjs/Canvas/utils/Background/bg.d.ts.map +1 -1
- package/dist/cjs/Canvas/utils/Background/bg.js +2 -15
- package/dist/cjs/Canvas/utils/Background/bg.js.map +1 -1
- package/dist/cjs/Canvas/utils/Charts/barchart.d.ts.map +1 -1
- package/dist/cjs/Canvas/utils/Charts/barchart.js +32 -277
- package/dist/cjs/Canvas/utils/Charts/barchart.js.map +1 -1
- package/dist/cjs/Canvas/utils/Charts/comparisonchart.d.ts.map +1 -1
- package/dist/cjs/Canvas/utils/Charts/comparisonchart.js +0 -41
- package/dist/cjs/Canvas/utils/Charts/comparisonchart.js.map +1 -1
- package/dist/cjs/Canvas/utils/Charts/horizontalbarchart.d.ts.map +1 -1
- package/dist/cjs/Canvas/utils/Charts/horizontalbarchart.js +42 -241
- package/dist/cjs/Canvas/utils/Charts/horizontalbarchart.js.map +1 -1
- package/dist/cjs/Canvas/utils/Charts/linechart.d.ts.map +1 -1
- package/dist/cjs/Canvas/utils/Charts/linechart.js +16 -148
- package/dist/cjs/Canvas/utils/Charts/linechart.js.map +1 -1
- package/dist/cjs/Canvas/utils/Charts/piechart.d.ts.map +1 -1
- package/dist/cjs/Canvas/utils/Charts/piechart.js +21 -117
- package/dist/cjs/Canvas/utils/Charts/piechart.js.map +1 -1
- package/dist/cjs/Canvas/utils/Custom/advancedLines.d.ts.map +1 -1
- package/dist/cjs/Canvas/utils/Custom/advancedLines.js +3 -16
- package/dist/cjs/Canvas/utils/Custom/advancedLines.js.map +1 -1
- package/dist/cjs/Canvas/utils/Custom/customLines.d.ts.map +1 -1
- package/dist/cjs/Canvas/utils/Custom/customLines.js +0 -7
- package/dist/cjs/Canvas/utils/Custom/customLines.js.map +1 -1
- package/dist/cjs/Canvas/utils/General/batchOperations.d.ts.map +1 -1
- package/dist/cjs/Canvas/utils/General/batchOperations.js +0 -4
- package/dist/cjs/Canvas/utils/General/batchOperations.js.map +1 -1
- package/dist/cjs/Canvas/utils/General/conversion.d.ts.map +1 -1
- package/dist/cjs/Canvas/utils/General/conversion.js.map +1 -1
- package/dist/cjs/Canvas/utils/General/general functions.d.ts.map +1 -1
- package/dist/cjs/Canvas/utils/General/general functions.js +0 -19
- package/dist/cjs/Canvas/utils/General/general functions.js.map +1 -1
- package/dist/cjs/Canvas/utils/General/imageCompression.d.ts.map +1 -1
- package/dist/cjs/Canvas/utils/General/imageCompression.js +0 -18
- package/dist/cjs/Canvas/utils/General/imageCompression.js.map +1 -1
- package/dist/cjs/Canvas/utils/General/imageStitching.d.ts.map +1 -1
- package/dist/cjs/Canvas/utils/General/imageStitching.js +0 -14
- package/dist/cjs/Canvas/utils/General/imageStitching.js.map +1 -1
- package/dist/cjs/Canvas/utils/Image/imageEffects.d.ts.map +1 -1
- package/dist/cjs/Canvas/utils/Image/imageEffects.js +8 -16
- package/dist/cjs/Canvas/utils/Image/imageEffects.js.map +1 -1
- package/dist/cjs/Canvas/utils/Image/imageFilters.js +12 -30
- package/dist/cjs/Canvas/utils/Image/imageFilters.js.map +1 -1
- package/dist/cjs/Canvas/utils/Image/imageMasking.d.ts.map +1 -1
- package/dist/cjs/Canvas/utils/Image/imageMasking.js +0 -22
- package/dist/cjs/Canvas/utils/Image/imageMasking.js.map +1 -1
- package/dist/cjs/Canvas/utils/Image/imageProperties.d.ts.map +1 -1
- package/dist/cjs/Canvas/utils/Image/imageProperties.js +2 -37
- package/dist/cjs/Canvas/utils/Image/imageProperties.js.map +1 -1
- package/dist/cjs/Canvas/utils/Image/professionalImageFilters.d.ts.map +1 -1
- package/dist/cjs/Canvas/utils/Image/professionalImageFilters.js +6 -23
- package/dist/cjs/Canvas/utils/Image/professionalImageFilters.js.map +1 -1
- package/dist/cjs/Canvas/utils/Image/simpleProfessionalFilters.d.ts.map +1 -1
- package/dist/cjs/Canvas/utils/Image/simpleProfessionalFilters.js +7 -16
- package/dist/cjs/Canvas/utils/Image/simpleProfessionalFilters.js.map +1 -1
- package/dist/cjs/Canvas/utils/Patterns/enhancedPatternRenderer.d.ts.map +1 -1
- package/dist/cjs/Canvas/utils/Patterns/enhancedPatternRenderer.js +1 -16
- package/dist/cjs/Canvas/utils/Patterns/enhancedPatternRenderer.js.map +1 -1
- package/dist/cjs/Canvas/utils/Shapes/shapes.d.ts.map +1 -1
- package/dist/cjs/Canvas/utils/Shapes/shapes.js +120 -39
- package/dist/cjs/Canvas/utils/Shapes/shapes.js.map +1 -1
- package/dist/cjs/Canvas/utils/Texts/enhancedTextRenderer.d.ts.map +1 -1
- package/dist/cjs/Canvas/utils/Texts/enhancedTextRenderer.js +5 -58
- package/dist/cjs/Canvas/utils/Texts/enhancedTextRenderer.js.map +1 -1
- package/dist/cjs/Canvas/utils/Texts/textPathRenderer.d.ts.map +1 -1
- package/dist/cjs/Canvas/utils/Texts/textPathRenderer.js +1 -4
- package/dist/cjs/Canvas/utils/Texts/textPathRenderer.js.map +1 -1
- package/dist/cjs/Canvas/utils/Texts/textProperties.d.ts.map +1 -1
- package/dist/cjs/Canvas/utils/Texts/textProperties.js +0 -18
- package/dist/cjs/Canvas/utils/Texts/textProperties.js.map +1 -1
- package/dist/cjs/Canvas/utils/Video/videoHelpers.d.ts.map +1 -1
- package/dist/cjs/Canvas/utils/Video/videoHelpers.js +9 -110
- package/dist/cjs/Canvas/utils/Video/videoHelpers.js.map +1 -1
- package/dist/cjs/Canvas/utils/types.d.ts +136 -1
- package/dist/cjs/Canvas/utils/types.d.ts.map +1 -1
- package/dist/cjs/Canvas/utils/types.js.map +1 -1
- package/dist/cjs/Canvas/utils/utils.d.ts +4 -2
- package/dist/cjs/Canvas/utils/utils.d.ts.map +1 -1
- 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 +191 -4
- package/dist/esm/Canvas/ApexPainter.d.ts.map +1 -1
- package/dist/esm/Canvas/ApexPainter.js +201 -96
- package/dist/esm/Canvas/ApexPainter.js.map +1 -1
- package/dist/esm/Canvas/extended/CanvasCreator.d.ts.map +1 -1
- package/dist/esm/Canvas/extended/CanvasCreator.js +3 -18
- package/dist/esm/Canvas/extended/CanvasCreator.js.map +1 -1
- package/dist/esm/Canvas/extended/GIFCreator.d.ts +15 -3
- package/dist/esm/Canvas/extended/GIFCreator.d.ts.map +1 -1
- package/dist/esm/Canvas/extended/GIFCreator.js +107 -9
- package/dist/esm/Canvas/extended/GIFCreator.js.map +1 -1
- package/dist/esm/Canvas/extended/HitDetectionCreator.d.ts +148 -0
- package/dist/esm/Canvas/extended/HitDetectionCreator.d.ts.map +1 -0
- package/dist/esm/Canvas/extended/HitDetectionCreator.js +294 -0
- package/dist/esm/Canvas/extended/HitDetectionCreator.js.map +1 -0
- package/dist/esm/Canvas/extended/ImageCreator.d.ts +3 -2
- package/dist/esm/Canvas/extended/ImageCreator.d.ts.map +1 -1
- package/dist/esm/Canvas/extended/ImageCreator.js +43 -4
- package/dist/esm/Canvas/extended/ImageCreator.js.map +1 -1
- package/dist/esm/Canvas/extended/Path2DCreator.d.ts +166 -0
- package/dist/esm/Canvas/extended/Path2DCreator.d.ts.map +1 -0
- package/dist/esm/Canvas/extended/Path2DCreator.js +246 -0
- package/dist/esm/Canvas/extended/Path2DCreator.js.map +1 -0
- package/dist/esm/Canvas/extended/PixelDataCreator.d.ts +69 -0
- package/dist/esm/Canvas/extended/PixelDataCreator.d.ts.map +1 -0
- package/dist/esm/Canvas/extended/PixelDataCreator.js +232 -0
- package/dist/esm/Canvas/extended/PixelDataCreator.js.map +1 -0
- package/dist/esm/Canvas/extended/TextCreator.d.ts.map +1 -1
- package/dist/esm/Canvas/extended/TextCreator.js +0 -7
- package/dist/esm/Canvas/extended/TextCreator.js.map +1 -1
- package/dist/esm/Canvas/extended/TextMetricsCreator.d.ts +18 -0
- package/dist/esm/Canvas/extended/TextMetricsCreator.d.ts.map +1 -0
- package/dist/esm/Canvas/extended/TextMetricsCreator.js +194 -0
- package/dist/esm/Canvas/extended/TextMetricsCreator.js.map +1 -0
- package/dist/esm/Canvas/extended/VideoCreator.d.ts.map +1 -1
- package/dist/esm/Canvas/extended/VideoCreator.js +1 -42
- package/dist/esm/Canvas/extended/VideoCreator.js.map +1 -1
- package/dist/esm/Canvas/utils/Background/bg.d.ts.map +1 -1
- package/dist/esm/Canvas/utils/Background/bg.js +2 -15
- package/dist/esm/Canvas/utils/Background/bg.js.map +1 -1
- package/dist/esm/Canvas/utils/Charts/barchart.d.ts.map +1 -1
- package/dist/esm/Canvas/utils/Charts/barchart.js +32 -277
- package/dist/esm/Canvas/utils/Charts/barchart.js.map +1 -1
- package/dist/esm/Canvas/utils/Charts/comparisonchart.d.ts.map +1 -1
- package/dist/esm/Canvas/utils/Charts/comparisonchart.js +0 -41
- package/dist/esm/Canvas/utils/Charts/comparisonchart.js.map +1 -1
- package/dist/esm/Canvas/utils/Charts/horizontalbarchart.d.ts.map +1 -1
- package/dist/esm/Canvas/utils/Charts/horizontalbarchart.js +42 -241
- package/dist/esm/Canvas/utils/Charts/horizontalbarchart.js.map +1 -1
- package/dist/esm/Canvas/utils/Charts/linechart.d.ts.map +1 -1
- package/dist/esm/Canvas/utils/Charts/linechart.js +16 -148
- package/dist/esm/Canvas/utils/Charts/linechart.js.map +1 -1
- package/dist/esm/Canvas/utils/Charts/piechart.d.ts.map +1 -1
- package/dist/esm/Canvas/utils/Charts/piechart.js +21 -117
- package/dist/esm/Canvas/utils/Charts/piechart.js.map +1 -1
- package/dist/esm/Canvas/utils/Custom/advancedLines.d.ts.map +1 -1
- package/dist/esm/Canvas/utils/Custom/advancedLines.js +3 -16
- package/dist/esm/Canvas/utils/Custom/advancedLines.js.map +1 -1
- package/dist/esm/Canvas/utils/Custom/customLines.d.ts.map +1 -1
- package/dist/esm/Canvas/utils/Custom/customLines.js +0 -7
- package/dist/esm/Canvas/utils/Custom/customLines.js.map +1 -1
- package/dist/esm/Canvas/utils/General/batchOperations.d.ts.map +1 -1
- package/dist/esm/Canvas/utils/General/batchOperations.js +0 -4
- package/dist/esm/Canvas/utils/General/batchOperations.js.map +1 -1
- package/dist/esm/Canvas/utils/General/conversion.d.ts.map +1 -1
- package/dist/esm/Canvas/utils/General/conversion.js.map +1 -1
- package/dist/esm/Canvas/utils/General/general functions.d.ts.map +1 -1
- package/dist/esm/Canvas/utils/General/general functions.js +0 -19
- package/dist/esm/Canvas/utils/General/general functions.js.map +1 -1
- package/dist/esm/Canvas/utils/General/imageCompression.d.ts.map +1 -1
- package/dist/esm/Canvas/utils/General/imageCompression.js +0 -18
- package/dist/esm/Canvas/utils/General/imageCompression.js.map +1 -1
- package/dist/esm/Canvas/utils/General/imageStitching.d.ts.map +1 -1
- package/dist/esm/Canvas/utils/General/imageStitching.js +0 -14
- package/dist/esm/Canvas/utils/General/imageStitching.js.map +1 -1
- package/dist/esm/Canvas/utils/Image/imageEffects.d.ts.map +1 -1
- package/dist/esm/Canvas/utils/Image/imageEffects.js +8 -16
- package/dist/esm/Canvas/utils/Image/imageEffects.js.map +1 -1
- package/dist/esm/Canvas/utils/Image/imageFilters.js +12 -30
- package/dist/esm/Canvas/utils/Image/imageFilters.js.map +1 -1
- package/dist/esm/Canvas/utils/Image/imageMasking.d.ts.map +1 -1
- package/dist/esm/Canvas/utils/Image/imageMasking.js +0 -22
- package/dist/esm/Canvas/utils/Image/imageMasking.js.map +1 -1
- package/dist/esm/Canvas/utils/Image/imageProperties.d.ts.map +1 -1
- package/dist/esm/Canvas/utils/Image/imageProperties.js +2 -37
- package/dist/esm/Canvas/utils/Image/imageProperties.js.map +1 -1
- package/dist/esm/Canvas/utils/Image/professionalImageFilters.d.ts.map +1 -1
- package/dist/esm/Canvas/utils/Image/professionalImageFilters.js +6 -23
- package/dist/esm/Canvas/utils/Image/professionalImageFilters.js.map +1 -1
- package/dist/esm/Canvas/utils/Image/simpleProfessionalFilters.d.ts.map +1 -1
- package/dist/esm/Canvas/utils/Image/simpleProfessionalFilters.js +7 -16
- package/dist/esm/Canvas/utils/Image/simpleProfessionalFilters.js.map +1 -1
- package/dist/esm/Canvas/utils/Patterns/enhancedPatternRenderer.d.ts.map +1 -1
- package/dist/esm/Canvas/utils/Patterns/enhancedPatternRenderer.js +1 -16
- package/dist/esm/Canvas/utils/Patterns/enhancedPatternRenderer.js.map +1 -1
- package/dist/esm/Canvas/utils/Shapes/shapes.d.ts.map +1 -1
- package/dist/esm/Canvas/utils/Shapes/shapes.js +120 -39
- package/dist/esm/Canvas/utils/Shapes/shapes.js.map +1 -1
- package/dist/esm/Canvas/utils/Texts/enhancedTextRenderer.d.ts.map +1 -1
- package/dist/esm/Canvas/utils/Texts/enhancedTextRenderer.js +5 -58
- package/dist/esm/Canvas/utils/Texts/enhancedTextRenderer.js.map +1 -1
- package/dist/esm/Canvas/utils/Texts/textPathRenderer.d.ts.map +1 -1
- package/dist/esm/Canvas/utils/Texts/textPathRenderer.js +1 -4
- package/dist/esm/Canvas/utils/Texts/textPathRenderer.js.map +1 -1
- package/dist/esm/Canvas/utils/Texts/textProperties.d.ts.map +1 -1
- package/dist/esm/Canvas/utils/Texts/textProperties.js +0 -18
- package/dist/esm/Canvas/utils/Texts/textProperties.js.map +1 -1
- package/dist/esm/Canvas/utils/Video/videoHelpers.d.ts.map +1 -1
- package/dist/esm/Canvas/utils/Video/videoHelpers.js +9 -110
- package/dist/esm/Canvas/utils/Video/videoHelpers.js.map +1 -1
- package/dist/esm/Canvas/utils/types.d.ts +136 -1
- package/dist/esm/Canvas/utils/types.d.ts.map +1 -1
- package/dist/esm/Canvas/utils/types.js.map +1 -1
- package/dist/esm/Canvas/utils/utils.d.ts +4 -2
- package/dist/esm/Canvas/utils/utils.d.ts.map +1 -1
- package/dist/esm/Canvas/utils/utils.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +1 -3
package/CHANGELOG.md
CHANGED
|
@@ -5,7 +5,176 @@ All notable changes to Apexify.js will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
-
## [5.2.
|
|
8
|
+
## [5.2.5] - 2025-12-27
|
|
9
|
+
|
|
10
|
+
### ✨ Added
|
|
11
|
+
|
|
12
|
+
##### Advanced Text Metrics API ⭐ NEW!
|
|
13
|
+
- **Comprehensive Text Measurement** (`measureText`): Complete text metrics matching Canvas API + extensions
|
|
14
|
+
- Standard Canvas API metrics: `width`, `actualBoundingBoxAscent/Descent`, `actualBoundingBoxLeft/Right`, `fontBoundingBoxAscent/Descent`
|
|
15
|
+
- Advanced Canvas API metrics: `alphabeticBaseline`, `emHeightAscent/Descent`, `hangingBaseline`, `ideographicBaseline` (when available)
|
|
16
|
+
- Enhanced Apexify.js metrics: `height`, `lineHeight`, `baseline`, `top`, `bottom`, `centerX`, `centerY`
|
|
17
|
+
- Multi-line support: `lines`, `totalHeight`, `lineCount` when `maxWidth` is provided
|
|
18
|
+
- Character-level metrics: `charWidths`, `charPositions` when `includeCharMetrics` is true
|
|
19
|
+
- Full font support: custom fonts, bold, italic, letter spacing, word spacing
|
|
20
|
+
- Perfect for dynamic layouts, text centering, and precise text positioning
|
|
21
|
+
|
|
22
|
+
##### Advanced Pixel Data API ⭐ NEW!
|
|
23
|
+
- **Pixel Manipulation** (`getPixelData`, `setPixelData`): Complete pixel-level control
|
|
24
|
+
- Get pixel data from any region: `getPixelData(canvasBuffer, { x, y, width, height })`
|
|
25
|
+
- Set pixel data back to canvas: `setPixelData(canvasBuffer, pixelData, { x, y })`
|
|
26
|
+
- Access RGBA values directly: `pixelData.data` (Uint8ClampedArray)
|
|
27
|
+
- Full Canvas ImageData compatibility
|
|
28
|
+
|
|
29
|
+
- **Pixel Manipulation Filters** (`manipulatePixels`): Advanced pixel processing
|
|
30
|
+
- Custom processor functions: `processor: (r, g, b, a, x, y) => [r, g, b, a]`
|
|
31
|
+
- Built-in filters: `grayscale`, `invert`, `sepia`, `brightness`, `contrast`, `saturate`
|
|
32
|
+
- Intensity control for all filters (0-1)
|
|
33
|
+
- Region-specific manipulation: Apply filters to specific areas
|
|
34
|
+
- Perfect for custom effects, color adjustments, and advanced image processing
|
|
35
|
+
|
|
36
|
+
- **Pixel Color Utilities** (`getPixelColor`, `setPixelColor`): Quick pixel access
|
|
37
|
+
- Get pixel color at coordinates: `getPixelColor(canvasBuffer, x, y)`
|
|
38
|
+
- Set pixel color at coordinates: `setPixelColor(canvasBuffer, x, y, { r, g, b, a })`
|
|
39
|
+
- Convenient helpers for pixel-level operations
|
|
40
|
+
|
|
41
|
+
##### Advanced Path2D API ⭐ NEW!
|
|
42
|
+
- **Path Creation** (`createPath2D`): Create complex paths from commands
|
|
43
|
+
- Full Canvas Path2D compatibility
|
|
44
|
+
- Comprehensive command set: `moveTo`, `lineTo`, `arc`, `arcTo`, `bezierCurveTo`, `quadraticCurveTo`, `rect`, `ellipse`, `closePath`
|
|
45
|
+
- Advanced shape commands: `circle`, `roundedRect` (with per-corner radius), `polygon`, `star`, `arrow`
|
|
46
|
+
- Build complex paths programmatically with type-safe command arrays
|
|
47
|
+
- Perfect for complex shapes, custom graphics, and advanced path manipulation
|
|
48
|
+
|
|
49
|
+
- **Path Drawing** (`drawPath`): Draw paths with advanced styling options
|
|
50
|
+
- Stroke options: color, width, lineCap, lineJoin, miterLimit, dashArray, dashOffset, opacity
|
|
51
|
+
- Fill options: color, opacity, fill rule (nonzero/evenodd)
|
|
52
|
+
- Transform support: translate, rotate, scale with custom origin point
|
|
53
|
+
- Full integration with Apexify.js styling system
|
|
54
|
+
- Works with both Path2D objects and command arrays
|
|
55
|
+
|
|
56
|
+
##### Advanced Hit Detection API ⭐ NEW!
|
|
57
|
+
- **Point-in-Path Detection** (`isPointInPath`): Check if point is inside a Path2D object
|
|
58
|
+
- Detect hits in fill area and stroke edges
|
|
59
|
+
- Configurable stroke width for stroke detection
|
|
60
|
+
- Tolerance control for edge cases
|
|
61
|
+
- Returns detailed hit information: `hit`, `hitType` ('fill'/'stroke'/'outside'), `distance`
|
|
62
|
+
|
|
63
|
+
- **Custom Region Detection** (`isPointInRegion`, `isPointInAnyRegion`): Advanced region-based hit detection
|
|
64
|
+
- Multiple region types: `rect`, `circle`, `ellipse`, `polygon`, `path`, `custom`
|
|
65
|
+
- Rectangle regions with precise boundary detection
|
|
66
|
+
- Circle and ellipse regions (with rotation support)
|
|
67
|
+
- Polygon regions with any number of points
|
|
68
|
+
- Path2D-based regions for complex shapes
|
|
69
|
+
- Custom function regions: `check: (x, y) => boolean` for any custom logic
|
|
70
|
+
- Multi-region detection: Test point against multiple regions at once
|
|
71
|
+
- Distance calculation: `getDistanceToRegion()` for spatial queries
|
|
72
|
+
- Perfect for interactive graphics, collision detection, and UI elements
|
|
73
|
+
|
|
74
|
+
##### New Shape Types
|
|
75
|
+
- **Arc and PieSlice Shapes**: Added `'arc'` and `'pieSlice'` as new `ShapeType` options
|
|
76
|
+
- Support for drawing arcs and pie slice sectors
|
|
77
|
+
- Configurable start and end angles (in radians)
|
|
78
|
+
- Support for donut slices with `innerRadius`
|
|
79
|
+
- Custom pivot points with `centerX` and `centerY`
|
|
80
|
+
- Full feature support: gradients, shadows, strokes, filters
|
|
81
|
+
- Perfect for roulette wheels, pie charts, and circular segments
|
|
82
|
+
|
|
83
|
+
##### Enhanced GIF Creation with Callbacks
|
|
84
|
+
- **Programmatic Frame Generation** (`onStart` callback): Generate GIF frames using Apexify.js APIs
|
|
85
|
+
- Callback receives frame count and painter instance
|
|
86
|
+
- Generate frames entirely using Apexify.js (`createCanvas`, `createImage`, `createText`, etc.)
|
|
87
|
+
- No file I/O needed - all frames generated in memory
|
|
88
|
+
- Configurable frame count via `frameCount` or `duration` options
|
|
89
|
+
- Perfect for animations, roulette wheels, spinners, and dynamic content
|
|
90
|
+
|
|
91
|
+
- **Static Final Frame Generation** (`onEnd` callback): Automatically generate static image from final frame
|
|
92
|
+
- Receives final frame buffer and painter instance
|
|
93
|
+
- Can process/add effects to final frame
|
|
94
|
+
- Returns both GIF and static image when `onEnd` is provided
|
|
95
|
+
- Perfect for showing "winner" frames or final states
|
|
96
|
+
|
|
97
|
+
##### Group Transform Operations
|
|
98
|
+
- **Grouped Drawing** (`isGrouped` option): Transform multiple elements together as a group
|
|
99
|
+
- Apply rotations, scales, and translations to all elements simultaneously
|
|
100
|
+
- Shared pivot point for rotation and scaling
|
|
101
|
+
- All elements rotate around a common center point (not individual centers)
|
|
102
|
+
- Perfect for roulette wheels, clocks, spinners, and grouped UI elements
|
|
103
|
+
- Used with `createImage()` when passing array of elements
|
|
104
|
+
|
|
105
|
+
### 🔧 Improved
|
|
106
|
+
|
|
107
|
+
##### Text Metrics Enhancements
|
|
108
|
+
- **Customizable Measurement Canvas**: Made measurement canvas size configurable
|
|
109
|
+
- Optional `measurementCanvas` option in `measureText()` for memory optimization
|
|
110
|
+
- Smart auto-calculation based on text length, font size, and wrapping
|
|
111
|
+
- Bounds protection: 1000-10000px width, 500-5000px height
|
|
112
|
+
- Better memory efficiency for large text measurements
|
|
113
|
+
|
|
114
|
+
##### Image Creation Enhancements
|
|
115
|
+
- **Enhanced Shape Property Support**: Properly pass all shape properties through the rendering pipeline
|
|
116
|
+
- Fixed passing of `points` array for custom polygons
|
|
117
|
+
- Fixed passing of `startAngle`, `endAngle` for arcs/pieSlices
|
|
118
|
+
- Fixed passing of `centerX`, `centerY` for custom pivot points
|
|
119
|
+
- All shape properties now correctly propagated to drawing functions
|
|
120
|
+
|
|
121
|
+
##### Group Transform Implementation
|
|
122
|
+
- **Correct Transform Order**: Fixed transformation order in grouped mode
|
|
123
|
+
- Proper order: translate to pivot → rotate → scale → translate → translate back
|
|
124
|
+
- Prevents double rotation and transform conflicts
|
|
125
|
+
- Ensures all elements transform correctly as a single unit
|
|
126
|
+
|
|
127
|
+
##### GIF Creation Workflow
|
|
128
|
+
- **Simplified Animation Creation**: Generate animated GIFs entirely using Apexify.js APIs
|
|
129
|
+
- No need to save frames to files first
|
|
130
|
+
- Generate frames programmatically in memory
|
|
131
|
+
- Cleaner API without direct canvas manipulation
|
|
132
|
+
- Better developer experience for animations
|
|
133
|
+
|
|
134
|
+
### 🐛 Fixed
|
|
135
|
+
|
|
136
|
+
##### Shape Drawing Fixes
|
|
137
|
+
- **Fixed Polygon Default Behavior**: Fixed issue where polygons without `points` were defaulting to hexagon
|
|
138
|
+
- Custom `points` array now properly recognized and used
|
|
139
|
+
- Polygon drawing correctly uses provided points or falls back to regular polygon
|
|
140
|
+
- Fixed white hexagon appearing incorrectly
|
|
141
|
+
|
|
142
|
+
- **Fixed Shape Property Passing**: Fixed shape properties not being passed to drawing functions
|
|
143
|
+
- `points`, `startAngle`, `endAngle`, `centerX`, `centerY` now properly passed through
|
|
144
|
+
- Type definitions updated to include all shape properties
|
|
145
|
+
- Shape rendering now works correctly for all shape types
|
|
146
|
+
|
|
147
|
+
##### Group Transform Fixes
|
|
148
|
+
- **Fixed Double Rotation Bug**: Fixed issue where elements in grouped mode were being rotated twice
|
|
149
|
+
- Elements in grouped mode now have `rotation: 0` to prevent individual rotation
|
|
150
|
+
- Group transform handles all transformations correctly
|
|
151
|
+
- Elements now rotate together as intended
|
|
152
|
+
|
|
153
|
+
- **Fixed Transform Context**: Fixed canvas context state management in grouped transforms
|
|
154
|
+
- Proper `ctx.save()` and `ctx.restore()` usage
|
|
155
|
+
- Transform state correctly isolated per group operation
|
|
156
|
+
- No interference between grouped and individual transforms
|
|
157
|
+
|
|
158
|
+
##### GIF Callback Fixes
|
|
159
|
+
- **Fixed Return Type**: Fixed TypeScript return type for GIF creation with `onEnd` callback
|
|
160
|
+
- Returns `{ gif: Buffer | string, static: Buffer }` when `onEnd` is provided
|
|
161
|
+
- Returns just GIF buffer when `onEnd` is not provided
|
|
162
|
+
- Proper type handling for file output format
|
|
163
|
+
|
|
164
|
+
- **Fixed Frame Count Calculation**: Improved frame count estimation when using `onStart` callback
|
|
165
|
+
- Better default frame count (30 frames)
|
|
166
|
+
- Proper calculation from `duration` and `delay` options
|
|
167
|
+
- More accurate animation timing
|
|
168
|
+
|
|
169
|
+
##### Code Quality Improvements
|
|
170
|
+
- **Comment Cleanup**: Removed descriptive inline comments throughout codebase
|
|
171
|
+
- Cleaned up redundant code comments that don't add value
|
|
172
|
+
- Improved code readability and maintainability
|
|
173
|
+
- Preserved important comments (eslint, TODO, FIXME, JSDoc)
|
|
174
|
+
- Total cleanup: ~58,000 characters removed across 42 files
|
|
175
|
+
- All code functionality preserved, cleaner codebase
|
|
176
|
+
|
|
177
|
+
## [5.2.0] - 2025-12-25
|
|
9
178
|
|
|
10
179
|
### ✨ Added
|
|
11
180
|
|
|
@@ -245,7 +414,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
245
414
|
|
|
246
415
|
---
|
|
247
416
|
|
|
248
|
-
## [5.1.0] -
|
|
417
|
+
## [5.1.0] - 2025-12-20
|
|
249
418
|
|
|
250
419
|
### ✨ Added
|
|
251
420
|
|
|
@@ -410,7 +579,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
410
579
|
|
|
411
580
|
---
|
|
412
581
|
|
|
413
|
-
## [5.0.5] -
|
|
582
|
+
## [5.0.5] - 2025-09-24
|
|
414
583
|
|
|
415
584
|
### ✨ Enhanced
|
|
416
585
|
|
|
@@ -445,7 +614,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
445
614
|
|
|
446
615
|
---
|
|
447
616
|
|
|
448
|
-
## [5.0.0] -
|
|
617
|
+
## [5.0.0] - 2025-08-13
|
|
449
618
|
|
|
450
619
|
### 🎉 Major Feature Release - Advanced Image & Canvas Features
|
|
451
620
|
|
package/README.md
CHANGED
|
@@ -14,6 +14,8 @@
|
|
|
14
14
|
|
|
15
15
|
**The most powerful, all-in-one canvas rendering and image processing library for Node.js**
|
|
16
16
|
|
|
17
|
+
**🚀 Now Even More Advanced: Full Canvas API Compatibility + Advanced Extensions**
|
|
18
|
+
|
|
17
19
|
</div>
|
|
18
20
|
|
|
19
21
|
---
|
|
@@ -34,6 +36,10 @@ While other libraries force you to install multiple packages for different tasks
|
|
|
34
36
|
| **Text Rendering** | ✅ Advanced (gradients, paths, effects) | ❌ Basic only |
|
|
35
37
|
| **Shape Drawing** | ✅ Complex shapes (heart, star, custom) | ❌ Basic shapes only |
|
|
36
38
|
| **Batch Processing** | ✅ Built-in | ❌ Manual implementation |
|
|
39
|
+
| **Text Metrics API** | ✅ Advanced (Canvas API + extensions) | ❌ Not available |
|
|
40
|
+
| **Pixel Data API** | ✅ Advanced (get/set/manipulate) | ❌ Not available |
|
|
41
|
+
| **Path2D API** | ✅ Advanced (full Canvas compatibility) | ⚠️ Basic only |
|
|
42
|
+
| **Hit Detection** | ✅ Advanced (multi-region, custom) | ❌ Not available |
|
|
37
43
|
| **TypeScript Support** | ✅ Full type safety | ⚠️ Partial or none |
|
|
38
44
|
| **Performance** | ✅ Rust-powered (@napi-rs) | ⚠️ JavaScript-only |
|
|
39
45
|
|
|
@@ -44,6 +50,8 @@ While other libraries force you to install multiple packages for different tasks
|
|
|
44
50
|
✅ **Rust-Powered Performance** - Built on @napi-rs/canvas for blazing speed
|
|
45
51
|
✅ **Modular Architecture** - Clean, maintainable codebase
|
|
46
52
|
✅ **Comprehensive Features** - 200+ methods covering every use case
|
|
53
|
+
✅ **Canvas API Compatible** - Full Canvas API support with advanced extensions
|
|
54
|
+
✅ **Advanced APIs** - Text Metrics, Pixel Data, Path2D, Hit Detection
|
|
47
55
|
✅ **Active Development** - Regular updates with new features
|
|
48
56
|
✅ **Production Ready** - Used in production by thousands of projects
|
|
49
57
|
|
|
@@ -118,6 +126,9 @@ While other libraries force you to install multiple packages for different tasks
|
|
|
118
126
|
| **Text Wrapping** | Automatic text wrapping with custom widths |
|
|
119
127
|
| **Text Rotation** | Rotate text at any angle |
|
|
120
128
|
| **Text Spacing** | Letter spacing and line height control |
|
|
129
|
+
| **Text Metrics API** | Advanced text measurement (Canvas API + extensions) |
|
|
130
|
+
| **Character Metrics** | Per-character width and position metrics |
|
|
131
|
+
| **Multi-line Metrics** | Line-by-line text metrics for wrapped text |
|
|
121
132
|
|
|
122
133
|
### 🔷 **Shape Drawing**
|
|
123
134
|
|
|
@@ -131,6 +142,9 @@ While other libraries force you to install multiple packages for different tasks
|
|
|
131
142
|
| **Shape Rotation** | Rotate shapes with custom angles |
|
|
132
143
|
| **Shape Scaling** | Scale shapes with custom factors |
|
|
133
144
|
| **Advanced Strokes** | Groove, ridge, double, inset, outset styles |
|
|
145
|
+
| **Arc & PieSlice** | Draw arcs and pie slice sectors with custom angles |
|
|
146
|
+
| **Path2D API** | Advanced path creation and manipulation |
|
|
147
|
+
| **Hit Detection** | Point-in-shape detection with custom regions |
|
|
134
148
|
|
|
135
149
|
### 📊 **Chart Generation**
|
|
136
150
|
|
|
@@ -195,6 +209,21 @@ While other libraries force you to install multiple packages for different tasks
|
|
|
195
209
|
| **Output Formats** | File, buffer, base64, attachment output |
|
|
196
210
|
| **Quality Control** | Adjust GIF quality and optimization |
|
|
197
211
|
|
|
212
|
+
### 🔬 **Advanced APIs** ⭐ NEW!
|
|
213
|
+
|
|
214
|
+
| Feature | Description |
|
|
215
|
+
|---------|-------------|
|
|
216
|
+
| **Text Metrics API** | Complete text measurement matching Canvas API + extensions |
|
|
217
|
+
| **Pixel Data API** | Direct pixel manipulation (get/set/manipulate pixels) |
|
|
218
|
+
| **Pixel Filters** | Built-in filters (grayscale, invert, sepia, brightness, contrast) |
|
|
219
|
+
| **Custom Pixel Processors** | Custom functions for pixel-level processing |
|
|
220
|
+
| **Path2D API** | Advanced path creation with commands (moveTo, lineTo, arc, bezier, etc.) |
|
|
221
|
+
| **Path Drawing** | Draw paths with stroke, fill, and transform options |
|
|
222
|
+
| **Hit Detection** | Point-in-path and point-in-region detection |
|
|
223
|
+
| **Custom Regions** | Rectangle, circle, ellipse, polygon, path, and custom function regions |
|
|
224
|
+
| **Multi-Region Detection** | Test points against multiple regions simultaneously |
|
|
225
|
+
| **Distance Calculation** | Calculate distances from points to region edges |
|
|
226
|
+
|
|
198
227
|
### 🛠️ **Utilities & Tools**
|
|
199
228
|
|
|
200
229
|
| Feature | Description |
|
|
@@ -252,6 +281,42 @@ const image = await painter.createImage({
|
|
|
252
281
|
width: 200,
|
|
253
282
|
height: 200
|
|
254
283
|
}, canvas);
|
|
284
|
+
|
|
285
|
+
// Advanced: Text Metrics API
|
|
286
|
+
const metrics = await painter.measureText({
|
|
287
|
+
text: 'Hello, World!',
|
|
288
|
+
fontSize: 48,
|
|
289
|
+
fontFamily: 'Arial',
|
|
290
|
+
includeCharMetrics: true
|
|
291
|
+
});
|
|
292
|
+
console.log(`Text width: ${metrics.width}px`);
|
|
293
|
+
|
|
294
|
+
// Advanced: Pixel Data API
|
|
295
|
+
const pixelData = await painter.getPixelData(image.buffer, {
|
|
296
|
+
x: 0, y: 0, width: 100, height: 100
|
|
297
|
+
});
|
|
298
|
+
const processed = await painter.manipulatePixels(image.buffer, {
|
|
299
|
+
filter: 'grayscale',
|
|
300
|
+
intensity: 1.0
|
|
301
|
+
});
|
|
302
|
+
|
|
303
|
+
// Advanced: Path2D API
|
|
304
|
+
const path = painter.createPath2D([
|
|
305
|
+
{ type: 'moveTo', x: 0, y: 0 },
|
|
306
|
+
{ type: 'lineTo', x: 100, y: 100 },
|
|
307
|
+
{ type: 'arc', x: 150, y: 150, radius: 50, startAngle: 0, endAngle: Math.PI }
|
|
308
|
+
]);
|
|
309
|
+
await painter.drawPath(canvas.buffer, path, {
|
|
310
|
+
stroke: { color: '#ff0000', width: 2 },
|
|
311
|
+
fill: { color: '#00ff00', opacity: 0.5 }
|
|
312
|
+
});
|
|
313
|
+
|
|
314
|
+
// Advanced: Hit Detection API
|
|
315
|
+
const hitResult = await painter.isPointInRegion({
|
|
316
|
+
type: 'circle',
|
|
317
|
+
x: 100, y: 100, radius: 50
|
|
318
|
+
}, 120, 120);
|
|
319
|
+
console.log(`Point hit: ${hitResult.hit}`);
|
|
255
320
|
|
|
256
321
|
// Save result
|
|
257
322
|
await painter.save(image, {
|
|
@@ -309,6 +374,7 @@ Create thumbnails, previews, apply effects, transitions, and process videos at s
|
|
|
309
374
|
- **Optimized Algorithms**: Efficient image processing and rendering
|
|
310
375
|
- **Batch Processing**: Process multiple operations in parallel
|
|
311
376
|
- **Memory Efficient**: Smart resource management and cleanup
|
|
377
|
+
- **Canvas API Native**: Direct access to Canvas APIs for maximum performance
|
|
312
378
|
|
|
313
379
|
---
|
|
314
380
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PathLike } from "fs";
|
|
2
|
-
import { OutputFormat, CanvasConfig, TextProperties, ImageProperties, GIFOptions, GIFResults, CustomOptions, cropOptions, GradientConfig, Frame, ExtractFramesOptions, ResizeOptions, MaskOptions, BlendOptions, ImageFilter, BatchOperation, ChainOperation, StitchOptions, CollageLayout, CompressionOptions, PaletteOptions, SaveOptions, SaveResult } from "./utils/utils";
|
|
2
|
+
import { OutputFormat, CanvasConfig, TextProperties, ImageProperties, GIFOptions, GIFResults, CustomOptions, cropOptions, GradientConfig, Frame, ExtractFramesOptions, ResizeOptions, MaskOptions, BlendOptions, ImageFilter, BatchOperation, ChainOperation, StitchOptions, CollageLayout, CompressionOptions, PaletteOptions, SaveOptions, SaveResult, CreateImageOptions, TextMetrics, PixelData, PixelManipulationOptions, PathCommand, Path2DDrawOptions, HitRegion, HitDetectionOptions, HitDetectionResult } from "./utils/utils";
|
|
3
3
|
import { type CanvasResults } from "./extended/CanvasCreator";
|
|
4
4
|
import { VideoCreationOptions } from "./extended/VideoCreator";
|
|
5
5
|
import type { PieSlice, PieChartOptions } from "./utils/Charts/piechart";
|
|
@@ -17,6 +17,10 @@ export declare class ApexPainter {
|
|
|
17
17
|
private chartCreator;
|
|
18
18
|
private videoCreator;
|
|
19
19
|
private videoHelpers;
|
|
20
|
+
private textMetricsCreator;
|
|
21
|
+
private pixelDataCreator;
|
|
22
|
+
private path2DCreator;
|
|
23
|
+
private hitDetectionCreator;
|
|
20
24
|
constructor({ type }?: OutputFormat);
|
|
21
25
|
/**
|
|
22
26
|
* Creates a canvas with the given configuration.
|
|
@@ -92,7 +96,7 @@ export declare class ApexPainter {
|
|
|
92
96
|
* ], canvasBuffer);
|
|
93
97
|
* ```
|
|
94
98
|
*/
|
|
95
|
-
createImage(images: ImageProperties | ImageProperties[], canvasBuffer: CanvasResults | Buffer): Promise<Buffer>;
|
|
99
|
+
createImage(images: ImageProperties | ImageProperties[], canvasBuffer: CanvasResults | Buffer, options?: CreateImageOptions): Promise<Buffer>;
|
|
96
100
|
/**
|
|
97
101
|
* Creates text on an existing canvas buffer with enhanced styling options.
|
|
98
102
|
*
|
|
@@ -148,14 +152,197 @@ export declare class ApexPainter {
|
|
|
148
152
|
* ```
|
|
149
153
|
*/
|
|
150
154
|
createText(textArray: TextProperties | TextProperties[], canvasBuffer: CanvasResults | Buffer): Promise<Buffer>;
|
|
155
|
+
/**
|
|
156
|
+
* Measures text dimensions and properties (advanced text metrics API)
|
|
157
|
+
*
|
|
158
|
+
* @param textProps - Text properties to measure (same as createText)
|
|
159
|
+
* @returns Comprehensive text metrics including width, height, bounding boxes, and more
|
|
160
|
+
*
|
|
161
|
+
* @example
|
|
162
|
+
* ```typescript
|
|
163
|
+
* const metrics = await painter.measureText({
|
|
164
|
+
* text: "Hello World",
|
|
165
|
+
* fontSize: 24,
|
|
166
|
+
* font: { family: 'Arial' },
|
|
167
|
+
* bold: true,
|
|
168
|
+
* includeCharMetrics: true // Get per-character metrics
|
|
169
|
+
* });
|
|
170
|
+
*
|
|
171
|
+
* console.log(metrics.width); // Text width
|
|
172
|
+
* console.log(metrics.height); // Text height
|
|
173
|
+
* console.log(metrics.lines); // Multi-line metrics if maxWidth provided
|
|
174
|
+
*
|
|
175
|
+
* // Optional: Customize measurement canvas size (for memory optimization)
|
|
176
|
+
* const metrics2 = await painter.measureText({
|
|
177
|
+
* text: "Very long text...",
|
|
178
|
+
* fontSize: 24,
|
|
179
|
+
* measurementCanvas: { width: 5000, height: 2000 } // Optional
|
|
180
|
+
* });
|
|
181
|
+
* ```
|
|
182
|
+
*/
|
|
183
|
+
measureText(textProps: TextProperties): Promise<TextMetrics>;
|
|
184
|
+
/**
|
|
185
|
+
* Gets pixel data from a canvas buffer (advanced pixel manipulation API)
|
|
186
|
+
*
|
|
187
|
+
* @param canvasBuffer - Canvas buffer or CanvasResults
|
|
188
|
+
* @param options - Options for pixel data extraction (x, y, width, height)
|
|
189
|
+
* @returns Pixel data with RGBA values
|
|
190
|
+
*
|
|
191
|
+
* @example
|
|
192
|
+
* ```typescript
|
|
193
|
+
* const pixelData = await painter.getPixelData(canvasBuffer, {
|
|
194
|
+
* x: 0, y: 0, width: 100, height: 100
|
|
195
|
+
* });
|
|
196
|
+
*
|
|
197
|
+
* // Access RGBA values
|
|
198
|
+
* const r = pixelData.data[0]; // Red
|
|
199
|
+
* const g = pixelData.data[1]; // Green
|
|
200
|
+
* const b = pixelData.data[2]; // Blue
|
|
201
|
+
* const a = pixelData.data[3]; // Alpha
|
|
202
|
+
* ```
|
|
203
|
+
*/
|
|
204
|
+
getPixelData(canvasBuffer: CanvasResults | Buffer, options?: {
|
|
205
|
+
x?: number;
|
|
206
|
+
y?: number;
|
|
207
|
+
width?: number;
|
|
208
|
+
height?: number;
|
|
209
|
+
}): Promise<PixelData>;
|
|
210
|
+
/**
|
|
211
|
+
* Sets pixel data to a canvas buffer
|
|
212
|
+
*
|
|
213
|
+
* @param canvasBuffer - Canvas buffer or CanvasResults
|
|
214
|
+
* @param pixelData - Pixel data to set (from getPixelData)
|
|
215
|
+
* @param options - Options for setting pixel data (x, y, dirty region)
|
|
216
|
+
* @returns New canvas buffer with updated pixels
|
|
217
|
+
*
|
|
218
|
+
* @example
|
|
219
|
+
* ```typescript
|
|
220
|
+
* // Modify pixels
|
|
221
|
+
* pixelData.data[0] = 255; // Set first pixel to red
|
|
222
|
+
*
|
|
223
|
+
* // Set back to canvas
|
|
224
|
+
* const updated = await painter.setPixelData(canvasBuffer, pixelData, {
|
|
225
|
+
* x: 0, y: 0
|
|
226
|
+
* });
|
|
227
|
+
* ```
|
|
228
|
+
*/
|
|
229
|
+
setPixelData(canvasBuffer: CanvasResults | Buffer, pixelData: PixelData, options?: {
|
|
230
|
+
x?: number;
|
|
231
|
+
y?: number;
|
|
232
|
+
dirtyX?: number;
|
|
233
|
+
dirtyY?: number;
|
|
234
|
+
dirtyWidth?: number;
|
|
235
|
+
dirtyHeight?: number;
|
|
236
|
+
}): Promise<Buffer>;
|
|
237
|
+
/**
|
|
238
|
+
* Manipulates pixels using custom processor or built-in filters (advanced pixel manipulation)
|
|
239
|
+
*
|
|
240
|
+
* @param canvasBuffer - Canvas buffer or CanvasResults
|
|
241
|
+
* @param options - Manipulation options (processor function or filter)
|
|
242
|
+
* @returns New canvas buffer with manipulated pixels
|
|
243
|
+
*
|
|
244
|
+
* @example
|
|
245
|
+
* ```typescript
|
|
246
|
+
* // Custom processor
|
|
247
|
+
* const processed = await painter.manipulatePixels(canvasBuffer, {
|
|
248
|
+
* processor: (r, g, b, a, x, y) => {
|
|
249
|
+
* // Invert colors
|
|
250
|
+
* return [255 - r, 255 - g, 255 - b, a];
|
|
251
|
+
* }
|
|
252
|
+
* });
|
|
253
|
+
*
|
|
254
|
+
* // Built-in filter
|
|
255
|
+
* const grayscale = await painter.manipulatePixels(canvasBuffer, {
|
|
256
|
+
* filter: 'grayscale',
|
|
257
|
+
* intensity: 1.0
|
|
258
|
+
* });
|
|
259
|
+
*
|
|
260
|
+
* // Apply to specific region
|
|
261
|
+
* const region = await painter.manipulatePixels(canvasBuffer, {
|
|
262
|
+
* filter: 'brightness',
|
|
263
|
+
* intensity: 0.8,
|
|
264
|
+
* region: { x: 100, y: 100, width: 200, height: 200 }
|
|
265
|
+
* });
|
|
266
|
+
* ```
|
|
267
|
+
*/
|
|
268
|
+
manipulatePixels(canvasBuffer: CanvasResults | Buffer, options: PixelManipulationOptions): Promise<Buffer>;
|
|
269
|
+
/**
|
|
270
|
+
* Gets pixel color at specific coordinates
|
|
271
|
+
*
|
|
272
|
+
* @param canvasBuffer - Canvas buffer or CanvasResults
|
|
273
|
+
* @param x - X coordinate
|
|
274
|
+
* @param y - Y coordinate
|
|
275
|
+
* @returns RGBA color values
|
|
276
|
+
*
|
|
277
|
+
* @example
|
|
278
|
+
* ```typescript
|
|
279
|
+
* const color = await painter.getPixelColor(canvasBuffer, 100, 200);
|
|
280
|
+
* console.log(color.r, color.g, color.b, color.a);
|
|
281
|
+
* ```
|
|
282
|
+
*/
|
|
283
|
+
getPixelColor(canvasBuffer: CanvasResults | Buffer, x: number, y: number): Promise<{
|
|
284
|
+
r: number;
|
|
285
|
+
g: number;
|
|
286
|
+
b: number;
|
|
287
|
+
a: number;
|
|
288
|
+
}>;
|
|
289
|
+
/**
|
|
290
|
+
* Sets pixel color at specific coordinates
|
|
291
|
+
*
|
|
292
|
+
* @param canvasBuffer - Canvas buffer or CanvasResults
|
|
293
|
+
* @param x - X coordinate
|
|
294
|
+
* @param y - Y coordinate
|
|
295
|
+
* @param color - RGBA color values
|
|
296
|
+
* @returns New canvas buffer
|
|
297
|
+
*
|
|
298
|
+
* @example
|
|
299
|
+
* ```typescript
|
|
300
|
+
* const updated = await painter.setPixelColor(canvasBuffer, 100, 200, {
|
|
301
|
+
* r: 255, g: 0, b: 0, a: 255 // Red pixel
|
|
302
|
+
* });
|
|
303
|
+
* ```
|
|
304
|
+
*/
|
|
305
|
+
setPixelColor(canvasBuffer: CanvasResults | Buffer, x: number, y: number, color: {
|
|
306
|
+
r: number;
|
|
307
|
+
g: number;
|
|
308
|
+
b: number;
|
|
309
|
+
a?: number;
|
|
310
|
+
}): Promise<Buffer>;
|
|
311
|
+
/**
|
|
312
|
+
* Creates a Path2D object from commands (advanced path API)
|
|
313
|
+
*/
|
|
314
|
+
createPath2D(commands: PathCommand[]): any;
|
|
315
|
+
/**
|
|
316
|
+
* Draws a Path2D object onto a canvas buffer
|
|
317
|
+
*/
|
|
318
|
+
drawPath(canvasBuffer: CanvasResults | Buffer, path: any | PathCommand[], options?: Path2DDrawOptions): Promise<Buffer>;
|
|
319
|
+
/**
|
|
320
|
+
* Checks if a point is inside a Path2D object (hit detection)
|
|
321
|
+
*/
|
|
322
|
+
isPointInPath(path: any | PathCommand[], x: number, y: number, options?: HitDetectionOptions): Promise<HitDetectionResult>;
|
|
323
|
+
/**
|
|
324
|
+
* Checks if a point is inside a custom region (advanced hit detection)
|
|
325
|
+
*/
|
|
326
|
+
isPointInRegion(region: HitRegion, x: number, y: number, options?: HitDetectionOptions): Promise<HitDetectionResult>;
|
|
327
|
+
/**
|
|
328
|
+
* Checks if a point is inside any of multiple regions
|
|
329
|
+
*/
|
|
330
|
+
isPointInAnyRegion(regions: HitRegion[], x: number, y: number, options?: HitDetectionOptions): Promise<HitDetectionResult>;
|
|
331
|
+
/**
|
|
332
|
+
* Gets the distance from a point to the nearest edge of a region
|
|
333
|
+
*/
|
|
334
|
+
getDistanceToRegion(region: HitRegion, x: number, y: number): Promise<number>;
|
|
151
335
|
createCustom(options: CustomOptions | CustomOptions[], buffer: CanvasResults | Buffer): Promise<Buffer>;
|
|
152
336
|
createGIF(gifFrames: {
|
|
153
337
|
background: string;
|
|
154
338
|
duration: number;
|
|
155
|
-
}[], options: GIFOptions): Promise<GIFResults | Buffer | string | Array<{
|
|
339
|
+
}[] | undefined, options: GIFOptions): Promise<GIFResults | Buffer | string | Array<{
|
|
156
340
|
attachment: NodeJS.ReadableStream | any;
|
|
157
341
|
name: string;
|
|
158
|
-
}> |
|
|
342
|
+
}> | {
|
|
343
|
+
gif: Buffer | string;
|
|
344
|
+
static: Buffer;
|
|
345
|
+
} | undefined>;
|
|
159
346
|
resize(resizeOptions: ResizeOptions): Promise<Buffer>;
|
|
160
347
|
imgConverter(source: string, newExtension: string): Promise<Buffer>;
|
|
161
348
|
effects(source: string, filters: ImageFilter[]): Promise<Buffer>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApexPainter.d.ts","sourceRoot":"","sources":["../../../lib/Canvas/ApexPainter.ts"],"names":[],"mappings":"AAMA,OAAW,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"ApexPainter.d.ts","sourceRoot":"","sources":["../../../lib/Canvas/ApexPainter.ts"],"names":[],"mappings":"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"}
|