Skip to content

Latest commit

 

History

History
1052 lines (818 loc) · 34 KB

CHANGELOG.md

File metadata and controls

1052 lines (818 loc) · 34 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

(Unreleased)

Changed

Added

Fixed

2.11.2

Fixed

  • Building on Windows in CI (and maybe other Windows configurations?) (#2216)

2.11.1

Fixed

  • Add missing property canvas to the CanvasRenderingContext2D type
  • Fixed glyph positions getting rounded, resulting text having a slight letter-spacing effect
  • Fixed ctx.font not being restored correctly after ctx.restore() (#1946)

2.11.0

Fixed

  • Replace triple-slash directive in types with own types to avoid polluting TS modules with globals (#1656)

2.10.2

Fixed

  • Fix Assertion failed: (object->InternalFieldCount() > 0), function Unwrap, file nan_object_wrap.h, line 32. (#2025)
  • textBaseline and textAlign were not saved/restored by save()/restore(). (#1936)
  • Update nan to v2.17.0 to ensure Node.js v18+ support.

Changed

  • Improve performance and memory usage of save()/restore().
  • save()/restore() no longer have a maximum depth (previously 64 states).

2.10.1

Fixed

  • Fix actualBoundingBoxLeft and actualBoundingBoxRight when textAlign='center' or 'right' (#1909)
  • Fix rgba(r,g,b,0) with alpha to 0 should parse as transparent, not opaque. (#2110)

2.10.0

Added

Fixed

  • rgba(r,g,b) with no alpha should parse as opaque, not transparent. (#2029)
  • Typo in PngConfig.filters types. (#2072)
  • createPattern() always used "repeat" mode; now supports "repeat-x" and "repeat-y". (#2066)
  • Crashes and hangs when using non-finite values in context.arc(). (#2055)
  • Incorrect context.arc() geometry logic for full ellipses. (#1808, (#1736))
  • Added missing deregisterAllFonts to the Typescript declaration file (#2096)
  • Add User-Agent header when requesting remote images (#2099)

2.9.3

Fixed

  • Wrong fonts used when calling registerFont multiple times with the same family name (#2041)

2.9.2

Fixed

  • All exports now work when Canvas is used in ES Modules (ESM). (#2047)
  • npm rebuild will now re-fetch prebuilt binaries to avoid NODE_MODULE_VERSION mismatch errors. (#1982)

2.9.1

Fixed

  • Stringify CanvasGradient, CanvasPattern and ImageData like browsers do. (#1639, #1646)
  • Add missing include for toupper.
  • Throw an error instead of crashing the process if getImageData or putImageData is called on a PDF or SVG canvas (#1853)
  • Compatibility with Typescript 4.6
  • Near-perfect font matching on Linux (#1572)
  • Fix multi-byte font path support on Windows.
  • Allow rebuild of this library

2.9.0

Changed

  • Refactor functions to classes.
  • Changed DOMPoint() constructor to check for parameter nullability.
  • Changed DOMMatrix.js to use string literals for non-special cases.
  • Remove semicolons from Dommatrix.js.
  • Update nan to v2.15.0 to ensure Node.js v14+ support.
  • Clean up inf/nan macros and slightly speed up argument checking.

Added

  • Added deregisterAllFonts method to free up memory and reduce font conflicts.

Fixed

  • Support Apple M1 Homebrew install that puts canvas install library files in /opt/homebrew/lib

2.8.0

Changed

  • Upgrade dtslint
  • Upgrade node-pre-gyp to 1.0.0. Note that if you are using special node-pre-gyp features like node_pre_gyp_accessKeyId, you may need to make changes to your installation procedure. See https://github.com/mapbox/node-pre-gyp/blob/master/CHANGELOG.md#100.
  • Add Node.js v16 to CI.
  • The C++ class method nBytes() now returns a size_t. (Because this is a C++ method only, this is not considered a breaking change.)

Added

  • Add support for inverse() and invertSelf() to DOMMatrix (#1648)
  • Add support for context.getTransform() (#1769)
  • Add support for context.setTransform(dommatrix) (#1769)

Fixed

  • Fix actualBoundingBoxLeft and actualBoundingBoxRight returned by measureText to be the ink rect (#1776, fixes #1703).
  • Fix Pango logging "expect ugly output" on Windows (#1643)
  • Fix benchmark for createPNGStream (#1672)
  • Fix dangling reference in BackendOperationNotAvailable exception (#1740)
  • Fix always-false comparison warning in Canvas.cc.
  • Fix Node.js crash when throwing from an onload or onerror handler.

2.7.0

Changed

  • Switch CI to Github Actions. (Adds Windows and macOS builds.)
  • Switch prebuilds to GitHub actions in the Automattic/node-canvas repository. Previously these were in the node-gfx/node-canvas-prebuilt and triggered manually.
  • Speed up fillStyle= and strokeStyle=

Added

  • Export rsvgVersion.
  • CanvasPattern’s setTransform method is no longer missing

Fixed

  • Fix BMP issues. (#1497)
  • Update typings to support jpg and addPage on NodeCanvasRenderingContext2D (#1509)
  • Fix assertion failure when using Visual Studio Code debugger to inspect Image prototype (#1534)
  • Fix signed/unsigned comparison warning introduced in 2.6.0, and function cast warnings with GCC8+
  • Fix to compile without JPEG support (#1593).
  • Fix compile errors with cairo
  • Fix Image#complete if the image failed to load.
  • Upgrade node-pre-gyp to v0.15.0 to use latest version of needle to fix error when downloading prebuilds.
  • Don't throw if fillStyle or strokeStyle is set to an object, but that object is not a Gradient or Pattern. (This behavior was non-standard: invalid inputs are supposed to be ignored.)

2.6.1

Fixed

  • Ignore maxWidth in fillText and strokeText if it is undefined
  • Fix crash (assertion failure) in Node.js 12.x when patterns or gradients are used
  • Fix crash (check failure) in Node.js 12.x when using RGB16_565 format. (The underlying arraybuffer was incorrectly sized.)
  • Fix rendering error when applying shadow width line style (lineCap lineJoin lineDash)

2.6.0

Changed

  • Allow larger buffers to be returned from toBuffer('raw').

Added

  • Support for various BMP headers and color depths (#1435)

Fixed

  • Fix crash when changing canvas width/height while fillStyle or strokeStyle was set to a CanvasPattern or CanvasGradient (#1357).
  • Fix crash when changing width/height of SVG canvases (#1380).
  • Fix crash when using toBuffer('raw') with large canvases (#1158).
  • Clarified meaning of byte ordering for toBuffer('raw') in readme. (#1416)
  • Fix package.json Typings field to point to Declaration file (#1432)
  • Properly check return value from Set and Call. (#1415)
  • Use Get version from Nan instead of v8. (#1415)

2.5.0

Added

  • Support redirects when fetching images (using simple-get) (#1398)
  • Support Node.js v12

Fixed

  • Fix object literal & arrow function syntax usage for IE.

2.4.1

Fixed

  • Guard JPEG width/height against maximum supported (#1385)
  • Fix electron 5 and node 12 compatibility
  • Fix encoding options (quality) parameter in canvas.toDataURL()

2.4.0

Added

  • (Actually) added resolution option for canvas.toBuffer("image/png") and canvas.createPNGStream(). This was documented since 2.0.0 but not working.
  • Add typescript definitions.

Fixed

  • PDF metadata (added in 2.3.0) wasn't being set with canvas.createPDFStream()
  • Fix custom "inspect" function deprecation warnings (#1326)

2.3.1

Fixed

  • Fix canvas.toBuffer() for JPEGs (#1350)

2.3.0

Added

  • Add support for multiple PDF page sizes
  • Add support for embedding document metadata in PDFs

Fixed

  • Don't crash when font string is invalid (bug since 2.2.0) (#1328)
  • Fix memory leak in canvas.toBuffer() (#1202, #1296)
  • Fix memory leak in ctx.font= (#1202)

2.2.0

Added

  • BMP support

Fixed

  • Reset context on resurface (#1292)
  • Support Jest test framework (#1311)

2.1.0

Added

  • Warn when building with old, unsupported versions of cairo or libjpeg.

2.0.0

Upgrading from 1.x

// (1) The Canvas constructor is no longer the default export from the module.
/* old: */
const Canvas = require('canvas')
const mycanvas = new Canvas(width, height)
/* new: */
const { createCanvas, Canvas } = require('canvas')
const mycanvas = createCanvas(width, height)
mycanvas instanceof Canvas // true

/* old: */
const Canvas = require('canvas')
const myimg = new Canvas.Image()
/* new: */
const { Image } = require('canvas')
const myimg = new Image()

// (2) The quality argument for canvas.createJPEGStream/canvas.jpegStream now
//     goes from 0 to 1 instead of from 0 to 100:
canvas.createJPEGStream({ quality: 50 }) // old
canvas.createJPEGStream({ quality: 0.5 }) // new

// (3) The ZLIB compression level and PNG filter options for canvas.toBuffer are
//     now named instead of positional arguments:
canvas.toBuffer(undefined, 3, canvas.PNG_FILTER_NONE) // old
canvas.toBuffer(undefined, { compressionLevel: 3, filters: canvas.PNG_FILTER_NONE }) // new
// or specify the mime type explicitly:
canvas.toBuffer('image/png', { compressionLevel: 3, filters: canvas.PNG_FILTER_NONE }) // new

// (4) #2 also applies for canvas.pngStream, although these arguments were not
//     documented:
canvas.pngStream(3, canvas.PNG_FILTER_NONE) // old
canvas.pngStream({ compressionLevel: 3, filters: canvas.PNG_FILTER_NONE }) // new

// (5) canvas.syncPNGStream() and canvas.syncJPEGStream() have been removed:
canvas.syncPNGStream() // old
canvas.createSyncPNGStream() // old
canvas.createPNGStream() // new

canvas.syncJPEGStream() // old
canvas.createSyncJPEGStream() // old
canvas.createJPEGStream() // new

// (6) Context2d.filter has been renamed to context2d.quality to avoid a
//     conflict with the new standard 'filter' property.
context.filter = 'best' // old
context.quality = 'best' // new

Breaking

  • Drop support for Node.js <6.x
  • Remove sync stream functions (bc53059). Note that most streams are still synchronous (run in the main thread); this change just removed syncPNGStream and syncJPEGStream.
  • Pango is now required on all platforms (7716ae4).
  • Make the quality argument for JPEG output go from 0 to 1 to match HTML spec.
  • Make the compressionLevel and filters arguments for canvas.toBuffer() named instead of positional. Same for canvas.pngStream(), although these arguments were not documented.
  • See also: Correct some of the globalCompositeOperator types under Fixed. These changes were bug-fixes, but will break existing code relying on the incorrect types.
  • Rename context2d.filter to context2d.quality to avoid a conflict with the new standard 'filter' property. Note that the standard 'filter' property is not yet implemented.

Fixed

  • Fix build with SVG support enabled (#1123)
  • Prevent segfaults caused by loading invalid fonts (#1105)
  • Fix memory leak in font loading
  • Port has_lib.sh to javascript (#872)
  • Correctly sample the edge of images when scaling (#1084)
  • Detect CentOS libjpeg path (b180ea5)
  • Improve measureText accuracy (2bbfec5)
  • Fix memory leak when image callbacks reference the image (1f4b646)
  • Fix putImageData(data, negative, negative) (2102e25)
  • Fix SVG recognition when loading from buffer (77749e6)
  • Re-rasterize SVG when drawing to a context and dimensions changed (79bf232)
  • Prevent JPEG errors from crashing process (#1124)
  • Improve handling of invalid arguments (#1129)
  • Fix repeating patterns when drawing a canvas to itself (#1136)
  • Prevent segfaults caused by creating a too large canvas
  • Fix parse-font regex to allow for whitespaces.
  • Allow assigning non-string values to fillStyle and strokeStyle
  • Fix drawing zero-width and zero-height images.
  • Fix DEP0005 deprecation warning
  • Don't assume data: URIs assigned to img.src are always base64-encoded
  • Fix formatting of color strings (e.g. ctx.fillStyle) on 32-bit platforms
  • Explicitly export symbols for the C++ API
  • Named CSS colors should match case-insensitive
  • Correct some of the globalCompositeOperator types to match the spec:
    • "hsl-hue" is now "hue"
    • "hsl-saturation" is now "saturation"
    • "hsl-color" is now "color"
    • "hsl-luminosity" is now "luminosity"
    • "darker" is now "darken"
    • "dest" is now "destination"
    • "add" is removed (but is the same as "lighter")
    • "source" is now "copy"
  • Provide better, Node.js core-style coded errors for failed sys calls. (For example, provide an error with code 'ENOENT' if setting img.src to a path that does not exist.)
  • Support reading CMYK, YCCK JPEGs.
  • Hide Image.prototype.source
  • Fix behavior of maxWidth (#1088)
  • Fix behavior of textAlignment with maxWidth (#1253)

Added

  • Prebuilds (#992) with different libc versions to the prebuilt binary (#1140)
  • Support canvas.getContext("2d", {alpha: boolean}) and canvas.getContext("2d", {pixelFormat: "..."})
  • Support indexed PNG encoding.
  • Support currentTransform (d6714ee)
  • Export CanvasGradient (6a4c0ab)
  • Support #RGBA , #RRGGBBAA hex colors (10a82ec)
  • Support maxWidth arg for fill/strokeText (175b40d)
  • Support image.naturalWidth/Height (a5915f8)
  • Render SVG img elements when librsvg is available (1baf00e)
  • Support ellipse method (4d4a726)
  • Browser-compatible API (6a29a23)
  • Support for jpeg on Windows (42e9a74)
  • Support for backends (1a6dffe)
  • Support for canvas.toBuffer("image/jpeg")
  • Unified configuration options for canvas.toBuffer(), canvas.pngStream() and canvas.jpegStream()
  • Added resolution option for canvas.toBuffer("image/png") and canvas.createPNGStream() this was not working
  • Support for canvas.toDataURI("image/jpeg") (sync)
  • Support for img.src = <url> to match browsers
  • Support reading data URL on img.src
  • Readme: add dependencies command for OpenBSD
  • Throw error if calling jpegStream when canvas was not built with JPEG support
  • Emit error if trying to load GIF, SVG or JPEG image when canvas was not built with support for that format

1.6.x (unreleased)

Fixed

  • Make setLineDash able to handle full zeroed dashes (b8cf1d7)
  • Fix reading fillStyle after setting it from gradient to color (a84b2bc)

Added

  • Support for pattern repeat and no-repeat (#1066)
  • Support for context globalAlpha for gradients and patterns (#1064)

1.6.9 / 2017-12-20

Fixed

  • Fix some instances of crashes (7c9ec58, 8b792c3)
  • Fix node 0.x compatibility (dca33f7)

1.6.8 / 2017-12-12

Fixed

  • Faster, more compliant parseFont (4625efa, 37cd969)

1.6.7 / 2017-09-08

Fixed

  • Minimal backport of #985 (rotated text baselines) (c19edb8)

1.6.6 / 2017-05-03

Fixed

  • Use .node extension for requiring native module so webpack works (1b05599)
  • Correct text baseline calculation (#1037)

1.6.5 / 2017-03-18

Changed

  • Parse font using parse-css-font and units-css (d316416)

1.6.4 / 2017-02-26

Fixed

  • Make sure Canvas#toDataURL is always async if callback is passed (8586d72)

1.6.3 / 2017-02-14

Fixed

  • Fix isnan() and isinf() on clang (5941e13)

1.6.2 / 2016-10-30

Fixed

  • Fix deprecation warnings (c264879)
  • Bump nan (e4aea20)

1.6.1 / 2016-10-23

Fixed

  • Make has_lib.sh work on BSD OSes (1727d66)

1.6.0 / 2016-10-16

  • Support canvas.getBuffer('raw') (#819)

1.5.0 / 2016-09-11

  • Crude PDF stream implementation (#781)
  • Update CI settings (#797)
  • Reduce some of the install warnings (#794)
  • Fix lineDash browser tests never finishing (#793)
  • Add issue template (#791)

1.4.0 / 2016-06-03

  • Add support for evenodd fill rule (#762)

1.3.17 / 2016-06-03

  • Removing redundant duplicate calls (#769)
  • Cleanup examples (#776)
  • Fix CanvasRenderingContext2D class name (#777)

1.3.16 / 2016-05-29

  • Fix leak of data when streaming JPEG (#774)

1.3.15 / 2016-05-09

  • Fix segfault in putImageData (#750)

1.3.14 / 2016-05-05

  • Clamp JPEG buffer size (#739)

1.3.13 / 2016-05-01

  • Bumb NAN version (#759)

1.3.12 / 2016-03-01

  • Expose freetype version (#718)
  • Require new in constructor (#717)

1.3.11 / 2016-03-01

  • Properly clamp quality in toDataURL (#728)
  • Strict mode (#719)

1.3.10 / 2016-02-07

  • Fix segfault on node 0.10.x (#712)

1.3.9 / 2016-01-27

  • Allow to unbind onload/onerror callback handlers (#706)

1.3.8 / 2016-01-22

  • Cleanup build scripts and fix pangocairo detection (#701)

1.3.7 / 2016-01-13

  • Don't unbind onload/onerror callbacks after invoking them (#615)

1.3.6 / 2016-01-06

  • Allow optional arguments in toDataURL to be undefined and improve toDataURL's spec compliance (#690)

1.3.5 / 2015-12-07

  • Add image/jpeg support to toDataUrl (#685)

1.3.4 / 2015-11-21

  • Upgrade nan to 2.1.0 (#671)

1.3.3 / 2015-11-21

  • Fix compilation on Visual Studio 2015 (#670)

1.3.2 / 2015-11-18

  • Fix incorrect Y offset and scaling for shadows (#669)

1.3.1 / 2015-11-09

  • Wrap std::min calls in paranthesis to prevent macro expansion on windows (#660)

1.3.0 / 2015-10-26

  • Expose ImageData constructor and make it more spec-compliant (#569)

1.2.11 / 2015-10-20

  • Implement blur on images (#648)

1.2.10 / 2015-10-12

  • Fix segfault in Canvas#jpegStream (#629)

1.2.9 / 2015-09-14

  • Upgrade to Nan 2.x with support for iojs 3.x and Node.js 4.x (#622)

1.2.8 / 2015-08-30

  • Clean up the tests (#612)
  • Replace CanvasPixelArray with Uint8ClampedArray to be API-compliant (#604)
  • Specify travis iojs versions (#611)

1.2.7 / 2015-07-29

  • Avoid future reserved keyword (#592)

1.2.6 / 2015-07-29

  • Fix the build on windows (#589)

1.2.5 / 2015-07-28

  • Another npm release, since 1.2.4 was botched (see #596)

1.2.4 / 2015-07-23

1.2.3 / 2015-05-21

  • Update TJ Holowaychuk's username in the readme
  • Fix segmentation fault in Image::loadFromBuffer when buffer is empty
  • Optimize getImageData()
  • package: add "license" attribute
  • package: update "nan" to v1.8.4
  • package: append .git to "repository" URL

1.2.2 / 2015-04-18

  • Now works on io.js
  • Fix 'drawImage' scaling (the dimensions of the region that gets clipped also needs to be scaled).
  • Fix bug in StreamPNGSync

1.2.1 / 2015-02-10

  • Use non-cairo 1.12 API for shadow blur

1.2.0 / 2015-01-31

  • travis: drop support for node v0.6
  • Merge pull request #507 from salzhrani/iojs
  • io.js compatibility
  • Merge pull request #505 from woodcoder/shadow-blur
  • Fix issue with line width not being correct in stroked shadows.
  • Add another shadow/transform test.
  • Refactor setSourceRGBA to allow the context to be supplied.
  • Simple image shadow (no blurring or handling current transforms) based on image's alpha channel.
  • Test showing issue #133, that images don't have shadows.
  • The +1 on the offset seems to match the browser's output better, but I can't work out why it would be needed (unless it's pixel alignment related).
  • Make the shadow radius more accurately match the browser's, making use of sigma scale as used in SKIA: https://github.com/google/skia/blob/master/src/effects/SkBlurMask.cpp#L26.
  • Create a new image surface to render blurred shadows to, this means that vector formats like PDF will now render blurs.
  • Add recommended calls to flush and dirty buffer, as per http://www.cairographics.org/manual/cairo-Image-Surfaces.html#cairo-image-surface-get-data.
  • Add PDF button to test page to easily generate PDF version of the test image.
  • Fix to ensure shadowOffset is unaffected by the current transform.
  • New test illustrating that canvas implementation doesn't translate the shadowOffset.
  • Merge pull request #490 from AllYearbooks/master
  • Merge pull request #501 from motiz88/hsl-color
  • Code style + attribution. Also removed parseClipped() and commented out wrapInt (now wrap_int).
  • Added visual tests for hsl() and hsla() color parsing.
  • Fixed handling in hsl/hsla color parser. parseNumber() was erroring out on numbers with long fractional parts.
  • hsl/hsla color parsing + rebeccapurple hsl() and hsla() color values are now supported, with corresponding unit tests. Also added rebeccapurple (from CSS Color Level 4) to the named color list.
  • float rather than int for drawImage arguments
  • with_pango to true and use fontconfig to load fonts
  • Merge pull request #399 from nulltask/fix/lighten
  • Merge pull request #465 from espadrine/master
  • Merge pull request #470 from tonylukasavage/patch-1
  • Add one-liner MacPorts install to docs
  • Offer SVG output.
  • Readme update: node-gyp.
  • Readme: fix subheading size
  • Readme: remove Gemnasium badge, use SVG for npm badge
  • Readme: add Travis-CI badge
  • change operator lighter to lighten

1.1.6 / 2014-08-01

  • export canvas.CanvasPixelArray instead of canvas.PixelArray which is undefined
  • Glib version test into giflib exists test
  • Giflib 5.1
  • install: use an even older version of giflib (v4.1.6)
  • install: use an older version of giflib (v4.2.3)
  • install: install giflib
  • install: use more compatible sh syntax
  • travis: attempt to run the ./install script before testintg
  • travis: test node v0.6, v0.8, v0.10, and v0.11
  • Distinguish between 'add' and 'lighter'

1.1.5 / 2014-06-26

  • Readme: remove Contributors section
  • Readme: update copyright
  • On Windows, copy required DLLs next to ".node" file (#442 @pandell)
  • Duplicate "msvc_settings" for "Debug" configuration
  • Remove unneeded #include <nan.h>
  • Use float constants to prevent double->float conversion warning
  • Ignore Visual C++ 2013 warnings (#441 @pandell)
  • Add algorithm include to CanvasRenderingContext2d.cc for std::min (#435 @kkoopa)
  • Updated NAN to 1.2.0 (#434 @kkoopa)

1.1.4 / 2014-06-08

  • Fix compile error with Visual C++
  • Add support for the lineDash API
  • Update NAN
  • New V8 compatibility
  • Correctly limit bounds in PutImageData to prevent segment fault
  • Fix segfault when onload and onerror are not function
  • Add support for Node 0.11.9

1.1.3 / 2014-01-08

  • Add CAIRO_FORMAT_INVALID
  • Readjust the amount of allocated memory
  • Fix argument index for filter parameter
  • Make has_lib.sh work properly on Debian 64bit

1.1.2 / 2013-10-31

  • NAN dep upgrade, full node@<=0.11.8 compatibility
  • Use node::MakeCallback() instead of v8::Function::Call()
  • Improve nan location discovery
  • Fix enabling gif/jpeg options on Ubuntu 13.04

1.1.1 / 2013-10-09

  • add better support for outdated versions of Cairo

1.1.0 / 2013-08-01

  • add png compression options
  • add jpeg stream progressive mode option
  • fix resource leaks on read errors

1.0.4 / 2013-07-23

  • 0.11.4+ compatibility using NAN
  • fix typo in context2d for imageSmoothingEnabled

1.0.3 / 2013-06-04

  • add "nearest" and "bilinear" to patternQuality
  • fix fread() retval check (items not bytes)
  • removed unneeded private fields

1.0.2 / 2013-03-22

  • add Context2d#imageSmoothingEnabled=

1.0.1 / 2013-02-25

  • travis: test modern node versions
  • change the node-gyp build to use pkg-config

1.0.0 / 2013-01-16

  • add conditional pango font support [Julian Viereck]
  • add Canvas#{png,jpeg}Stream() alias of create* legacy methods
  • add support for grayscale JPEGs
  • fix: explicitly cast the after work callback function to "uv_after_work_cb"
  • fix test server for express 3.x
  • fix: call cairo_surface_finish in ~Canvas when pdf
  • remove old 0.4.x binding support. Closes #197

0.13.1 / 2012-08-20

  • fix cases where GIF_LIB_VERSION is not defined
  • fix auto-detection of optional libraries for OS X
  • fix Context2d::SetFont for pango when setting normal weight/style

0.13.0 / 2012-08-12

  • add pango support [c-spencer]
  • add pango / png / jpeg gyp auto-detection [c-spencer]
  • add .gifVersion [tootallnate]
  • add .jpegVersion [tootallnate]
  • add moar gyp stuff [tootallnate]
  • remove wscript
  • fix closure_destroy() with cast for AdjustAmountOfExternalAllocatedMemory()

0.12.1 / 2012-06-29

  • fix jpeg malloc Image issue. Closes #160 [c-spencer]
  • Improve Image mode API
  • Add clearData method to handle reassignment of src, and clean up mime data memory handling.
  • Improve how _data_len is managed and use to adjust memory, hide more of mime API behind cairo version conditional.
  • Add optional mime-data tracking to Image.
  • Refactor JPEG decoding into decodeJPEGIntoSurface

0.12.0 / 2012-05-02

  • Added textDrawingMode context property [c-spencer]
  • Added additional TextMetrics properties [c-spencer]

0.11.3 / 2012-04-25

  • Fixed Image memory leak. Closes #150
  • Fixed Context2d::hasShadow()

0.11.2 / 2012-04-12

  • Fixed: pdf memory leak, free closure and surface in ~Canvas

0.11.1 / 2012-04-10

  • Changed: renamed .nextPage() to .addPage()

0.11.0 / 2012-04-10

  • Added quick PDF support
  • Added Canvas#type getter
  • Added ./examples/pdf-images.js
  • Added ./examples/multiple-page-pdf.js
  • Added ./examples/small-pdf.js

0.10.3 / 2012-02-27

  • Fixed quadratic curve starting point for undefined path. Closes #155

0.10.2 / 2012-02-06

  • Fixed: Context2d setters with invalid values ignored
  • Changed: replaced seek with fstat()

0.10.1 / 2012-01-31

  • Added /opt/local/lib to wscript [obarthel]
  • Added bounds checking to rgba_to_string() [obarthel]
  • Fixed cleanup in JPEG Image loading [obarthel]
  • Fixed missing CSS color table values [obarthel]

0.10.0 / 2012-01-18

  • Added ctx.createPattern() [slaskis]

0.9.0 / 2012-01-13

  • Added createJPEGStream() [Elijah Hamovitz]

0.8.3 / 2012-01-04

  • Added support for libjpeg62-dev or libjpeg8-dev [wwlinx]

0.8.2 / 2011-12-14

  • Fixed two memory leaks in context2d [Tharit]
  • Fixed make test-server

0.8.1 / 2011-10-31

  • Added 0.5.x support [TooTallNate]
  • Fixed measureText().width. Closes #126

0.8.0 / 2011-10-28

  • Added data uri support. Closes #49

0.7.3 / 2011-09-14

  • Added better lineTo() / moveTo() exception messages

0.7.2 / 2011-08-30

  • Changed: prefix some private methods with _

0.7.1 / 2011-08-25

  • Added better image format detection
  • Added libpath options to waf configuration; this was necessary to correctly detect gif and jpeg support on FreeBSD

0.7.0 / 2011-07-12

  • Added GIF support [Brian McKinney]

0.6.0 / 2011-06-04

  • Added Image#src=Buffer support. Closes #91
  • Added devDependencies
  • Added source-atop test
  • Added image-src.js example
  • Removed V8::AdjustAmountOfExternalAllocatedMemory() call from toBuffer()
  • Fixed v8 memory hint when resizing canvas [atomizer]

0.5.4 / 2011-04-20

  • Added; special case of zero-width rectangle [atomizer]
  • Fixed; do not clamp arguments to integer values [atomizer]
  • Fixed; preserve current path during fillRect() and strokeRect() [atomizer]
  • Fixed; restorePath(): clear current path before appending [atomizer]

0.5.3 / 2011-04-11

  • Clamp image bounds in PixelArray::PixelArray() [Marcello Bastea-Forte]

0.5.2 / 2011-04-09

  • Changed; make PNGStream a real Stream [Marcello Bastea-Forte]

0.5.1 / 2011-03-16

  • Fixed (kinda) img.src= error handling
  • Fixed; move closure.h down for malloc ref. Closes #80

0.5.0 / 2011-03-14

  • Added several more operators (color-dodge, color-burn, difference, etc)
  • Performance; no longer re-allocating closure->data for each png write
  • Fixed freeing of Context2d states
  • Fixed text alignment / baseline [Olaf]
  • Fixed HandleScopes [Olaf]
  • Fixed small misc memory leaks
  • Fixed Buffer usage for node 0.4.x

0.4.3 / 2011-01-11

  • Fixed font family dereferencing. Closes #72
  • Fixed; stripping of quotes from font-family before applying
  • Fixed duplicate textAlign getter
  • Removed sans-serif default of Arial

0.4.2 / 2010-12-28

  • Fixed font size growing issue after successive calls. Closes #70

0.4.1 / 2010-12-18

  • Fixed; toString() first argument of {fill,stroke}Text(). Closes #68

0.4.0 / 2010-12-12

  • Added drawImage() with Canvas instance support. Closes #67

0.3.3 / 2010-11-30

  • Added CanvasRenderingContext2d#patternQuality accessor, accepting fast, good, and best
  • Fixed; pre-multiply putImageData() components
  • Fixed; PixelArray data is not premultiplied

0.3.2 / 2010-11-26

  • Added --profile option to config
  • Fixed eio_custom segfault(s). Closes #46
  • Fixed two named colors. Closes #62 [thanks noonat]
  • Fixed a few warnings
  • Fixed; freeing data in Image::loadJPEG() on failure
  • Fixed; include jpeglib only when HAVE_JPEG
  • Fixed; using strstr() instead of strnstr()

0.3.1 / 2010-11-24

  • Fixed; Image loading is sync until race-condition is resolved
  • Fixed; Image::loadJPEG() return status based on errno

0.3.0 / 2010-11-24

  • Added arcTo(). Closes #11
  • Added c color parser, ./examples/ray.js is now twice as fast
  • Fixed putImageData() bug messing up rgba channels

0.2.1 / 2010-11-19

  • Added image resize example
  • Fixed canvas resizing via {width,height}=. Closes #57
  • Fixed Canvas#getContext(), caching the CanvasRenderingContext
  • Fixed async image loading (test server still messed)

0.2.0 / 2010-11-18

  • Added jpeg Image support (when libjpeg is available)
  • Added hsl / hsla color support. [Tom Carden]

0.1.0 / 2010-11-17

  • Added Image
  • Added ImageData
  • Added PixelArray
  • Added CanvasRenderingContext2d#drawImage()
  • Added CanvasRenderingContext2d#getImageData()
  • Added CanvasRenderingContext2d#createImageData()
  • Added kraken blur benchmark example
  • Added several new tests
  • Fixed instanceof checks for many c++ methods
  • Fixed test runner in firefox [Don Park]

0.0.8 / 2010-11-12

  • Added CanvasRenderingContext2d#drawImage()
  • Fixed free() call missing stdlib
  • Fixed Image#{width,height} initialization to 0
  • Fixed; load image on non-LOADING state

0.0.7 / 2010-11-12

  • Fixed lighter for older versions of cairo

0.0.6 / 2010-11-12

  • Added Image
  • Added conditional support for cairo 1.10.0 operators

0.0.5 / 2010-11-10

  • Added custom port support to test/server.js

  • Added more global composite operator support

  • Added Context2d#antialias=

  • Added voronoi example

  • Added -D__NDEBUG__ to default build

  • Added BUFFER_DATA macro for backwards compat buffer data access [Don Park]

  • Fixed getter bug preventing patterns from being returned via fillStyle etc

  • Fixed; CAIRO_STATUS_NO_MEMORY_ on failed {re,m}alloc()

  • Fixed; free Canvas::ToBuffer() closure data

0.0.4 / 2010-11-09

  • Bump to fix npm engine cache bug...

0.0.3 / 2010-11-09

  • Added async toDataURL() support
  • Added async toBuffer() support
  • Removed buffer utils

0.0.2 / 2010-11-08

  • Added shadow support (faster/better gaussian blur to come)
  • Added node v0.3 support [Don Park]
  • Added -O3 to build
  • Removed Canvas#savePNG() use Canvas#createPNGStream()

0.0.1 / 2010-11-04

  • Initial release