# Changelog
All notable changes to this project will be documented in this file. The format is inspired by Keep a Changelog (opens new window), and this project adheres to Semantic Versioning (opens new window).
# September 8, 2025 v0.8.20
Sep 8, 2025
v0.8.20 (opens new window)- Fixed
Two.Element.copyto fail gracefully - Added
Two.Imageas a new shape that inheritsTwo.Rectangle - Expand
Two.RoundedRectangleconstructor to acceptTwo.Vectoras the radius - Added
Two.Element.dispose,Two.Path.dispose,Two.Group.dispose,Two.Text.dispose,Two.Points.dispose,Two.ImageSequence.dispose,Two.Sprite.dispose - Improved
Two.releaseto account for renderer specific deallocations - Improved
Two.ImageSequenceto take all optional arguments on instantiation - Fixed command setting on
Two.Line.leftandTwo.Line.right
# June 27, 2025 v0.8.19
Jun 27, 2025
v0.8.19 (opens new window)- Improved TypeScript types for
Two.Path.dashes,Two.Points.dashes,Two.Text.dashes - Improved TypeScript types for the
Two.Element.rendererproperty - Added
Two.Element.renderer.onBeforeRenderandTwo.Element.renderer.onAfterRenderfor higher context manipulation
# April 8, 2025 v0.8.18
Apr 8, 2025
v0.8.18 (opens new window)- Improve TypeScript types with correct inheritance and no errors
- Fix
Two.releasein order to check for object existence onfillandstrokeproperties
# Mar 17, 2025 v0.8.17
Mar 17, 2025
v0.8.17 (opens new window)- Improved and updated TypeScript types based on public / private properties and new latest Two.js features
- Added
Two.Gradient.disposeandTwo.Texture.disposeto properly remove effects from scenegraphs - Changed name
Two.nextFrameIDtoTwo.NextFrameId - Improved
Two.releasemethod to include detaching an object's effects (e.g:Two.Texture,Two.Gradient) - Fixed order of operations on
Two.Shapetransformations
# Feb 13, 2025 v0.8.16
Feb 13, 2025
v0.8.16 (opens new window)- Improved TypeScript types (albeit raising errors because of how expressive Two.js / JavaScript is)
- Move
Two.Utils.shimtoTwo.Utils.polyfill. Shim exists but is internal specific to remove circular dependencies - Add
Two.CanvasRenderercompatiblity with skia-canvas (opens new window) Two.Path.subdivideaccurately amends the final vertices in the updated listTwo.ZUI.resetupdates the surfaces to be reflect reset orientationTwo.Group.getBoundingClientRect(shallow)correctly infers min and max values to calculate dimensions correctly
# Dec 31, 2024 v0.8.15
Dec 31, 2024
v0.8.15 (opens new window)- Made
CanvasPolyfillobject and merged it intoTwo.Utilsto remove circular dependencies - Made
Two.Collection._eventsandTwo.Children.idsnot enumerated for more seamless invocation ofArraymethods likeArray.filterandObjectmethods likeObject.keys - Added static method
fromObjectto allTwo.Elementand descendant classes - Added method
copyto allTwo.Elementand descendant classes - Added tests for
toObjectmethods - Improved TypeScript types for argument relation
Two.WebGLRenderercorrectly handles negative scale valuesTwo.Path.noStroke,Two.Text.noStroke, and derivative methods now include setting both the stroke color to"none"and the line width to 0- Fixed
Two.Arcflag behavior forTwo.Arc.widthandTwo.Arc.heightproperties
# Jun 10, 2024 v0.8.14
Jun 10, 2024
v0.8.14 (opens new window)- Made
objectBoundingBoxapplication consistent accross renderers - Patched texture scaling in
Two.SVGRenderer - Updated Typescript definitions @kevin-nano (opens new window)
# Feb 22, 2024 v0.8.13
Feb 22, 2024
v0.8.13 (opens new window)- Added
Two.Text.directionfor rendering text either left to right or right to left - Improved
Two.WebGLRenderertexture crispness / aliasing - Improved consistency of
Two.Text.baselinerendering across all renderers
# Oct 16, 2023 v0.8.12
Oct 16, 2023
v0.8.12 (opens new window)- Added
"no-referrer"policy to image requests - Updated extras to be compatible with
Two.MatrixAPI changes Two.Path.noFill()yields"none"instead of"transparent"Two.Path.noStroke()yields"none"instead of"transparent"Two.Text.noFill()yields"none"instead of"transparent"Two.Text.noStroke()yields"none"instead of"transparent"Two.Points.noFill()yields"none"instead of"transparent"Two.Points.noStroke()yields"none"instead of"transparent"
# Aug 7, 2023 v0.8.11
Aug 7, 2023
v0.8.11 (opens new window)- Fixed getters on
Two.Anchor.leftandTwo.Anchor.right@eatgrass (opens new window) - Improved
Two.Path.getBoundingClientRect,Two.Group.getBoundingClientRect, andTwo.Text.getBoundingClientRectto correctly handle projected points that are rotated by matrices - Improved
types.d.tsforTwo.Group Two.Textrendered to SVG directly instead of<defs />Two.SVGRendererdisposes of unused effects from<defs />- Override
Two.Collection.mapmethod to be more explicit - Improved
types.d.tsfor renderers and baseTwoclass
# Jun 9, 2022 v0.8.10
Jun 9, 2022
v0.8.10 (opens new window)- Added
Two.Arcto/extrasdirectory - Made
/extras/js/zui.jsES6 compliant - Removed
/extrasmodules from generated documentation - Added method documentation to
Two.ZUI - Improved
types.d.ts - Fixed Commonjs imports from
package.json
# May 9, 2022 v0.8.7
May 9, 2022
v0.8.7 (opens new window)- Fixed documentation links
- Made
Two.GroupandTwo.Textproperties public in TypeScript types - Added overloaded methods to TypeScript types
- Fixed
Two.Path.endingdiscrepancies whenTwo.Path.curved = true
# Mar 29, 2022 v0.8.5
Mar 29, 2022
v0.8.5 (opens new window)- Added
Two.Gradientparent parameter toTwo.Stop.clone - Breaking: Added export maps so extras are imported like so
import { ZUI } from 'two.js/extras/zui.js'
# Jan 29, 2022 v0.8.3
Jan 29, 2022
v0.8.3 (opens new window)- Improved
Two.Element.classNameflagging andclassListconstruction - Manually amended
types.d.tsfor better TypeScript developing
# Jan 19, 2022 v0.8.2
Jan 21, 2022
v0.8.2 (opens new window)- Removed
#private declared variables for better EcmaScript compatibility - Fixed
Two.Path.beginingandTwo.Path.endinginterpolation whenTwo.Anchor.relative = false - Added
Two.Utils.read.path(string)which allows for string interpretation of an SVG path'sdattribute - Added
Two.Shape.worldMatrix
# Jan 10, 2022 v0.8.0
Jan 10, 2022
v0.8.0 (opens new window)- Added
Two.Elementas an EcmaScript 6 class - Converted
Two.ImageSequenceto EcmaScript 6 class - Converted
Two.Spriteto EcmaScript 6 class - Converted
Two.Textureto EcmaScript 6 class - Converted
Two.Stopto EcmaScript 6 class - Converted
Two.RadialGradientto EcmaScript 6 class - Converted
Two.LinearGradientto EcmaScript 6 class - Converted
Two.Gradientto EcmaScript 6 class - Converted
Two.Starto EcmaScript 6 class - Converted
Two.RoundedRectangleto EcmaScript 6 class - Converted
Two.Rectangleto EcmaScript 6 class - Converted
Two.Polygonto EcmaScript 6 class - Converted
Two.Pointsto EcmaScript 6 class - Converted
Two.Lineto EcmaScript 6 class - Converted
Two.Ellipseto EcmaScript 6 class - Converted
Two.Circleto EcmaScript 6 class - Converted
Two.ArcSegmentto EcmaScript 6 class - Converted
Two.Pathto EcmaScript 6 class - Converted
Two.Groupto EcmaScript 6 class - Converted
Two.Textto EcmaScript 6 class - Converted
Two.Shapeto EcmaScript 6 class - Converted
Two.Matrixto EcmaScript 6 class - Converted
Two.Registryto EcmaScript 6 class - Converted
Two.Childrento EcmaScript 6 class - Converted
Two.Collectionto EcmaScript 6 class - Converted
Two.Eventsto EcmaScript 6 class - Converted
Two.Anchorto EcmaScript 6 class - Converted
Two.Vectorto EcmaScript 6 class Two.interpretappropriately inherits classes to<g />tags @elShiaLabeouf (opens new window)Two.interpretinherits classes anddata-*attributes @elShiaLabeouf (opens new window)
# Dec 15, 2021 v0.7.13
Dec 15, 2021
v0.7.13 (opens new window)- Improved SVG gradient interpretation
Two.interpretcan properly unwrap CSSurl()commands- Added
Two.Gradient.unitsand respected in all renderers - Default units space for
Two.GradientisobjectBoundingBox - Removed destructive attribute assignments in
Two.interpret - Interpreted gradients are reused as
<defs />
# Nov 24, 2021 v0.7.12
Nov 24, 2021
v0.7.12 (opens new window)- Made mask removal possible on
Two.Groups,Two.Paths, andTwo.Points' - Simplified
Two.Points.verticesmanagement for renderers improving adaptability
# Nov 20, 2021 v0.7.10
Nov 20, 2021
v0.7.10 (opens new window)- Fixed empty vertices issue on
Two.Points
# Nov 11, 2021 v0.7.9
Nov 11, 2021
v0.7.9 (opens new window)- Made
Two.loadandTwo.interpretconsistently apply SVGviewBox - Made
Two.Rectangle.originact as inverse anchor positioning - Made
Two.Path.toObjectobjectifyfillandstrokeattributes that areTwo.TextureandTwo.Gradient - Improved reassigned id selection on interpreted SVG elements
- Improved
Two.loadgroup duplication - Added
Two.PointsandTwo.makePointsto all renderers - Made
Two.releasemimic behavior ofTwo.remove
# Jul 13, 2021 v0.7.8
Jul 13, 2021
v0.7.8 (opens new window)- Made
types.d.tsa shim of a module so that it can at least be loaded in TypeScript projects while the ES6 class declaration is still work-in-progress
# Jul 10, 2021 v0.7.6
Jul 10, 2021
v0.7.6 (opens new window)- Fixed
idsetting on all objects of Two.js - Fixed
Two.ArcSegment.cloneouter radius issue - Standardized vertex generation in higher order primitives
- Type declaration improvements
- Improved
Two.Group.center,Two.Group.corner,Two.Path.center,Two.Path.corner - Improved SVG gradient interpretation
- Added
<defs />interpretation - Added
Two.Path.maskandTwo.Text.maskproperties - Standardized
Texture.idto be compliant with otherTwo.Shape.id - Added ability to interpret
<clipPath />and<image />SVG elements
# Apr 23, 2021 v0.7.5
Apr 23, 2021
v0.7.5 (opens new window)- Improved
Two.Circle.beginning&Two.Circle.endingbehavior - Improved
fittedlogic on instances ofTwo - Improved
Two.ChildrenandTwo.Collectioninstantiation versatility - Improved
Two.Group.getBoundingClientRect,Two.Path.getBoundingClientRect, andTwo.Text.getBoundingClientRect - Improved higher level shapes', like
Two.Circle, ability to handle zeroed out arguments
# Apr 2, 2021 v0.7.4
Apr 2, 2021
v0.7.4 (opens new window)- Improved Typescript type declarations
- Successfully export
extras/directory in both JavaScript and JavaScript Module format - Added
Two.Shape.skewXandTwo.Shape.skewY@gburlet (opens new window)
# Mar 26, 2021 v0.7.3
Mar 26, 2021
v0.7.3 (opens new window)- Exposed
Two.Shape.rendererfor easier access to underlying SVG elements - Added Typescript declaration types to Two.js
- Made
Two.Grouplisten toTwo.Shape.idchanges through new observable property and flags - Improved
Two.interpretperformance and functionality through improved regular expressions @adroitwhiz (opens new window) Two.Group.visibleis a property held on the group and does not trickle down to children- Improved scientific notation interpretation in SVG elements
Two.loadappends a hidden DOM element to the document's<head />so thatgetComputedStylesworks more consistently withTwo.interpret
# Jan 12, 2021 v0.7.1
Jan 12, 2021
v0.7.1 (opens new window)- Added
Two.AutoCalculateImportedMatricesto control different ways of importing SVG transformations - Fixed
Two.Text.classNameapplication - Added basic text support in
Two.interpret - Exposed
Two.fitfor external use - Added a
fittedargument to theTwoconstructor to make instance adaptively match the size of its parent element - Simplified
Two.releasemethod - Added support for scientific notation in
Two.interpret - Added
Two.Text.decorationstyling toTwo.CanvasRendererandTwo.WebGLRenderer - Increased precision on
Two.Utils.toFixedfor Firefox transformation engine performance increase - Added support to import
<use />tags from SVG interpretation @eulertour (opens new window) - Removed extraneous underscore calls from
Two.Utils@adroitwhiz (opens new window) - Ensured
Two.interpretrespects theaddparameter to be added (or not) to the current instance - Modularized Two.js classes / files @adroitwhiz (opens new window)
- Made Two.js compatible with
importmodules @adroitwhiz (opens new window) - Added wiki as VuePress (opens new window) project
# Jan 22, 2020 v0.7.0
Jan 22, 2020
v0.7.0 (opens new window)- Exposed
resolutionparameter inTwo.makeCircleandTwo.makeEllipseas the final parameter - Made
Two.CircleandTwo.Ellipserecalculate controls points on_updateand made vertex amounts cyclical @adroitwhiz (opens new window) - Added ESLint (opens new window) scripts to development environment @adroitwhiz (opens new window)
- Improve performance of WebGLRenderer by leveraging uniform to construct plane and removing duplicate render calls @adroitwhiz (opens new window)
- Unpacked
scaleobjects in WebGLRenderer @adroitwhiz (opens new window) - Removed unnecessary
gl.colorMaskcalls @adroitwhiz (opens new window) - Removed
Two.Utils.toFixedcalls on Canvas and WebGLRenderers @adroitwhiz (opens new window) Two.Shape.cloneclonesTwo.Shape.matrixwhenTwo.Shape.matrix.manualis set totrue- Improved
Two.Group.maskrendering inTwo.WebGLRenderer - Fixed
Two.WebGLRenderer.setSizerecursive loop error - Connected
Two.Shape.classNametoTwo.Shape.classListfor searching and class assignment in SVG elements - Performance improvements on canvas HTML5 styles @brandonheyer (opens new window)
- Added trickle down styling to
Two.Group.closed,Two.Group.curved, andTwo.Group.automatic - Check for Duplicity on
Two.Group.add - Accounted for offset positions in
Two.Path.centerandTwo.Group.centermethods - Exposed
Two.Shape.matrixas a publicly accessible property - Removed
Two.Utils.deltaTransformPointand patchedTwo.Utils.decomposeMatrixto more accurately parse matrices - Added support for various position inclusion of gradients and other effects in
Two.interpret - Improved
Two.Utils.applySvgAttributesrotation from SVG interpretation - Added
Two.makeArrowfor Simple Triangular Tipped Arrows @mike168m (opens new window) - Improved
Two.Matrixefficiency of calculations - Added
Two.Path.dashes.offsetandTwo.Text.dashes.offsetproperties for animating dashed strokes in all renderers - Fixed
Two.Path.cornermethod to not be additive on successive invocations - Split
Two.Matrix.toArrayinto two different functions. One for 2D transforms and one for a plain object (JSON) representation - Added
Two.Matrix.toTransformArrayintended for 2D transformation use internally WebGLRenderermore robustly supports displaying bitmap content- Added
<g />attributes to be inherited by children in SVG interpretation - Added
offscreenElementas an option when constructing WebGL Renderers for WebWorker compatibility - Added
Two.Shape.positionaccessor toTwo.Shape.translationfor ease of use with matter.js (opens new window) - Added
Two.Path.dashesandTwo.Text.dashessupport to WebGL and Canvas Renderers
# Dec 8, 2018 v0.7.0-beta.3
Dec 8, 2018
v0.7.0-beta.3 (opens new window)- Canvas Renderer supports dashed and non dashed paths
- Enforce
Two.Rectanglehas fourvertices - Fixed
Two.Path.closedon latestendingcalculations
# Nov 18, 2018 v0.7.0-beta.2
Nov 18, 2018
v0.7.0-beta.2 (opens new window)- Updated Two.js compatibility with webpack and node-canvas 2.0.0+
# Nov 3, 2018 v0.7.0-beta.1
Nov 3, 2018
v0.7.0-beta-1 (opens new window)- Altered
Two.Path.cloneandTwo.Text.cloneto use references where possible and to_update()on return - Improved multi-decimal and arc SVG interpretation
- Added
Two.Commands.arcfor better arc rendering across all renderers Two.PathandTwo.Textnow havedashesproperty to define stroke dashing behavior @danvanorden (opens new window)Two.Vectorarithmetic methods made more consistent — still need to improve performanceTwo.Path.verticeswill not clone vectors, improving developer clarity- Two.js clone methods do not force adding to a parent
Two.ImageSequence,Two.Sprite, andTwo.Rectanglehaveoriginproperties for offset renderingTwo.Group.getBoundingClientRectwill pass-through on effects instead of breakTwo.interpretapply SVG nodestyleattributes to paths. Inherits from groupsand infers SVGviewBoxattribute against Two.js instanceTwo.interpretimproves multi-decimal formatteddattributesTwo.ZUIadded through the new/extrasfolderTwo.Text.getBoundingClientRectnow returns an estimated bounding box objectTwo.interpretproperly assigns back calculatedZcoordinatesTwo.loadnow immediately returns aTwo.Groupfor use without callbacks if desired- Added
Two.Group.lengthto return the calculated length of all child paths Two.Group.beginningandTwo.Group.endingcalculate based on childTwo.Paths for intuitive grouped animating- Added
Two.Utils.shimto properly handlecanvasandimageelement spoofing in headless environments - Improved conformance between primitive shapes
Two.Path.getBoundingClientRectconsiders control points from bezier curvesTwo.Path.beginningandTwo.Path.endingcalculate based on distance increasing accuracy for animation, but also performance load- Moved
Two.Path._verticesunderlying to list of rendered points toTwo.Path._renderer.vertices - Improved accuracy of
Two.Path.endingandTwo.Path.beginningon open paths - Added specific
clonemethod toTwo.ArcSegment,Two.Circle,Two.Ellipse,Two.Polygon,Two.Rectangle,Two.RoundedRectangle, andTwo.Starprimitives - Added ability to read
viewBoxproperty from root SVG node inTwo.interpret - Added more reliable transform getter in
Two.interpret - Added
rxandryproperty reading onTwo.Utils.read.rect - Added
Two.Utils.read['rounded-rect']to interpret Rounded Rectangles - Added ability for
Two.RoundedRectangle.radiusto be aTwo.Vectorfor x, y component styling - Added ES6 compatible
./build/two.module.jsfor importing library - Improved
QSVG interpretation Two.Texture,Two.Sprite, andTwo.ImageSequenceimplemented inWebGLRenderer- Added
classNameproperty toTwo.Shapes for easier CSS styling inSVGRenderer@fr0 (opens new window) Two.Events.resizeis now bound to a renderer'ssetSizefunction giving a more generic solution to change scenegraph items based on dimensions changing
# Dec 1, 2017 v0.7.0-alpha.1
Dec 1, 2017
v0.7.0-alpha-1 (opens new window)- Fixed closed
Two.Path.getPointAtmethod to clamp properly - Added
Two.Texture.repeatfor describing pattern invocations - Added
Two.Texture,Two.Sprite, andTwo.ImageSequence - Removed
Two.Shapeinheritance forTwo.Gradients - Added
Two.Vector.rotatemethod @ferm10n (opens new window) - Objects clone to parent only if parent exists @ferm10n (opens new window)
- Vendor agnostic
requestAnimationFrame@ferm10n (opens new window) Two.Utils.Events.listenToandTwo.Utils.Events.stopListening@ferm10n (opens new window)Two.Utils.Eventsadded toTwo.Path.prototypefor event inheritance @ferm10n (opens new window)- Enhanced
Two.Shape.scaleto allow both numbers andTwo.Vectoras property value - Made
Two.interpretuse latest primitives - Added
Two.Circleprimitive Two.Shape.translationis now a getter/setter and can be replaced- Fixed translation interpretation to strip out
'px'strings - Removed
Two.SineRing— makeTwo.Star.curved = trueand it's the same effect - Enhanced
Two.ArcSegment,Two.Ellipse,Two.Polygon,Two.Rectangle,Two.RoundedRectangle,Two.Star - Fixed
Two.Anchor.relativeinterpretation insvg,canvas, andwebglrenderers - Made Getters / Setters enumerable for iteration compatibility
- Fixed Two.Utils.Collection.splice method and added additional test
- Added compatibility with node.js (opens new window), browserify (opens new window), and node-canvas (opens new window)
- Removed third party dependencies
- Added
removemethod toTwo.Text - Fixed ordering on same parent additions for
Two.Group
# Feb 9, 2016 v0.6.0
Feb 9, 2016
v0.6.0 (opens new window)- Updated
Two.CanvasRenderer.ctx.imageSmoothingEnabledto not use deprecated invocation, issue 178 (opens new window) - Fixed
Two.Group.maskinSVGRendererto append to DOM correctly - Updated
requireimports to be compatible with require.js (opens new window) - Added
Two.Textfor programmatically writing text in Two.js
# Oct 1, 2015 v0.5.0
Oct 1, 2015
v0.5.0 (opens new window)- Added support for
two.interpretto importsvg's gradients - Added
Two.Utils.xhrandtwo.loadmethods to asynchronously load SVG files - Added
Two.Gradient,Two.LinearGradient, andTwo.RadialGradient - Added dependency check to ensure ASM loading in environments like NPM as well as in the browser
- Properly deleted
webgltextures on removal ofTwo.Path - Added support for
two.interpretto importsvg's Elliptical Arcs (opens new window) - Added
Two.ArcSegmentandTwo.SineRingas new shapes invoked likeTwo.Path@chrisdelbuck (opens new window) - Added
Two.Line,Two.Rectangle,Two.RoundedRectangle,Two.Ellipse,Two.Polygon, andTwo.Staras new shapes invoked likeTwo.Path - Breaking: renamed
Two.PolygontoTwo.Path - Performance enhancements to
webglrenderer - Performance enhancements to
canvasrenderer Leo Koppelkamm (opens new window) - Enabled render ordering in
Two.Group.childrenbased on previous augmentation - Augmented
Two.Group.childrento inherit fromTwo.Collectioneffectively making it an array instead of a map Leo Koppelkamm (opens new window)- The map can still be accessed at
Two.Group.children.ids
- The map can still be accessed at
# Jul 22, 2014 v0.4.0
Jul 22, 2014
v0.4.0 (opens new window)- Updated
Two.interpretto handle polybezier path data - Added
Two.Group.maskandTwo.Polygon.clipin order to create clipping masks Two.Grouphas ownopacityproperty Leo Koppelkamm (opens new window)- Rendering optimizations Leo Koppelkamm (opens new window)
Two.noConflictnon-destructive command internally to the libraryTwo.interpretdecomposestransformattribute of source tagTwo.interprethandles item irregularities from Inkscape (opens new window)- Changed
Two.Identifierto use underscores instead of hyphens for dot-notation access Leo Koppelkamm (opens new window) - Added
Two.Group.getByIdandTwo.Group.getByClassNamemethods for convenient selection Leo Koppelkamm (opens new window) - Added
classListto allTwo.Shapes Leo Koppelkamm (opens new window) - Enabled inference of applied styles on imported svgs Leo Koppelkamm (opens new window)
- Added
Two.Polygon.getPointAtmethod to get coordinates on a curve/line - Added
Two.Polygon.lengthproperty andTwo.Polygon._updateLengthmethod to calculate length of curve/line - Updated
Two.Group.prototypeobservable properties onTwo.Polygon.Propertiesto ensure each property is considered unique Two.Polygon.verticesfirst and last vertex create automated control points whenTwo.Polygon.curved = true- Updated
Two.Polygon.subdividemethod to accommodateTwo.makeEllipse - Enabled
idto be properly interpreted from SVG elements @chrisdelbuck (opens new window) - Updated
webglrenderergetBoundingClientRectto accommodaterelativeanchors - Updated
beginningandendingto clamp to each other - Reorganized
Two.Polygon._updateandTwo.Polygon.plotin order to handlebeginningandendingproperties - Updated
Two.getComputedMatrixandTwo.Polygon.getBoundingClientRectto adhere to nested transformations - Updated
Two.Anchorto changecontrolpoints relatively by default throughanchor.relativeproperty - Updated
Two.Polygon.subdividemethod to accommodatecurved = falsecircumstances - Updated
svg,canvas, andwebglrenderers to properly reflect holes in curvedTwo.Polygons - Updated
Two.Groupclonemethod - Added
toObjectmethod toTwo.Group,Two.Polygon,Two.Anchor Two.Polygoninitializespolygon.cap = 'butt'andpolygon.join = 'miter'based on Adobe Illustrator defaultsTwo.Polygon.subdividemethod now works withTwo.Commands.movefor noncontiguous polygons- Internally update matrices on
getBoundingClientRectin order to remove the need to defer or wait for internal variables to be up-to-date - Refactor of renderers and scenegraph for performance optimization and lower memory footprint
- Relinquished internal events for flags
- Prototypical declaration of
Object.defineProperty - Added
_updateandflagResetmethods toTwo.Shape,Two.Group, andTwo.Polygon - Decoupled
canvasandwebglrenderers and are now independent - Added
_matrix.manualto override the default behavior of aTwo.Polygontransformation - Localized variables per file as much as possible to reduce Garbage Collection on runtime
# Oct 25, 2013 v0.3.0
Oct 25, 2013
v0.3.0 (opens new window)- Can properly pass
domElementon construction of new instance of two - Added
overdrawboolean towebglrenderer @arodic (opens new window) - Added support for ie9 svg interpretation @tomconroy (opens new window)
- Added
subdividemethod forTwo.PolygonandTwo.Group - Ensure sure that
manualproperly is set on construction ofTwo.Polygonthat it bindsTwo.Anchor.controlschange events - Added automatic High DPI support for
webglrenderer - Updated
two.interpret(svg)to handle compound paths - Added
Two.Anchor(opens new window) which represents all anchor points drawn in two.js - Modified source to not have any instances of
windowfor node use - Updated to underscore.js 1.5.1
- Added
Two.Utils.getReflectionmethod to properly get reflection's in svg interpretation - Made
Two.Vectorinherently not broadcast events and now needs to be explicitly bound to in order to broadcast events, which two.js does internally for you - Created
Two.Utils.Collectionan observable array-like class thatpolygon.verticesinherit @fchasen (opens new window) - Added
Two.Events.insertandTwo.Events.removefor use withTwo.Utils.Collection - Properly recurses
getBoundingClientRectfor bothTwo.GroupandTwo.Polygon - Added
Two.Versionto clarify forthcoming builds - Updated hierarchy ordering of
group.childrenincanvasandwebglrenderers - Updated shallow and bidirectional
removemethod forTwo.GroupandTwo.Polygon - Added
cornermethod toTwo.GroupandTwo.Polygonallowing anchoring along the upper lefthand corner of the form - Modified
centermethod ofTwo.GroupandTwo.Polygonto not affect thetranslationproperty to stay inline withcornermethod and any future orientation and anchoring logic - Added automatic High DPI support for
canvasrenderer - Added
overdrawboolean tocanvasrenderer - Added AMD loader compatibility @thomasrudin (opens new window)
- Deferred
two.update();to account for canvas and webgl - Added
removeandclearmethods totwoinstance - Updated svg interpretation for
webglcontext Added matrix property to allTwo.Shape's for advanced transformations- Added
inversemethod toTwo.Matrix - Remove execution path dependency on utils/build.js @masonblier (opens new window)
- Added
timeDeltaproperty to everytwoinstance - Added gruntfile, package.json for more integration with
npm, and dependency free build (build/two.clean.js) @iros (opens new window) - Crossbrowser compatibility with
noStrokeandnoFillcommands
# May 3, 2013 v0.2.0
May 3, 2013
v0.2.0 (opens new window)- First alpha release
# Jan 29, 2013 v0.1.0-alpha
Jan 29, 2013
v0.1.0-alpha (opens new window)- Proof of Concept built from Three.js