unified all boxes
- SVG.Box for everything
- bbox, rbox and viewbox as methods
- boxes can be created with string, array, object, list...
- added helper to simplify boxes code
### Added
- added a plot and array method to `SVG.TextPath` (#582)
- added `clone()` method to `SVG.Array/PointArray/PathArray` (#590)
- added `font()` method to `SVG.Tspan`
- added `SVG.Box()`
- added `transform()` method to boxes
- added `event()` to `SVG.Element` to retrieve the event that was fired last on the element (#550)
### Changed
- changed CHANGELOG to follow the conventions described in [“Keep a CHANGELOG”](http://keepachangelog.com) (#578)
- make the method plot a getter when no parameter is passed for `SVG.Polyline`,`SVG.Polygon`, `SVG.Line`, `SVG.Path` (related #547)
- allow `SVG.PointArray` to be passed flat array
- change the regexp `SVG.PointArray` use to parse string to allow more flexibility in the way spaces and commas can be used
- allow `plot` to be called with 4 parameters when animating an `SVG.Line`
- relative value for `SVG.Number` are now calculated in its `morph` method (related #547)
- clean up the implementation of the `initAnimation` method of the FX module (#547, #552, #584)
- deprecated `.tbox()`. `.tbox()` now map to `.rbox()`. If you are using `.tbox()`, you can substitute it with `.rbox()` (#594, #602)
- all boxes now accept 4 values or an object on creation
- `el.rbox()` now always returns the right boxes in screen coordinates and has an additional paramater to transform the box into other coordinate systems
- `font()` method can now be used like `attr()` method (#620)
- events are now cancelable by default (#550)
### Fixed
- fixed a bug in the plain morphing part of `SVG.MorphObj` that is in the FX module
- fixed bug which produces an error when removing an event from a node which was formerly removed with a global `off()` (#518)
- fixed a bug in `size()` for poly elements when their height/width is zero (#505)
- viewbox now also accepts strings and arrays as constructor arguments
- `SVG.Array` now accepts a comma seperated string and returns array of numbers instead of strings
- `SVG.Matrix` now accepts an array as input
- `SVG.Element.matrix()` now accepts also 6 values
- `dx()/dy()` now accepts percentage values, too but only if the value on the element is already percentage
- `flip()` now flips on both axis when no parameter is passed
- fixed bug with `documentElement.contains()` in IE
- fixed offset produced by svg parser (#553)
- fixed a bug with clone which didnt copy over dom data (#621)
There was a bug in the dequeue method of the FX module. It was not stopping
the current animation as it was supposed too. This bug is now fixed. Also,
I rewritten the test that @fuzzyma left commented. I changed its
implementation to not use the once callback since there seem to be some issues
when combining once and dequeue. The method stop was also modified, it now
call start only when it's revelant.
List of changes:
* Add tests for atEnd for the case the animation is in a infinite loop
* Fix a bug in atEnd that was uncovered by the new tests
* Fix the indentation of the methods atStart and atEnd
* Improve the comments of some of the others tests of atEnd
This commit finish fixing issue #552. It makes it unnecessary to specify a
unit with 0 when interacting with another SVG.Number that has a unit.
This was accomplished by modifying the operation methods of SVG.Number to
allow them to use the unit of the passed number when this number as no unit.
Here is a list of the changes:
* Enhance the call to plot in the constructor of SVG.Path, SVG.Line,
SVG.Polyline and SVG.Polygon
* Rewrite the description of the tests of the method plot for SVG.TextPath,
SVG.Path, SVG.Line, SVG.Polyline and SVG.Polygon to make it more precise
* Remove the useless parens surrounding track in the method array
of SVG.TextPath
This commit is mostly to clean up the implementation of the initAnimation
method of the Fx Module (issue #547). It also fixes these issues: #552, #582
and #584.
Here is a list of the changes and fixes that are made:
* Add a plot and array method to SVG.TextPath (issue #582)
* Make the method plot a getter when no parameter is passed for SVG.Polyline,
SVG.Polygon, SVG.Line, SVG.Path (this idea come from issue #547)
* Allow SVG.PointArray to be passed flat array
* Change the regexp SVG.PointArray use to parse string to allow more
flexibility in the way spaces and commas can be used to separate points
(something like this is now accepted: '1, 2, 3, 4')
* Allow plot to be called with 4 parameters when animating an SVG.Line
* Fix a bug in the plain morphing part of SVG.MorphObj that is in the FX module
* Relative value for SVG.Number are now calculated in its morph method (idea
from issue #547)
* Clean up the implementation of the initAnimation method of the FX module
(issues #547, #552, #584)
The method expect the paths to use the exact same commands. It will not
attempt to modify them if they do not. Any more complex algorithm shall be
provided as a plugin instead in order to keep the size of the library down.
The method expect the paths to use the exact same commands. It will not
attempt to modify them if they do not. Any more complex algorithm shall be
provided as a plugin instead in order to keep the size of the library down.
The first improvement is to stop using setTimeout to perform the delay. It is
now performed in a manner similar to the start method. This should be a lot
more reliable than using setTimeout and allow some nice goodies like
being able to pause it or affect its duration using the speed method.
The second improvement is to have the delay method add an empty situation
(with its duration set to the duration of the delay) to the queue. This change
allows dequeue not to have to treat delay added to the queue as something
special, now its just a situation.
Here are the changes that have been made:
- The loop counter is now incrementing (from 0 to loops)
- The loop counter increment even when loops is true
- Add absPos, the absolute position of an animation which is its position in
the context of its complete duration (including delay and loops)
- Make the methods speed, pause/resume affect the delay
- The method step no longer needs to recalculate the value of situation.start
- Add a second parameter to the method at to allow it to receive an absolute
position
- Fix the bug where the method at invert the passed position while the
animation is running backward
Also, I modified the tests of the FX module that required timing to use
Jasmine Clock, so now it takes less than 1 second to run all the tests!
According to the SVG spec, transformation chain can be separated by whitespace
and/or commas. The method matrixify was not working with transformation chain
separated by commas. This commit should fix that bug.
For example, a call .speed(2) would make the animation 2 times faster.
If you then call .speed(4), this would make the animation 4 times faster.
And a call .speed(1) would make it go back to normal speed.
- textpath now is a parent element, the lines method of text will return the tspans inside the textpath (#450)
- fx module rewritten to support animation chaining and several other stuff (see docs when commited)
- fixed absolute transformation animations (not perfect but better)
- fixed event listeners which didnt work correctly when identic funtions used
- added `element.is()` which helps to check for the object instance faster (instanceof check)
- added more fx specs