Commit graph

198 commits

Author SHA1 Message Date
Jürg Lehni
20cf32d599 Resolve question about wether last segment should be included in join or not. 2011-05-06 00:14:09 +01:00
Jürg Lehni
93fe0216d2 Add Path#addSegment(s) and #insertSegment(s) and define #add() and #insert() as a switch between these versions based on the amount and nature of parameters. 2011-05-05 12:35:14 +01:00
Jürg Lehni
7894a48ace Add parameter to Path#_add() that controls wether path is notified of change. 2011-05-05 11:40:46 +01:00
Jürg Lehni
ee6d593620 Cache strokeBounds and bounds only if no transformation matrix is passed. 2011-05-05 11:21:09 +01:00
Jürg Lehni
1279e820aa Use arc() instead of rect() to draw handles. 2011-05-05 11:01:20 +01:00
Jürg Lehni
a5099fd51d Add support for insertion of multiple segments at once to Path#_add(), #add() and #insert(), and change code that relies on these methods. 2011-05-04 18:42:40 +01:00
Jürg Lehni
728bf0441c Clean up Path#moveTo() and #lineTo() commands. 2011-05-03 09:12:07 +01:00
Jürg Lehni
52a73e86ce Clean up code (for() -> for ()). 2011-05-03 08:54:13 +01:00
Jürg Lehni
3af24e6178 Replace hidden getter call with direct access of internal property. 2011-05-03 08:47:52 +01:00
Jürg Lehni
a0e211c691 Big refactoring of how curves are kept in sync with segments (direct references rather than indices), along with various tests. 2011-05-03 00:25:23 +01:00
Jürg Lehni
0a4150a5c9 Add beginning of value caching (_length, _bounds) and change tracking to invalidate cached values. 2011-05-02 00:17:21 +01:00
Jürg Lehni
b0282b9bd4 Change Segment to be aware of its index in the segment list and have the curves list update automatically on each change to segments. 2011-05-01 13:27:53 +01:00
Jürg Lehni
6bbfd55240 Clean up Path#setSegments and begin moving of logic to keep Path#curves in sync away from Path#getCurves() to Path#setClosed(). Requires more work, e.g. Path#_add(). 2011-04-30 23:44:37 +01:00
Jürg Lehni
6cca355e20 Add Curve.create() as faster internal constructor. 2011-04-30 23:29:10 +01:00
Jürg Lehni
053fb2d955 Move Path#get/setSegments back to top and remove test-code for array object extension. 2011-04-30 23:24:39 +01:00
Jürg Lehni
781b315808 Add getter/setter for Path#closed. 2011-04-30 23:22:29 +01:00
Jürg Lehni
bf3bd13540 Simplify Path#cubicCurveTo(). 2011-04-30 23:17:19 +01:00
Jürg Lehni
d098c6e8b2 Fix index issue in #removeSegments(). 2011-04-28 19:03:05 +01:00
Jürg Lehni
121ec5a93f Allow #removeSegments() to be called without arguments, in which case all segments are removed. 2011-04-28 19:02:34 +01:00
Jürg Lehni
ea510c2403 Separate Path#remove(), #remove(index) & #remove(from, to) into #removeSegment(index) and #removeSegments(from, to). 2011-04-28 15:42:16 +01:00
Jürg Lehni
4d999d57e2 Replace all type converting string compares with ===, !==. 2011-04-28 13:23:17 +01:00
Jürg Lehni
115ef45464 Remove unnecessary .0 since numbers are all the same in JavaScript. 2011-04-28 13:13:33 +01:00
Jürg Lehni
0d697403b5 Clean up Path#curveTo() code. 2011-04-28 13:12:21 +01:00
Jürg Lehni
f69153844b Make #setContextStyles() a 'protected' function. 2011-04-28 13:04:12 +01:00
Jürg Lehni
6a483fa8be Rename CurveLocation related functions to *At(offset), and add optional isParameter argument that defines whether offset is a length or a description of curve index / curve parameter. 2011-04-27 21:40:52 +01:00
Jürg Lehni
ea6cf24aae Rename length parameter to more appropriate offset, to reflect recent name changes. 2011-04-27 21:23:57 +01:00
Jürg Lehni
016f4c15aa Rename CurveLocation#getLength() and #getCurveLength() to #getOffset() and #getCurveOffset(), and seperate Path#getLength([location]) into #getLength() and #_getOffset(). 2011-04-27 20:08:57 +01:00
Jürg Lehni
b0a1f4b1a9 Add missing Path#getPoint(length). 2011-04-27 19:28:39 +01:00
Jürg Lehni
c836012d3d Add CurveLocation#getTangent() and #getNormal() and use them in Path's versions. 2011-04-27 19:26:03 +01:00
Jürg Lehni
ebc9bc88c4 Use 0 instead of null for empty bit flag fields. 2011-04-27 19:11:22 +01:00
Jonathan Puckey
81a15379e5 Have Path#reverse also reverse the segment handles. 2011-04-27 15:49:06 +02:00
Jürg Lehni
cd2347aa9b Remove comment about pending port that has been backported to Scriptographer. 2011-04-27 11:24:13 +01:00
Jürg Lehni
1c9cd9ace4 Clean up code in #setContextStyles(). 2011-04-27 09:53:53 +01:00
Jürg Lehni
b7a4277143 Add comment about _x / _y properties and clean up code a bit. 2011-04-26 17:57:12 +01:00
Jürg Lehni
ead1600afe Clean-up CurveLocation code and switch from returning -1 to null for #getIndex(). 2011-04-26 17:49:54 +01:00
Jürg Lehni
c4ede92e81 Fix error in Path#getLastCurve(). 2011-04-26 17:48:36 +01:00
Jürg Lehni
ac5dca4fc0 Update various comments about TODOs. 2011-04-26 17:04:15 +01:00
Jürg Lehni
bdfe35d93a Consistently name local context variables 'ctx', to save line size and acknowledge the fact that Canvas contexts have a funny API design. 2011-04-26 15:39:16 +01:00
Jürg Lehni
9d2459d799 Rename '// Todo' to '// TODO', which is the convention. 2011-04-26 12:39:48 +01:00
Jonathan Puckey
5e6630a1f3 Speed up drawHandle function. 2011-04-23 15:56:27 +02:00
Jonathan Puckey
538f360a6b Fix Document#getSelectedItems & Path#setSegments. 2011-04-22 12:30:38 +02:00
Jonathan Puckey
4d89d6c235 Path#setSegments: reset _selectedSegmentCount when setting a new segment list. 2011-04-22 11:39:12 +02:00
Jonathan Puckey
af0543dac8 Some cleanups in Path. 2011-04-21 21:01:31 +02:00
Jonathan Puckey
be8ee90f75 Document: use a hash for Document#_selectedItems to speed up adding to and removing from it. 2011-04-21 20:43:42 +02:00
Jonathan Puckey
cf541901dd Rename getSelected methods to isSelected. 2011-04-21 19:51:49 +02:00
Jonathan Puckey
d831d66758 Implement SelectionState.js: bitwise flags for segment selection state. 2011-04-21 19:37:51 +02:00
Jonathan Puckey
7867a46c35 Path#setSelected: do XOR correctly. 2011-04-21 18:45:36 +02:00
Jonathan Puckey
cf2faa14e3 Path#join: use internal variables. 2011-04-21 18:43:22 +02:00
Jonathan Puckey
73b97dbfba Implement segment point selection. 2011-04-21 18:06:06 +02:00
Jonathan Puckey
732caec7bf Speed up drawing of selected items. 2011-04-21 15:48:21 +02:00
Jonathan Puckey
b2cd8cdec2 Path: use the internal SegmentPoint#_x and #_y properties where possible. 2011-04-21 15:25:25 +02:00
Jonathan Puckey
be9f312110 Implement a first version of drawing path selection. 2011-04-17 18:46:35 +02:00
Jonathan Puckey
74cee4abef Implement Path#remove() and add tests for it. 2011-04-13 16:16:32 +02:00
Jonathan Puckey
0d4517c77f Path: add todos for missing functions. 2011-04-12 14:36:02 +02:00
Jonathan Puckey
60dca8c2e8 Path#cubicCurveTo: convert arguments to points first. 2011-04-12 14:35:42 +02:00
Jonathan Puckey
91d8dd1187 Path: add todos for missing functions. 2011-04-12 14:28:18 +02:00
Jonathan Puckey
2a9bbd3dee Fix Path#closePath & CompoundPath#closePath. 2011-04-11 23:33:08 +02:00
Jonathan Puckey
499c421021 Implement Path#join(path) and add tests for it. 2011-04-11 23:30:08 +02:00
Jonathan Puckey
b46c6d0a29 Curve: implement getLocation(length), getLength(location), getTangent(length), getNormal(length) 2011-04-11 19:32:19 +02:00
Jürg Lehni
e83195bb8f Add #first/lastCurve getters. 2011-03-25 19:58:02 +02:00
Jürg Lehni
b5fdecf3d1 Rename ObservedRectangle to LinkedRectangle, ObservedPoint to LinkedPoint, and add more comments about what it is they are doing. 2011-03-22 17:27:46 +00:00
Jürg Lehni
2c9d168224 Clean up and improve Path drawing commands. 2011-03-19 23:09:17 +00:00
Jürg Lehni
1267f41559 Add beginning of ObservedRectangle support and test it in animatedStar example. 2011-03-16 23:32:46 +01:00
Jürg Lehni
c284b0837e Fix tiny error in Path#smooth() 2011-03-14 16:18:12 +01:00
Jürg Lehni
9d4af0ce9e Clean up recently caused Base.read() mess by introducing _readNull property,m setting it to true on Color and reverting to previous behavior for Point, Size and Rectangle, where dimensions of 0 are read by default if nothing is provided. 2011-03-13 18:31:00 +01:00
Jürg Lehni
484b2b0c94 Test code for Path#segments change observation. 2011-03-08 17:20:03 +00:00
Jürg Lehni
3927836441 Declare functions that work both as getters for beans and also as callalble functions with optional parameters differently, since they do not inject beans anymore if they declare parameters. 2011-03-08 17:19:02 +00:00
Jürg Lehni
74167ff28d Add test code for segments list that detects change. 2011-03-08 13:19:08 +00:00
Jürg Lehni
fc0d3efd29 Simplify Path constructor further. 2011-03-08 13:03:57 +00:00
Jürg Lehni
e35fb1efb6 Move populating of segments list to Path#setSegments() and rely on it in constructor. 2011-03-08 13:03:11 +00:00
Jürg Lehni
848befe103 No need to create a new segments array in setSegments, just set length of existing one instead. 2011-03-08 13:00:32 +00:00
Jürg Lehni
6a67052090 Update copyright / licensing comments. 2011-03-08 01:41:50 +00:00
Jürg Lehni
7956b50886 Use === for undefined comparisons. 2011-03-07 11:52:04 +00:00
Jürg Lehni
f7f5a70b1c Fix recently newly introduced bug in getStrokeBounds(). 2011-03-07 01:30:45 +00:00
Jürg Lehni
e1a7aff2f0 Add copyright notice and license file. 2011-03-07 00:50:44 +00:00
Jürg Lehni
0bfca81140 Clean-up getBounds() code and move to its own scope at the end of Path. 2011-03-07 00:36:44 +00:00
Jürg Lehni
c4ad95b0ac More variable chaining... 2011-03-06 22:06:24 +00:00
Jürg Lehni
4c13ca6961 Fix syntax errors (that magically work on Safari). 2011-03-06 22:06:06 +00:00
Jürg Lehni
87981efeb5 Massive refactoring of transform() / getBounds() code: getBounds() / getStrokeBounds() now supports an optional Matrix parameter which is used to on the fly transform all coordinates and stroke definitions before bounds are calculated. This even supports the correct determination of rotated ellipse bounds for round strokes in symbols. 2011-03-06 21:26:38 +00:00
Jürg Lehni
6def2b9d3a Clean-up Path#arcTo() code. 2011-03-06 21:13:55 +00:00
Jürg Lehni
4070f98374 Clean up calculateBounds(). 2011-03-06 18:33:52 +00:00
Jürg Lehni
836da3ce47 Make getCurrentSegment() a real private. 2011-03-06 15:21:12 +00:00
Jürg Lehni
dfb11610e7 Define getCurrentSegment() as private and make sure it's not used as a bean. 2011-03-06 15:17:06 +00:00
Jürg Lehni
e533b4edbb Move PostScript commands to the end of Path definition in its own injection block. 2011-03-06 15:15:13 +00:00
Jürg Lehni
501e42fb9d Add Path#getLength(). 2011-03-06 14:58:10 +00:00
Jürg Lehni
8b32aa9f09 Reactivate commented out code in addBevelJoin(), since it is required in some situations. 2011-03-06 14:51:46 +00:00
Jürg Lehni
f6a8de8cc6 Finish work on miter caps for Path#getStrokeBounds. 2011-03-06 14:45:32 +00:00
Jürg Lehni
5507482d8f Add support for bevel joins to Path#getStrokeBounds, miter still pending. 2011-03-06 13:26:36 +00:00
Jürg Lehni
de9a406dc0 Add support for all strokeCaps in getStrokeBounds, joins are still pending. 2011-03-06 13:11:25 +00:00
Jürg Lehni
00d58a3e61 Move Path#getCurveLength() to Curve#getLength() and update tests accordingly. 2011-03-06 12:29:17 +00:00
Jürg Lehni
909b2a22ba Begin implementing Path#curves list. 2011-03-06 12:24:15 +00:00
Jürg Lehni
fd0d409d9e More work on Path#getStrokeBounds(), unfinished. 2011-03-06 11:42:33 +00:00
Jürg Lehni
5a1d31bba7 Improve argument reading in PostScript drawing methods. 2011-03-06 11:23:21 +00:00
Jürg Lehni
56c10f9196 Fix Segment#getHandleIn/OutIfSet and a newly introduced drawing error in Path#draw. 2011-03-06 11:18:35 +00:00
Jürg Lehni
7bea7e36de Make use of new Segment#getHandleIn/OutIfSet() where we can. 2011-03-06 11:04:41 +00:00
Jürg Lehni
b98abeb416 Declare outX, outY outside of draw loop, as it is used from previous iteration. 2011-03-06 11:00:25 +00:00
Jürg Lehni
72a1ba8e70 Activate beans for Segment and clean up bean / getter / setter mess for point / handleIn / handleOut. 2011-03-06 10:57:14 +00:00
Jürg Lehni
e892d4446a More variable definition chaining. 2011-03-06 10:15:06 +00:00
Jürg Lehni
49e828ab9d Use chained variable definitions wherever we can to save space. 2011-03-06 10:14:12 +00:00
Jürg Lehni
3a51acec88 Begin implementing Path#getStrokeBounds(). 2011-03-06 10:09:37 +00:00