Skip to content

Releases: samizdatco/skia-canvas

v0.9.24

18 Aug 20:58
Compare
Choose a tag to compare

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 corresponding npm 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 an unwind() method for converting from even-odd to non-zero winding rules
  • The createTexture() context method returns CanvasTexture objects which can be assigned to fillStyle or strokeStyle
  • 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’s lineDashMarker property (default dashing can be restored by assigning null)
  • 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

12 Jul 17:50
Compare
Choose a tag to compare

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
  • A modified copy of a source Path2D can now be created using:
    • offset() or transform() to shift position or apply a DOMMatrix respectively
    • jitter() to break the path into smaller sections and apply random noise to the segments’ positions
    • round() to round off every sharp corner in a path to a particular radius
    • trim() 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() or stroke() method no longer disturbs the context’s ‘current’ path (if one has been created using beginPath())
  • The filter property will now accept percentage values greater than 999%

Misc. Improvements

  • The newPage() and saveAs() 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

10 Jun 02:10
Compare
Choose a tag to compare

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 optional density argument which is an integer ≥1 and will upscale the image accordingly. The density can also be passed using the filename argument by ending the name with an ‘@’ suffix like [email protected].
  • SVG exports can optionally convert text to paths by setting the outline argument to true.

Breaking Changes

  • The canvas functions dealing with rasterization (toBuffer, toDataURL, png, jpg, pdf, and svg) and file i/o (saveAs) are now asynchronous and return Promise objects. The old, synchronous behavior is still available on a canvas-by-canvas basis by setting its async property to false.
  • 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 when textWrap is set to true 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, Context2Ds now use an external Typesetter struct to manage layout and rendering.

v0.9.21

22 May 17:56
8408313
Compare
Choose a tag to compare

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 the loadImage helper.

Bugfixes

  • Calling drawImage with a Canvas object as the argument now uses a Skia Pict rather than a Drawable as the interchange format, meaning it can actually respect the canvas's current globalAlpha and globalCompositeOperation 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).
  • CanvasPatterns now respect the imageSmoothingEnabled setting
  • The counterclockwise arg to ellipse and arc 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, and Canvas’s format support.
  • Created workflows to automate precompiled binary builds, testing, and npm package updating.

v0.9.20

27 Mar 23:32
Compare
Choose a tag to compare

skia-canvas 0.9.20

v0.9.19

30 Aug 17:03
Compare
Choose a tag to compare
v0.9.19 Pre-release
Pre-release

skia-canvas 0.9.19

v0.9.18

27 Aug 20:16
Compare
Choose a tag to compare
v0.9.18 Pre-release
Pre-release

skia-canvas 0.9.18

v0.9.17

27 Aug 19:22
Compare
Choose a tag to compare
v0.9.17 Pre-release
Pre-release

skia-canvas 0.9.17