Releases: samizdatco/skia-canvas
Releases · samizdatco/skia-canvas
v0.9.24
Deprecation Warning
This version can no longer be installed via
npm
due to the unsustainable expense of hosting the library on S3. You can still install it directly from this GitHub release via the commands below. Find the section for your OS and machine type and copy/paste the correspondingnpm install …
command into your terminal.Installation commands
Mac (Apple Silicon)
npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.24/skia-canvas-v0.9.24-darwin-arm64.tar.gz
Mac (Intel)
npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.24/skia-canvas-v0.9.24-darwin-x64.tar.gz
Windows (Intel)
npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.24/skia-canvas-v0.9.24-win32-x64.tar.gz
Linux (Intel/AMD; glibc)
npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.24/skia-canvas-v0.9.24-linux-x64.tar.gz
New Features
- Path2D objects now have a read/write
d
property with an SVG representation of the path’s contours and anunwind()
method for converting from even-odd to non-zero winding rules - The
createTexture()
context method returns CanvasTexture objects which can be assigned tofillStyle
orstrokeStyle
- Textures draw either a parallel-lines pattern or one derived from the provided Path2D object and positioning parameters
- The marker used when
setLineDash
is active can now be customized by assigning a Path2D to the context’slineDashMarker
property (default dashing can be restored by assigningnull
) - The marker’s orientation & shape relative to the path being stroked can be controlled by the
lineDashFit
property which defaults to"turn"
but can be set to"move"
(which preserves orientation) or"follow"
(which distorts the marker’s shape to match the contour)
Bugfixes
- Removed use of the
??
operator which is unavailable prior to Node 14 - Prevented a spurious warning on windows incorrectly claiming that the
icudtl.dat
file could not be found
Misc. Improvements
- The Path2D
simplify()
method now takes an optional fill-rule argument - Added support for versions of macOS starting with 10.13 (High Sierra)
v0.9.23
New Features
- Conic béziers can now be drawn to the context or a Path2D with the
conicCurveTo()
method - Text can be converted to a Path2D using the context’s new
outlineText()
method - Path2D objects can now report back on their internal geometry with:
- the
edges
property which contains an array of line-drawing commands describing the path’s individual contours - the
contains()
method which tests whether a given point is on/within the path - the
points()
method which returns an array of[x, y]
pairs at the requested spacing along the curve’s periphery
- the
- A modified copy of a source Path2D can now be created using:
offset()
ortransform()
to shift position or apply a DOMMatrix respectivelyjitter()
to break the path into smaller sections and apply random noise to the segments’ positionsround()
to round off every sharp corner in a path to a particular radiustrim()
to select a percentage-based subsection of the path
- Two similar paths can be ‘tweened’ into a proportional combination of their coordinates using the
interpolate()
method
Bugfixes
- Passing a Path2D argument to the
fill()
orstroke()
method no longer disturbs the context’s ‘current’ path (if one has been created usingbeginPath()
) - The
filter
property will now accept percentage values greater than 999%
Misc. Improvements
- The
newPage()
andsaveAs()
methods now work in the browser, including the ability to save image sequences to a zip archive. The browser’s canvas is still doing all the drawing however, so file export formats will be limited to PNG and JPEG and none of the other Skia-specific extensions will be available. - The file-export methods now accept a
matte
value in their options object which can be used to set the background color for any portions of the canvas that were left semi-transparent - Canvas dimensions are no longer rounded-off to integer values (at least until a bitmap needs to be generated for export)
- Linux builds will now run on some older systems going back to glibc 2.24
v0.9.22
New Features
- Rasterization and file i/o are now handled asynchronously in a background thread. See the discussion of Canvas’s new
async
property for details. - Output files can now be generated at pixel-ratios > 1 for High-DPI screens.
SaveAs
and the other canvas output functions all accept an optionaldensity
argument which is an integer ≥1 and will upscale the image accordingly. The density can also be passed using thefilename
argument by ending the name with an ‘@’ suffix like[email protected]
. - SVG exports can optionally convert text to paths by setting the
outline
argument totrue
.
Breaking Changes
- The canvas functions dealing with rasterization (
toBuffer
,toDataURL
,png
,jpg
,pdf
, andsvg
) and file i/o (saveAs
) are now asynchronous and returnPromise
objects. The old, synchronous behavior is still available on a canvas-by-canvas basis by setting itsasync
property tofalse
. - The optional
quality
argument accepted by the output methods is now a float in the range 0–1 rather than an integer from 0–100. This is consistent with the encoderOptions arg in the spec. Quality now defaults to 0.92 (again, as per the spec) rather than lossless.
Bugfixes
measureText
was reporting zero when asked to measure a string that was entirely made of whitespace. This is still the case for ‘blank‘ lines whentextWrap
is set totrue
but in the default, single-line mode the metrics will now report the width of the whitespace.- Changed the way text rendering was staged so that SVG exports didn’t entirely omit(!) text from their output. As a result,
Context2D
s now use an externalTypesetter
struct to manage layout and rendering.
v0.9.21
New Features
- Now runs on Windows and Apple Silicon Macs.
- Precompiled binaries support Node 10, 12, 14+.
- Image objects can be initialized from PNG, JPEG, GIF, BMP, or ICO data.
- Path2D objects can now be combined using boolean operators and can measure their own bounding boxes.
- Context objects now support
createConicGradient()
. - Image objects now return a promise from their
decode()
method allowing for async loading without theloadImage
helper.
Bugfixes
- Calling
drawImage
with aCanvas
object as the argument now uses a SkiaPict
rather than aDrawable
as the interchange format, meaning it can actually respect the canvas's currentglobalAlpha
andglobalCompositeOperation
state (fixed #6). - Improved some spurious error messages when trying to generate a graphics file from a canvas whose width and/or height was set to zero (fixed #5).
CanvasPattern
s now respect theimageSmoothingEnabled
setting- The
counterclockwise
arg toellipse
andarc
is now correctly treated as optional.
Misc. Improvements
- Made the
console.log
representations of the canvas-related objects friendlier. - Added new test suites for
Path2D
,Image
, andCanvas
’s format support. - Created workflows to automate precompiled binary builds, testing, and npm package updating.
v0.9.20
skia-canvas 0.9.20
v0.9.19
skia-canvas 0.9.19
v0.9.18
skia-canvas 0.9.18
v0.9.17
skia-canvas 0.9.17