mirror of
https://github.com/scratchfoundation/paper.js.git
synced 2024-12-28 17:02:24 -05:00
Update CHANGELOG through 2016-03-22, commit 3b71de9
.
This commit is contained in:
parent
345730f634
commit
e3e2ab549a
1 changed files with 142 additions and 9 deletions
151
CHANGELOG.md
151
CHANGELOG.md
|
@ -4,8 +4,8 @@ All notable changes to Paper.js shall be documented in this file, following comm
|
|||
## `0.10.0` (Unreleased)
|
||||
|
||||
### Changed
|
||||
- Significant overhaul and improvement of boolean path operations (`#unite()`,
|
||||
`#subtract()`, `#intersect()`, `#exclude()`, `#divide()`):
|
||||
- Significant overhaul and improvement of boolean path operations `#unite()`,
|
||||
`#subtract()`, `#intersect()`, `#exclude()`, `#divide()` (#936):
|
||||
- Improve handling of self-intersecting paths and non-zero fill-rules.
|
||||
- Handle operations on identical paths.
|
||||
- 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.
|
||||
- Update internal Acorn JavaScript parser to `0.5.0`, the last small version.
|
||||
- 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
|
||||
- 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.
|
||||
- Add `Item#copyAttributes()` and `Item#copyContent()`, and use them in
|
||||
`Item#clone()`.
|
||||
- Add `insert` parameter to `Path#toShape()`, `Shape#toPath()`,
|
||||
`Item#rasterize()`, controlling whether the created item is inserted into the
|
||||
scene graph or not.
|
||||
- Add optional `insert` boolean argument to `Path#toShape()`, `Shape#toPath()`,
|
||||
`Item#rasterize()`. Default is to insert, set to `false` to prevent the
|
||||
created item from being inserted into the scene graph.
|
||||
- Add visual item comparison to QUnit, through rasterization and Resemble.js
|
||||
diffing.
|
||||
- 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.
|
||||
- Reach JSHint compliance and include regular linting in Travis CI tests.
|
||||
- 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
|
||||
- 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
|
||||
-->
|
||||
- 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
|
||||
- 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).
|
||||
- Consistently interpret curves as straight or not-straight (#838).
|
||||
- Switch blendMode to 'lighter' in CandyCrash (#453).
|
||||
|
||||
… and many more.
|
||||
- Don't block touch actions when using paper in JavaScript mode (#686).
|
||||
- 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).
|
||||
|
|
Loading…
Reference in a new issue