Update CHANGELOG through 2016-03-22, commit 3b71de9.

This commit is contained in:
Bruce MacNaughton 2016-01-15 21:49:01 -08:00 committed by Jürg Lehni
parent 345730f634
commit e3e2ab549a

View file

@ -4,8 +4,8 @@ All notable changes to Paper.js shall be documented in this file, following comm
## `0.10.0` (Unreleased) ## `0.10.0` (Unreleased)
### Changed ### Changed
- Significant overhaul and improvement of boolean path operations (`#unite()`, - Significant overhaul and improvement of boolean path operations `#unite()`,
`#subtract()`, `#intersect()`, `#exclude()`, `#divide()`): `#subtract()`, `#intersect()`, `#exclude()`, `#divide()` (#936):
- Improve handling of self-intersecting paths and non-zero fill-rules. - Improve handling of self-intersecting paths and non-zero fill-rules.
- Handle operations on identical paths. - Handle operations on identical paths.
- Improve handling of near-collinear lines. - Improve handling of near-collinear lines.
@ -22,6 +22,52 @@ All notable changes to Paper.js shall be documented in this file, following comm
when the name is identical. when the name is identical.
- Update internal Acorn JavaScript parser to `0.5.0`, the last small version. - Update internal Acorn JavaScript parser to `0.5.0`, the last small version.
- Update QUnit to `1.20.0`. - Update QUnit to `1.20.0`.
- `#smooth()` now accepts an `options.type` string specifying which smoothing
algorithm to use: 'asymmetric' (default), 'continuous', 'catmull-rom', and
'geometric' (#338).
- Combine and simplify `Tool` mousedrag and mousemove code (#595).
- Move `Tool#_fireEvent()` into private function in `Tool#_handleEvent()`.
- Mouse handlers can to return `true` to cause browser default behavior.
- `event.preventDefault()` is called by default after all mouse events except
'mousemove'. It will not be called if the event handler returns `false` nor
will it be called on a 'mousedown' event if the view or tools respond to
'mouseup'.
- Add `_canScaleStroke` flag to selectively activate stroke-scaling on classes
that support it (#721).
- Throw an exception if arguments to `smooth()` are segments or curves from
incorrect paths.
- Many minor code and algorithm optimizations.
- Performance optimization for monotone curves (#907).
- Move to gulp build process.
- Move `PaperScript#execute` URL argument into `options.url` (#902).
- Rename `Matrix#concatenate()` to `#append()` and `preConcatenate()` to `#prepend()`.
- Make `Matrix#_shiftless` and `#orNullIfIdentity` internal functions.
- Queue internal `View#update()` calls to minimize the number of times a canvas is redrawn (#830, #925).
- `Symbol` now clashes with ES6 definition of Symbol and has been changed (#770).
- `Symbol` -> `SymbolDefinition`
- `PlacedSymbol` -> `SymbolItem`
- `Symbol#definition` -> `SymbolDefinition#item`
- `PlacedSymbol#symbol` -> `SymbolItem#definition`
- Don't serialize deprecated `Style#font` property.
- Don't serialize text-styles in non-text items (#934).
- Methods that accepted a `time` parameter or boolean second parameter causing the argument to be interpreted as `time` instead of `offset` are now separate functions with distinct names (#563):
- `Curve#getNormalAt(time, true)` -> `#getNormalAtTime(true)`
- `Curve#divide()` -> `#divideAt(offset)` / ` #divideAtTime(time)`
- `Curve#split()` -> `#splitAt(offset)` / `#splitAtTime(time)`
- `Curve#getParameterAt(offset)` -> `#getTimeAt(offset)`
- `Curve#getParameterOf(point)` -> `getTimeOf(point)`
- `Curve#getPointAt(time, true)` -> `#getPointAtTime(time)`
- `Curve#getTangentAt(time, true)` -> `#getTangenttTime(time)`
- `Curve#getNormalAt(time, true)` -> `#getNormalAtTime(time)`
- `Curve#getCurvatureAt(time, true)` -> `#getCurvatureAtTime(time)`
- `CurveLocation#parameter` -> `#time`
- `Path#split(offset/location)` -> `#splitAt(offset/location)`
- Changed argument `parameter` to `time` for Postscript-style drawing commands.
- `Item#clone()`'s optional argument is now an options object with defaults `{insert: true, deep: true}`. `insert` controls whether the clone is inserted into the project and `deep` controls whether the item's children are cloned. The previous boolean optional argument is still interpreted as the `insert` option (#941).
- `PathItem#flatten()`'s argument has been changed from `tolerance` (maximum allowed distance between points) to `flatness` (maximum allowed error) (#618).
- `Matrix` properties `#b` and `#c` have been reversed to match common standard.
- SVG Import - improved handling of style inheritance for nested <defs>.
### Added ### Added
- Multiple additions to SVG export (`#exportSVG()`): - Multiple additions to SVG export (`#exportSVG()`):
@ -35,9 +81,9 @@ All notable changes to Paper.js shall be documented in this file, following comm
passed in combination with other options. passed in combination with other options.
- Add `Item#copyAttributes()` and `Item#copyContent()`, and use them in - Add `Item#copyAttributes()` and `Item#copyContent()`, and use them in
`Item#clone()`. `Item#clone()`.
- Add `insert` parameter to `Path#toShape()`, `Shape#toPath()`, - Add optional `insert` boolean argument to `Path#toShape()`, `Shape#toPath()`,
`Item#rasterize()`, controlling whether the created item is inserted into the `Item#rasterize()`. Default is to insert, set to `false` to prevent the
scene graph or not. created item from being inserted into the scene graph.
- Add visual item comparison to QUnit, through rasterization and Resemble.js - Add visual item comparison to QUnit, through rasterization and Resemble.js
diffing. diffing.
- Add many unit tests for known edge cases in boolean operations and curve - Add many unit tests for known edge cases in boolean operations and curve
@ -45,13 +91,67 @@ All notable changes to Paper.js shall be documented in this file, following comm
- Start using automatic code testing through Travis CI. - Start using automatic code testing through Travis CI.
- Reach JSHint compliance and include regular linting in Travis CI tests. - Reach JSHint compliance and include regular linting in Travis CI tests.
- Define code format standards in .editorconfig file - Define code format standards in .editorconfig file
- Add `getSquaredLineLength()` (removed `getEndDistanceSquared()`)
- layers may now be given names (#491).
- Add `Project#addLayer()` and `Project#insertLayer()` (#903).
- Add `View#matrix` to allow matrix transformation to be used on the view (#832).
- Add tests QUnit tests for leaked globals.
- Add `Matrix#prepended` and `#appended` to return copies of the modified matrix.
- Add `Shape#hitTest()` boolean option `options.stroke` (#911).
- Insert version number into docs.
- Add `View#requestUpdate()` function to minimize number of actual canvas redraw.
- Support `Raster#onLoad()` events on `Raster#setImage()` now (#924).
- Add `Raster#onError()` event support (#849).
- Add 'keydown' and 'keyup' events to `View` (#896).
- Add mouse events to `View`.
- Add `View#autoUpdate` boolean (default: true) to control automatic updating of the canvas (#921).
- Allow running without a canvas for Web Workers, nodejs (#561, #582, #634).
- Unify node and browser versions and enable npm install (#739).
- Set 1px default `strokeWidth` for SVG imports to fix IE/Edge default (#467).
- `ImportSVG()` passes imported SVG data to `onLoad` callback as second parameter.
- Add `#interpolate` for `Segment`, `Path`, and `CompoundPath` (#624).
- Implement `CompoundPath#flatten()`, `#simplify()`, `#smooth()` (#727).
- Implement clip-mask support in hit-testing (#671).
- Implement `#hitTestAll()` to return all items that were hit (#536).
- `ImportSVG()` implements option.onError callback (#969).
- `PaperScope#settings.insertItems` controls whether newly created items are inserted or not (default: true).
- Add `#importSVG()` `option.insert` (default: true) to control insertion (#763).
- Add `CompoundPath` detection on SVG import.
- Add new options to `#exportSVG()` to control bounds and transformations (#972).
- Implement `Path#splitAt()`
- Allow `Item#position` to be selected via `Item#position.selected` (#980).
### Deprecated ### Deprecated
- Deprecate `#windingRule` on `Item` and `Style` in favor of `#fillRule`. - Deprecate `#windingRule` on `Item` and `Style` in favor of `#fillRule`.
- `Matrix#concatenante` -> `#append`.
- `Matrix#preConcatenate` -> `#prepend`.
- `Matrix#chain` -> `#appended`.
- `Project#symbols` -> `Project#getSymbolDefinitions()`
- `Path#split()` -> `Path#splitAt()`
All methods that previously took an optional boolean second argument that specified how the first argument was interpreted are now deprecated in favor explicitly named methods. `parameter` is now named as the more descriptive `time`.
- `Curve#getNormalAt(time, true)` -> `#getNormalAtTime(true)`
- `Curve#divide()` -> `#divideAt(offset)` / `#divideAtTime(time)`
- `Curve#split()` -> `#splitAt(offset)` / `#splitAtTime(time)`
- `Curve#getParameterAt(offset)` -> `#getTimeAt(offset)`
- `Curve#getParameterOf(point)` -> `getTimeOf(point)`
- `Curve#getPointAt(time, true)` -> `#getPointAtTime(time)`
- `Curve#getTangentAt(time, true)` -> `#getTangenttTime(time)`
- `Curve#getNormalAt(time, true)` -> `#getNormalAtTime(time)`
- `Curve#getCurvatureAt(time, true)` -> `#getCurvatureAtTime(time)`
- `CurveLocation#parameter` -> `#time`
- `Path#split(offset/location)` -> `#splitAt(offset/location)`
<!--
### Removed ### Removed
--> - Legacy `Color` constructors (removed in 0.9.25): `GrayColor`, `RgbColor`,
`HsbColor`, `HslColor`, and `GradientColor`. These have been replaced
with corresponding forms of the `Color` constructor.
- Remove `getEndDistanceSquared()` (added `getSquaredLineLength()`)
- `ctx.currentPath` caching optimization
- Undocumented function `Project#addChild()` that added a layer to a project.
It is replaced by `Project#addLayer()` and `Project#insertLayer()`.
- Canvas attributes "resize" and "data-paper-resize" no longer cause paper to resize the canvas when the viewport size changes; CSS is required since 0.9.22.
### Fixed ### Fixed
- Improve hit-testing and `#contains()` checks on path with horizontal lines (#819). - Improve hit-testing and `#contains()` checks on path with horizontal lines (#819).
@ -69,5 +169,38 @@ All notable changes to Paper.js shall be documented in this file, following comm
- Fix `Shape#strokeBounds` when `#strokeScaling` is false (#856). - Fix `Shape#strokeBounds` when `#strokeScaling` is false (#856).
- Consistently interpret curves as straight or not-straight (#838). - Consistently interpret curves as straight or not-straight (#838).
- Switch blendMode to 'lighter' in CandyCrash (#453). - Switch blendMode to 'lighter' in CandyCrash (#453).
- Don't block touch actions when using paper in JavaScript mode (#686).
… and many more. - Convert touch event coordinates to project coordinates (#633).
- Fix problems with group selection structures after `group#importJSON()` (#785).
- Fix exceptions when a top-level layer is selected.
- Don't allow layers to turn up in hit-tests (#608).
- Correctly handle `#strokeScaling` when calculating `Path` and `Shape` bounds (#697).
- Maintain `Raster#source` correctly on Node.js (#914).
- Boolean operations correctly handle open `Path` items within `CompoundPath` (#912).
- Don't modify an array of child items passed to `CompoundPath#insertChildren()` when it is a child items array of a `CompoundPath`.
- Fix incorrect handling of `strokeScaling` for `Shape` and mouse detection (#697).
- `#importJSON` no longer generates "callstack exceeded" (#764).
- Fix incorrect `hitResult` and `#contains` cases (#819, #884).
- Update documentation to note appropriate use for `#simplify()` (#920).
- `#importSVG()` now supports percentage dimensions and `gradientUnits="objectBoundingBox"`. (#954, #650).
- `Groups` with clip-masks now calculate correct bounding boxes (#956).
- Calling `event.stopPropagation()` in mousedown handler no longer prevents mousedrag events (#952).
- Draw `Item` shadows when shadowBlur is zero (#955).
- Fixes for Web site examples (#967).
- Fixed `Item` dimension cannot be changed after being set to zero (#558).
- Scaling shadows now works correctly with browser- and view-zoom (#831).
- `Path#arcTo()` correctly handles zero sizes.
- `ImportSVG()` handles onLoad and onError callbacks for string inputs that load external resources (#827).
- `#importJSON()` and `#exportJSON()` now handle non-`Item` objects correctly (#392).
- `#exportSVG()` now exports empty paths if used as a clip-mask.
- Correct problem using paper-core in node.js (#975).
- Fix `event.delta` on mousedrag events (#981).
- Add trailing '/' in XML attribute namespaces for IE's XMLSerializer() (#984).
- Make sure `Item#removeChildren()` fully removes children (#991).
- Make new node/browser unified codebase work with module bundlers like webpack (#986).
- Improve handling of `event#stopPropagation()` on View and Item (#995).
- SVG Import: Fix issues with viewBox.(?) 84d2a2f
- Make sure all name lookup structures are kept in sync (#1009).
- Convert absolute local gradient URLs back to relative ones (#1001).
- Fix TypeError in `Path#unite()` (#1000).
- Allow selection of bounding box without selecting path (#769).