Commit graph

617 commits

Author SHA1 Message Date
Jürg Lehni
97b66582f8 Rename Item#applyMatrix() to shorter #apply(). 2011-12-23 22:41:05 +01:00
Jürg Lehni
93ede28f3b Implement new selection drawing mechanism.
Using the new Item#globalMatrix.
2011-12-20 11:42:00 +01:00
Jürg Lehni
daca14efb8 Add optional matrix in Path drawing code.
Required for new selection drawing mechanism to be implemented.
2011-12-20 11:40:31 +01:00
Jürg Lehni
42087071e7 Fix #strokeBounds for square caps.
Calculate the right points at both ends of paths.
2011-12-19 23:30:02 +01:00
Jürg Lehni
1e768e6c83 Fix #strokeBounds for strokes scaled using #matrix.
Gotta do the right thing, not the same buggy thing as Illustrator.
2011-12-19 23:21:13 +01:00
Jürg Lehni
4a46c8ac98 Fix recently introduced error with stroke/fillColor handling
Since CanvasContext#stroke/fillStyle cannot be set to null, we have to keep checking Style#fill/strokeColor even after calling #_setStyles().
2011-12-19 23:07:14 +01:00
Jürg Lehni
cc26fdc5d1 Optimise handling and setting of fill and stroke styles.
Handle setting of fillColor and strokeColor in Item#_setStyles() instead of the various #draw() methods, directly access internal styles instead of using accessor calls and fix PointText#draw().
2011-12-19 22:40:14 +01:00
Jürg Lehni
f5c1125709 Move Path#_setStyles() to Item, so it can be used in PointText too. 2011-12-19 21:25:39 +01:00
Jürg Lehni
466857659c Unroll loop in Path#_setStyles(). 2011-12-19 21:23:28 +01:00
Jürg Lehni
12dbb11ec3 Optimise and simplify ellipse code. 2011-12-19 13:51:26 +01:00
Jürg Lehni
3ccb4a6ebe Fix strokeBounds calculation when a rotation matrix is in use.
The bounding box of the rotated pen ellipse was calculated wrongly.
2011-12-19 13:47:30 +01:00
Jürg Lehni
daa1343155 Add comment about perhaps renaming Path.Oval to Path.Ellipse. 2011-12-19 13:16:29 +01:00
Jürg Lehni
83df011e1d Add missing colon. 2011-12-19 13:16:06 +01:00
Jürg Lehni
9e5eb17264 Improve Item#transform() and implement #applyMatrix() to support nested matrices. Work in progress. 2011-12-18 16:54:21 +01:00
Jürg Lehni
120ead209e Define Segment#clone(). 2011-12-07 11:54:41 +01:00
Jürg Lehni
566aaed0be Define Segment#equals(). 2011-12-07 11:53:07 +01:00
Jürg Lehni
3ece08bea1 Fix handling of recursion in Item#setSelected() / #setFullySelected(). 2011-11-30 17:16:52 +01:00
Jürg Lehni
b51cf064b0 Make baseItem to last optional parameter of _getBounds. 2011-11-26 11:55:19 +01:00
Jürg Lehni
f799c85e76 Switch to using 'this' in private getBounds methods to point to path item rather than 'that'. 2011-11-26 11:48:08 +01:00
Jürg Lehni
a0ad81b576 Pass on the baseItem of a getBounds call, required to implement proper caching later. 2011-11-26 11:24:48 +01:00
Jürg Lehni
569c415b2f Start implementing bounds caching the new way.
Work in progress still.
2011-11-24 15:37:44 +01:00
Jürg Lehni
c989d3ee3f Restructure code a bit for easier reading. 2011-11-24 15:18:57 +01:00
Jürg Lehni
ea87be166e Part one of big refactoring of bouding box handling. Functional, but caching is broken right now. 2011-11-24 15:13:21 +01:00
Jürg Lehni
b96cd4e1c8 Add comments about possible optimization of accessing of style properties. 2011-11-24 14:53:38 +01:00
Jürg Lehni
3f5e68aa76 Document the private getPendPadding() function. 2011-11-24 10:21:12 +01:00
Jürg Lehni
29aaf38320 Improve comments. 2011-11-24 10:17:31 +01:00
Jürg Lehni
cd1810e6a3 Fix arguments check in Path#getHandleBounds(). 2011-11-23 18:13:05 +01:00
Jürg Lehni
b9f6c99dcd Add comments and clean up code. 2011-11-17 19:28:05 +01:00
Jürg Lehni
c8e1a9c959 Merge remote-tracking branch 'origin/master' 2011-11-12 23:57:39 +01:00
Jürg Lehni
4ba752d42a Add note and TODO about Path#contains() only working correctly for no-zero winding rule, which is not used by Canvas... 2011-11-12 19:49:12 +01:00
Jürg Lehni
ddf7c6534b Fix Path#hitTest() to only consider strokeWidth if a strokeColor is provided too. 2011-11-12 19:48:39 +01:00
Jonathan Puckey
52385451f6 Resolve a few documentation todos. 2011-11-12 18:30:21 +01:00
Jonathan Puckey
3ac171a304 Path#smooth() example: select path using fullySelected instead of selected, so we can see its handles. 2011-11-12 16:45:33 +01:00
Jürg Lehni
a326b189b4 Improve Curve#isFlatEnough() by finding the right threshold through testing, and remove other less precise solutions. 2011-11-12 01:23:41 +01:00
Jürg Lehni
d43b54a531 Shorten Curve.isFlatEnough() code. 2011-11-11 20:58:33 +01:00
Jürg Lehni
fdd4ee8d31 Switch back to Kaspar Fischer's version of Curve.isFlatEnough, as it produces the best results with dashed lines. 2011-11-11 20:55:31 +01:00
Jürg Lehni
af9df0e1b8 Provide point of hit handles and segments too in HitResult. 2011-11-11 14:47:03 +01:00
Jürg Lehni
c4bea4d24c Include comment about algorithm modifications. 2011-11-10 18:30:18 +01:00
Jürg Lehni
3397931bb2 Be consistent in Numerical. EPSILON comparison rules. 2011-09-22 21:14:16 +02:00
Jürg Lehni
571ca31dbf Move ctx.restore() to same level as ctx.save(). Closes #51. 2011-09-18 10:56:04 +02:00
Jürg Lehni
4e1dd90549 Use faster Size.create(). 2011-08-16 13:52:31 +02:00
Jürg Lehni
4dd90b440e Use new dontLink parameter for Path.Constructors optimisations. 2011-08-16 13:52:18 +02:00
Jürg Lehni
8f8188a091 Optimise Path.Rectangle constructor. 2011-08-16 13:39:37 +02:00
Jürg Lehni
3c5a46a8af Implement SegmentPoint#isZero() that does not use the x / y accessors but the internal properties directly, for performance reasons, since it is used a lot internally. 2011-08-16 13:38:52 +02:00
Jürg Lehni
7e0307dd6a Correct comments. 2011-08-16 13:36:58 +02:00
Jonathan Puckey
3a3f5ecabb Segment: notify path of change when selection state of handles changes, so the view is redrawn. 2011-08-04 10:54:56 +02:00
Jürg Lehni
a8c08b3301 Docs: Document Path#getNearestLocation() and #getNearestPoint(). 2011-08-01 11:48:27 +01:00
Jürg Lehni
7f81184848 Only intersect lines if their lengths are not conflicting with Numerical.EPSILON comparison of the cross product in Line#intersect(). 2011-07-30 11:38:17 +01:00
Jürg Lehni
7d0db22b9b Use squared distances in nearest point algorithm. 2011-07-30 11:37:07 +01:00
Jürg Lehni
3a7c5286b5 Improve precision of Line#intersect() and other parts that check for a divisor to not be 0, by comparing against the new Numerical.EPSILON rather than Numerical.TOLERANCE. 2011-07-28 11:03:59 +01:00