Commit graph

1162 commits

Author SHA1 Message Date
Jonathan Puckey
5770ebc9ff Merge remote branch 'origin/master' 2011-06-05 15:04:43 +02:00
Jonathan Puckey
deec7512cc Path: fix return type in #getLocationAt documentation. 2011-06-05 15:04:34 +02:00
Jonathan Puckey
34b510bf1c Path: add examples to #getPointAt, #getNormalAt and #getTangentAt. 2011-06-05 15:00:43 +02:00
Jonathan Puckey
bb956c890f Add documentation stub for Path#arcTo(through, to) 2011-06-05 14:52:01 +02:00
Jonathan Puckey
4e0a857ee7 Fix a problem in Path#arcTo where it wasn't defaulting to a clockwise arc. 2011-06-05 14:51:37 +02:00
Jürg Lehni
b3d771a870 Remove Curve#transform() which is currently broken anyhow. 2011-06-05 13:27:39 +01:00
Jürg Lehni
e76c4e0de1 Implement Path#curvesToPoints() using the new PathFlattener class. 2011-06-05 13:21:00 +01:00
Jürg Lehni
74b9da9882 Define PathFlattener#evaluate() for curve evaluation at given offsets. 2011-06-05 13:20:20 +01:00
Jürg Lehni
c296eb0883 Fix wrong direction of tangent evaluation at t = 1. 2011-06-05 13:09:53 +01:00
Jürg Lehni
c2c5955717 Rename Curve#getCurvesValues() -> #getValues(). 2011-06-05 12:40:07 +01:00
Jürg Lehni
cb3834f41c Expose the previously private evalutate() function through Curve.evaluate(), make it work with curve value arrays, and use it the for various evaluation methods (#getPoint/Tangent/Normal). 2011-06-05 12:37:43 +01:00
Jürg Lehni
14816a872e Define Curve constructor for 8 parameters and implement Curve#getPart() that returns a new sub curve. 2011-06-05 12:36:26 +01:00
Jürg Lehni
3a0f43050e Rename length to offset. 2011-06-05 11:34:40 +01:00
Jürg Lehni
ef10c2797c Add Curve#getPart but hide for now as more work is required. 2011-06-05 11:34:24 +01:00
Jürg Lehni
b5a0979f58 Access internal Curve coordinate properties directly rather than through beans. 2011-06-05 11:33:55 +01:00
Jürg Lehni
47085e44ca Fix drawing of closed paths that was broken in recent commit. 2011-06-05 11:20:28 +01:00
Jürg Lehni
6095723e70 Fix single equal compare. 2011-06-04 21:46:48 +01:00
Jürg Lehni
90be683113 Clean up and add more comments. 2011-06-04 19:25:50 +01:00
Jürg Lehni
263fa8cbd9 Add comments. 2011-06-04 18:35:00 +01:00
Jürg Lehni
fafb6d1d76 Convert CurveFlattener to PathFlattener, which can handle drawing of parts accross curve boundaries. 2011-06-04 18:25:41 +01:00
Jürg Lehni
e097ff1303 Include copyright notice and clean up. 2011-06-04 16:12:55 +01:00
Jürg Lehni
5fa43efb79 Merge remote-tracking branch 'origin/master' 2011-06-04 16:08:52 +01:00
Jürg Lehni
6c74ace1ed Implement dashed stroke support. Work in progress. 2011-06-04 16:08:40 +01:00
Jürg Lehni
e5290c3f47 More work on Path#draw(). 2011-06-04 15:28:06 +01:00
Jürg Lehni
45a04891ee Clean up. 2011-06-04 15:16:30 +01:00
Jürg Lehni
91886211b5 Simplify Path#draw() by defining a private drawSegment() that's used to close paths too. 2011-06-04 15:16:21 +01:00
Jonathan Puckey
a96b272f7a Documentation edits. 2011-06-04 15:50:29 +02:00
Jürg Lehni
ce01d2cc59 Start implementing CurveFlattener, as required for dashing. 2011-06-04 12:40:58 +01:00
Jürg Lehni
bff3e14155 Implement a first crude version of Curve.isSufficientlyFlat() 2011-06-04 12:40:36 +01:00
Jürg Lehni
5581eefd0c Define default value of t = 0.5 in Curve.subdivide(). 2011-06-04 12:40:07 +01:00
Jonathan Puckey
5e05f38df0 Path docs: add return tag for #getLocationAt. 2011-06-03 23:06:05 +02:00
Jonathan Puckey
d77e9cfb4f Path docs: add Positions on Paths and Curves group title and temporary Path Smoothing group title. 2011-06-03 23:05:22 +02:00
Jonathan Puckey
083099a919 Add Path#closed example. 2011-06-03 23:04:18 +02:00
Jonathan Puckey
7d1297fcf4 Path#draw: Fix drawing of selected path handles. 2011-06-03 11:33:34 +02:00
Jürg Lehni
29967153c3 Clean up TODO comments... 2011-06-01 10:49:43 +01:00
Jonathan Puckey
2b8f1b71ec Documentation: use inline code tags for boolean and number values, 2011-05-31 14:28:42 +02:00
Jonathan Puckey
17fcb923ff Documentation: rearrange @example tags, improve examples, rename boolean -> Boolean and misc smaller edits. 2011-05-30 19:42:17 +02:00
Jonathan Puckey
16f521b8a2 Path.Constructors docs: move @example tags to the end of the comments and shorten the lines of the examples. 2011-05-30 17:13:19 +02:00
Jürg Lehni
9d00541987 Clean up PORT comments. 2011-05-29 19:20:10 +01:00
Jonathan Puckey
742d7f809d Segment: document #toString and #selected. 2011-05-29 16:57:48 +02:00
Jonathan Puckey
6b63bb8a36 Documention: add postscript methods to CompoundPath 2011-05-29 16:49:52 +02:00
Jonathan Puckey
41bf1f4543 CompoundPath: document #moveTo and #moveBy. 2011-05-29 16:13:30 +02:00
Jonathan Puckey
0b9c034e0d Path: document #addSegments and #insertSegments 2011-05-29 16:06:23 +02:00
Jonathan Puckey
78ab493709 Documentation: add todo to Path#add 2011-05-29 16:05:47 +02:00
Jonathan Puckey
cd76c8c0e1 Documentation: remove ^n from method names, since this isn't necessary anymore. 2011-05-28 02:18:10 +02:00
Jonathan Puckey
1520cad144 Documentation: capitalize basic types in @ tags. 2011-05-27 21:21:49 +02:00
Jonathan Puckey
8e84c79aa6 Documentation: capitalize 'string' and 'number' types. 2011-05-27 20:15:15 +02:00
Jonathan Puckey
25c3534dc1 Documentation: remove part of the constructor explanation of CurveLocation until the mentioned functions have been added. 2011-05-27 20:06:57 +02:00
Jonathan Puckey
4015b022ad Docs: use @true tag in boolean return descriptions and add Key.isDown param options. 2011-05-27 18:43:27 +02:00
Jonathan Puckey
373e14dd76 Improve CompoundPath documentation. 2011-05-27 13:54:34 +02:00
Jonathan Puckey
ca3230c1ad Documentation: reorder functions, add group titles and todos. 2011-05-27 13:28:13 +02:00
Jürg Lehni
397d3676ed Merge remote-tracking branch 'origin/master' 2011-05-26 21:00:05 +01:00
Jonathan Puckey
6b611add37 More documentation edits and function reordering. 2011-05-26 20:09:25 +02:00
Jonathan Puckey
65fa7fb01d Path documentation: use Type[] for 'typed' arrays. 2011-05-26 16:50:13 +02:00
Jürg Lehni
8130ee458f Rename #_countSelectedSegment() to #_updateSelection(). 2011-05-26 11:52:28 +01:00
Jürg Lehni
3e7806ae50 Move #_countSelectedSegment(). 2011-05-26 11:38:26 +01:00
Jürg Lehni
e31081f2fc Use Path#_countSelectedSegment() in #removeSegments() as well. 2011-05-26 11:38:08 +01:00
Jürg Lehni
c67209f889 Optimize Curve#initialize for minifying. 2011-05-26 11:09:02 +01:00
Jürg Lehni
362eca7061 Further optimize Segment#initialize for minifying. 2011-05-26 11:08:07 +01:00
Jürg Lehni
d8fbca0d68 Shorten Segment#_changed(). 2011-05-26 11:04:57 +01:00
Jürg Lehni
5b6bc1263c Allow selection state of Segments to be changed before they are added to a Path (Part two of fixing selection cloning). 2011-05-26 10:59:22 +01:00
Jürg Lehni
2d218dbb19 Change and optimise the way SegmentPoints are created, so that selected state is actually copied over properly (Part one of fixing selection cloning). 2011-05-26 10:58:16 +01:00
Jonathan Puckey
26aa3c00d7 Add CurveLocation documentation. 2011-05-23 17:39:26 +02:00
Jonathan Puckey
0e63f11b72 Add Curve documentation. 2011-05-23 17:24:57 +02:00
Jonathan Puckey
a389be30cf Add Path.Constructors documentation. 2011-05-23 14:33:22 +02:00
Jonathan Puckey
2a4f5b93f0 Path documentation: whitespace. 2011-05-23 13:37:40 +02:00
Jonathan Puckey
211635f206 Cleanup last commit. 2011-05-23 04:20:11 +02:00
Jonathan Puckey
6db1f6c54c Documentation: ignore various classes. 2011-05-23 04:18:21 +02:00
Jonathan Puckey
349e4023f3 CompoundPath documentation: adjust constructor docs. 2011-05-23 01:53:57 +02:00
Jonathan Puckey
ae6606e11c Add CompoundPath docs. 2011-05-23 01:49:01 +02:00
Jonathan Puckey
06a6d5cc70 Add documentation to Segment. 2011-05-23 00:42:22 +02:00
Jonathan Puckey
5cea863ccb Add documentation to Path. 2011-05-23 00:26:08 +02:00
Jonathan Puckey
469f72d36f Remove todo. 2011-05-21 21:39:27 +02:00
Jonathan Puckey
7cdacc5536 Optimize Segment#initialize for minification. 2011-05-21 19:21:13 +02:00
Jürg Lehni
2b5d648e96 Change SegmentPoint.create() to copy over selected state from a provided other point or object. 2011-05-21 14:27:29 +01:00
Jürg Lehni
b15eecc34d Use new internal Item#_clone() to improve Path#clone() and PointText#clone(). 2011-05-20 08:54:44 +01:00
Jürg Lehni
7401e42316 Implement #clone() for Item, Group and Path. Needs testing. 2011-05-19 21:56:23 +01:00
Jürg Lehni
2dcb09a662 Define Path#clone(). 2011-05-19 21:34:19 +01:00
Jürg Lehni
09612c4623 Remove the versions of #clone() that follow the scheme provided by Base#clone() now. 2011-05-19 18:35:38 +01:00
Jürg Lehni
ac213e94b4 Fix bug introduced in recent change to #getStrokeBounds(): We need to pass matrix as optional argument to #getBounds(). 2011-05-18 21:32:00 +01:00
Jonathan Puckey
0a385d56a7 Replace accidental beans access with direct access of internal property. 2011-05-18 20:22:57 +02:00
Jonathan Puckey
b4807b9b7c Fix Path#getStrokeBounds: use Path#getBounds when no strokeColor or strokeWidth are set. 2011-05-18 20:08:10 +02:00
Jonathan Puckey
241d98a1cf Merge remote branch 'origin/master' 2011-05-18 16:01:36 +02:00
Jonathan Puckey
8810563a8f Improve Raster#getAverageColor. 2011-05-18 16:00:55 +02:00
Jürg Lehni
eafc0d202e Add comment about #clockwise magic happening in #append*() methods. 2011-05-16 20:17:14 +01:00
Jürg Lehni
34110fa82d Move #_setStyle() closer to the related styles hash. 2011-05-16 19:19:18 +01:00
Jürg Lehni
c8c47bf641 get styles directly from _style object rather than passing through getters on Item. 2011-05-16 18:57:47 +01:00
Jonathan Puckey
4ad47ed3aa Fix accidental internal bean access to #fillColor and #strokeColor in Path#_transform. 2011-05-16 15:11:13 +02:00
Jürg Lehni
cfe968d30e Rename Document -> Project, DocumentView -> ProjectView, paper.document -> paper.project and paper.documents -> paper.projects, to avoid name clashing with window.document. 2011-05-16 13:33:15 +01:00
Jürg Lehni
a601cfdd6d Clear the indices and path references of the removed segments. 2011-05-16 01:37:31 +01:00
Jürg Lehni
3a15360efc Rename ChangeFlags.PATH to GEOMETRY. 2011-05-16 00:01:06 +01:00
Jürg Lehni
ebdf5a2dfd Shorten CompoundPath#moveBy(). 2011-05-15 19:58:09 +01:00
Jürg Lehni
54161f81f1 Add expected parameters to function signature. 2011-05-15 19:57:48 +01:00
Jürg Lehni
c4c4f51eb9 Shorten getCurrentPath(). 2011-05-15 19:31:25 +01:00
Jürg Lehni
7ba2fcad2a Allow passing of Paths to CompoundPath constructor as arguments, without an array object. 2011-05-15 19:14:09 +01:00
Jürg Lehni
c9d0f982c2 Don't set _clockwise in Path#isClockwise(), as it should only be set once the use explicitely does so. 2011-05-15 19:02:50 +01:00
Jürg Lehni
4cee442a05 Rename items parameter to paths. 2011-05-15 18:05:47 +01:00
Jürg Lehni
3d76034600 Use Path#setClockwise() in CompoundPath constructor to reverse top path so that the others appear as holes cut out from it. 2011-05-15 18:05:00 +01:00
Jürg Lehni
813b70c70b Update comment a bit to make code more clear. 2011-05-15 17:59:57 +01:00
Jürg Lehni
40c988b313 Add Path#is/setClockwise(), as a way to check and define a path's orientation. 2011-05-15 17:59:06 +01:00
Jürg Lehni
252a3635dc Replace {@true} tags in documentation ({@true ([^}]*)} -> true $1, false otherwise.) 2011-05-15 15:06:10 +01:00
Jürg Lehni
c91cbe2175 Merge remote-tracking branch 'origin/master' 2011-05-15 14:37:34 +01:00
Jürg Lehni
057b71ff4c Don't overuse variable chaining - use only were readibility does not suffer. 2011-05-15 14:29:00 +01:00
Jonathan Puckey
1a82ef4a34 Merge remote branch 'origin/master' 2011-05-15 14:09:57 +02:00
Jürg Lehni
51dbd85db5 Add experimental orientation detection for Paths. 2011-05-15 11:33:09 +01:00
Jonathan Puckey
42ae3ce42e CompoundPath#draw: set param.compound to false when done drawing. 2011-05-14 20:36:58 +02:00
Jürg Lehni
0bab694a01 Rename Item#children to private Item#_children and add #getChildren getter. 2011-05-14 18:07:10 +01:00
Jonathan Puckey
2bfe42da05 Have the CompoundPath constructor reverse the segments of all paths passed to it except for the first one. Introduce 'keepDirection' option to allow importing of already existing CompoundPath items. 2011-05-14 13:03:18 +02:00
Jonathan Puckey
032d19b0d2 Fix bug in CompoundPath where toCssString was being called instead of getCanvasStyle, resulting in problems when gradients were used. 2011-05-12 15:30:56 +02:00
Jonathan Puckey
bbccb25184 Transform gradient when path is transformed. 2011-05-08 14:05:47 +01:00
Jürg Lehni
2f4f003873 Have Base.read() clone owned objects such as SegmentPoint or LinkedPoint. 2011-05-08 13:38:09 +01:00
Jürg Lehni
327515a9de Add missing header. 2011-05-08 09:59:37 +01:00
Jürg Lehni
70d0dd9c0c Move #moveTo() to the same scope as the other drawing commands, and add explaining comments. 2011-05-07 17:11:06 +01:00
Jürg Lehni
979bda52ab We don't need the empty #initialize(). 2011-05-07 17:05:42 +01:00
Jürg Lehni
8c7b253bc2 Add Base.splice() to handle lists of items with _index referneces and use it for paper.documents and Item#children. 2011-05-07 16:11:05 +01:00
Jürg Lehni
b44e796475 Make sure getters dont return undefined but null instead. 2011-05-07 16:10:38 +01:00
Jürg Lehni
81c1b2dcce Clean up Path#_add() a bit. 2011-05-07 15:38:36 +01:00
Jürg Lehni
59e2783979 Use tripple equal operators for string compares now. 2011-05-07 14:32:27 +01:00
Jürg Lehni
4e6e855461 Change '// TODO: Port' comments to '// PORT:'. 2011-05-07 14:18:27 +01:00
Jürg Lehni
dabc2b97ed Implement change-notification in a proper way, using ChangeFlags that tell it what exactly has changed, and clearing caches accordingly. 2011-05-07 13:39:17 +01:00
Jürg Lehni
53cc1cd908 Apply #position optimisation through caching to all items, not just PlacedSymbol. 2011-05-07 13:13:19 +01:00
Jürg Lehni
6af787e475 Move access to Numerical.TOLERANCE out of the injection scope into getBounds(), so util files can be included at the end of the library again. 2011-05-07 11:23:46 +01:00
Jürg Lehni
0fc7216f1c Fix typos introduced in recent commit. 2011-05-06 13:40:43 +01:00
Jürg Lehni
c36db3a55c Introduce private faster Matrix#_transform* methods that lack arguments checks, and use them internally. 2011-05-06 13:28:35 +01:00
Jürg Lehni
aed1bb0878 Use Numerical.TOLERANCE instead of hardcoded one. 2011-05-06 12:06:05 +01:00
Jürg Lehni
66602c9cec Remove comment about necessity to reverse coordinate system. 2011-05-06 01:27:47 +01:00
Jürg Lehni
0b082289a6 Simplify Path#arcTo() a lot (get rid of necessity to reverse coordinate system in y-direction, etc). 2011-05-06 01:26:23 +01:00
Jürg Lehni
18ef19649c Remove comment about unnecessary change. 2011-05-06 00:45:46 +01:00
Jürg Lehni
680ae49ec8 Clean up code a bit and add comment about possible further optimsiations. 2011-05-06 00:44:54 +01:00
Jürg Lehni
a3065a59d1 Simplify Path#arcTo(). 2011-05-06 00:42:10 +01:00
Jürg Lehni
a4b37a6278 Simplify addJoin(). 2011-05-06 00:39:44 +01:00
Jürg Lehni
a3da96e8be Remove notify parameter again from _add(). 2011-05-06 00:18:56 +01:00
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
bc80c58558 Add Base.formatNumber() to format numbers in the same way as Scriptographer (precision of up to 5 fractional digits) and use it in the various #toString() functions. 2011-05-04 19:42:50 +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
Jonathan Puckey
2ee7081c14 Merge remote branch 'origin/master' 2011-05-02 12:25:32 +02:00
Jonathan Puckey
41120cf4d9 Various small code cleanups. 2011-05-02 12:23:42 +02:00
Jürg Lehni
98ab342235 Shorten #_transformCoordinates() a bit. 2011-05-02 08:59:51 +01:00
Jürg Lehni
26b70309a8 Improve various #toString() functions. 2011-05-02 08:57:55 +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
2cdb15f2d6 Fix recently renamed functions in commented out code. 2011-05-01 23:29:15 +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
0680a50fd2 Fix yet another two bugs in CurveLocation. 2011-05-01 13:18:36 +01:00
Jürg Lehni
08e779d560 Fix two bugs in CurveLocation. 2011-05-01 13:16:25 +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
6d84dc3351 Segment#isSelected() only checks for selection state of point. We need to check _selectionState instead to mirror behaviour in #_setSelected(). 2011-04-28 19:04:00 +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
a9ea10ca7f Move version of #getBounds() that handles children to Item, to eliminate duplicated code. 2011-04-28 10:04:36 +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
3501e14c51 Remove comment about pending port that has been backported to Scriptographer. 2011-04-27 21:13:32 +01:00
Jürg Lehni
c2fbcbcaa8 Use Curve#getLength(from, to) rather than cloning and dividing. 2011-04-27 20:52:24 +01:00
Jürg Lehni
346493fb7c Replace calls to getters with their internal property in all cases where getter does not perform additional magic. 2011-04-27 20:48:41 +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
bf0bc81892 Fix various minor bugs in CurveLocation: We cannot rely on most of its field to always be set and need to call getters instead. 2011-04-27 19:24:40 +01:00
Jürg Lehni
cc06a6f128 Remove CurveLocation#getPath() again as its functionality is provided by #getItem() already. 2011-04-27 19:22:57 +01:00
Jürg Lehni
ebc9bc88c4 Use 0 instead of null for empty bit flag fields. 2011-04-27 19:11:22 +01:00
Jürg Lehni
c6d96784ba Further simplify and compress code. 2011-04-27 18:16:32 +01:00
Jürg Lehni
f71967f3d3 Further simplify and compress code. 2011-04-27 17:57:56 +01:00
Jürg Lehni
6b6f27cb6e Add TODOs about not returning -1 for undefined. 2011-04-27 17:53:59 +01:00
Jürg Lehni
4bfc56bb6d Simplify and compress code a bit. 2011-04-27 17:53:23 +01:00
Jonathan Puckey
81a15379e5 Have Path#reverse also reverse the segment handles. 2011-04-27 15:49:06 +02:00
Jürg Lehni
ae3ec6f2d7 Remove comment about pending port that has been backported to Scriptographer. 2011-04-27 12:36:04 +01:00
Jürg Lehni
9671ac6dbc Remove comment about pending port that has been backported to Scriptographer. 2011-04-27 12:30:17 +01:00
Jürg Lehni
e6a0f48256 Further clean-up code, as we only need previous / next references inside one sub-condition. 2011-04-27 12:26:10 +01:00
Jürg Lehni
138ec7d93c No need to perform cyclic looping here now, since #getNext/Previous() does that for us. 2011-04-27 12:24:04 +01:00
Jürg Lehni
a251a24347 Add some TODOs to check. 2011-04-27 12:21:47 +01:00
Jürg Lehni
0e89466a11 Add cyclic looping to Segment#previous/next for closed paths. 2011-04-27 12:21:31 +01:00
Jürg Lehni
92369bf14f Seperate the private Segment#is/setSelected(point) methods from the newly added getter / setter. 2011-04-27 12:15:51 +01:00
Jürg Lehni
6204eef643 Remove comment about pending port that has been backported to Scriptographer. 2011-04-27 12:08:13 +01:00
Jürg Lehni
776edda51d Cleaned-up Segment#is/setSelected() code a bit. 2011-04-27 12:06:44 +01: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
41eb09f15f Add forgotten brackets in Curve#isSelected() and remove comments about backporting as it is ported now. 2011-04-27 10:52:56 +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
77ad25ffba Clean up port comments. 2011-04-26 17:47:30 +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
a20f988511 Minor code cleanup. 2011-04-26 12:55:20 +01:00
Jürg Lehni
9d2459d799 Rename '// Todo' to '// TODO', which is the convention. 2011-04-26 12:39:48 +01:00
Jürg Lehni
e8a2a786e0 Fix Curve#getParameter() for straight lines. 2011-04-26 12:30:58 +01:00
Jürg Lehni
6609dc2307 Implement new root finding algorithm, combining Newton-Raphson Method with Bisection, and update Curve#getParameter() to use it. 2011-04-26 12:23:09 +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
11063af8df CompoundPath cleanups. 2011-04-21 21:12:48 +02:00
Jonathan Puckey
1ea0a811b5 Use internal variables in CompoundPath#moveBy and Segment#isSelected. 2011-04-21 21:06:35 +02:00
Jonathan Puckey
af0543dac8 Some cleanups in Path. 2011-04-21 21:01:31 +02:00
Jonathan Puckey
dfb5cbc5eb Fix two bugs in the selected items code. 2011-04-21 20:52:28 +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
745f002cd3 Segment: add todo. 2011-04-21 20:00:11 +02:00
Jonathan Puckey
abb0878a25 Curve: Implement selection of curves. 2011-04-21 19:54:32 +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
Jürg Lehni
985aa5aff8 Directly access internal _x and _y properties on internal SegmentPoints, to avoid callling getters. 2011-04-21 13:33:12 +01:00
Jürg Lehni
96f266b4d2 Add beginning of SegmentPoint class. 2011-04-21 13:21:56 +01: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
6d4d07f2a8 Path.Constructors: simply Path.Star constructor. 2011-04-13 00:05:46 +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
491250ef14 Simplify Path.Star constructor. 2011-04-12 14:20:56 +02:00
Jonathan Puckey
12de77eb42 Path.Constructors: implement Path.Star and add tests. 2011-04-12 14:18:00 +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
594c11fedd CurveLocation: fix mistakes. 2011-04-11 19:36:40 +02:00
Jonathan Puckey
aa043428c0 CurveLocation: add empty line to end of file. 2011-04-11 19:33:34 +02:00
Jonathan Puckey
b46c6d0a29 Curve: implement getLocation(length), getLength(location), getTangent(length), getNormal(length) 2011-04-11 19:32:19 +02:00
Jonathan Puckey
d396f48c4b Implement CurveLocation. 2011-04-11 19:32:04 +02:00
Jürg Lehni
08d0499251 Change comment. 2011-03-25 19:58:20 +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
417d015eab Improve curve time parametrization precision by iteratively adding up sub-range lengths, and optimise speed by determining integration precision based on range size. 2011-03-20 11:38:06 +00:00
Jürg Lehni
11e70c5069 Use fast Newton-Raphson Method for now. 2011-03-20 02:02:02 +00:00
Jürg Lehni
02328287cb Use n=16 evaluations in integrations for now. 2011-03-20 02:00:15 +00:00
Jürg Lehni
ad71293983 Remove Van Wijngaarden–Dekker–Brent method again as it led to imprecise results, and experiment with the very fast Newton-Raphson method (keeping False Position as a possible fallback for now). 2011-03-20 00:04:33 +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
526e2ea0ba Hide Curve#getLength() parameters from Bootstrap so it injects bean too. 2011-03-08 17:31:36 +00:00
Jürg Lehni
195b089424 Clean up Path.* constructors and make sure they handle Base.read() returning null. 2011-03-08 17:20:30 +00: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
c4c5b070b5 Minor code clean-up. 2011-03-07 16:51:12 +00:00
Jürg Lehni
59cb7e937e Add control over maximum iterations to Numerical.findRoot(). 2011-03-07 11:59:43 +00:00
Jürg Lehni
d9b8809f3c Further clean up getParameter() code. 2011-03-07 11:58:41 +00:00
Jürg Lehni
7956b50886 Use === for undefined comparisons. 2011-03-07 11:52:04 +00:00
Jürg Lehni
1e8dffac08 Clean up getParameter() code. 2011-03-07 11:51:01 +00:00
Jürg Lehni
0ddfc9ef33 Add support for sub ranges and negatives lengths in Curve#getParameter(), a prerequirement for adding dash support. 2011-03-07 11:37:42 +00:00
Jürg Lehni
2ac9a13e2a Give Numerical methods more meaningful names. 2011-03-07 11:12:00 +00:00
Jürg Lehni
08545983d7 Minor clean-ups. 2011-03-07 02:38:07 +00:00
Jürg Lehni
4dd4072f6b Use push() instead fo concat() for better getParameter() performance. 2011-03-07 02:35:06 +00:00
Jürg Lehni
3d7e66053c Simplify getLength() for line ranges. 2011-03-07 02:33:36 +00:00
Jürg Lehni
172212c222 Clean-up code and comments. 2011-03-07 02:28:49 +00:00
Jürg Lehni
add0bcf1fd Yet more optimisations in getParameter(), both for straight lines and curves. 2011-03-07 02:26:59 +00:00
Jürg Lehni
0e8c346888 Further optimise getParameter() / getLength() code by reusing a integrand function and taking advantage of integral ranges. 2011-03-07 02:22:33 +00:00
Jürg Lehni
3447d11a6f Some minor clean-ups. 2011-03-07 01:40:18 +00:00
Jürg Lehni
027a5e67b9 Add getLength() optimisation for straight lines. 2011-03-07 01:37:18 +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
9fdbd0146d Rename MathUtils to Numerical. 2011-03-07 00:21:04 +00:00
Jürg Lehni
58f5c8554e Add comments about initial guess. 2011-03-07 00:17:43 +00:00
Jürg Lehni
65900f8790 Implement Curve#getParameter() using MathUtils.brent(), with the astonishing result that performance can match the Java side on Chrome! 2011-03-07 00:00:45 +00:00
Jürg Lehni
29e57cc521 Replace slow simpson() method with insanely fast Gauss-Legendre Numerical Integration by Jim Armstrong which was further optimised. 2011-03-06 23:24:33 +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
90b94a8d83 Various simplificiations and clean-ups in Path constructors. 2011-03-06 18:46:28 +00:00
Jürg Lehni
deb78b78cf Define fast Rectangle.create() and use it internally where applicable. 2011-03-06 18:45:56 +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
f803e1ad1d Remove obsolete comment. 2011-03-06 15:14:57 +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
2df6dc989a Add comments about changes that need backporting to Scriptographer. 2011-03-06 14:45:44 +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
407b6d8d33 Add Curve#getPrevious / Next. 2011-03-06 13:26:09 +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
15f124bd9c Link segments to their curves through Segment#getCurve(). 2011-03-06 13:11:04 +00:00
Jürg Lehni
eb09ec2442 Fix error in Curve evaluation. 2011-03-06 13:07:49 +00:00
Jürg Lehni
e19c3bf3c2 Define Curve#toString() and Curve#clone() 2011-03-06 12:56:47 +00:00
Jürg Lehni
f98de38451 Correct Segment#toString() 2011-03-06 12:56:30 +00:00
Jürg Lehni
d15bf94f8f Add curve evaluation methods, untested. 2011-03-06 12:52:13 +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
3ca1e4a25e Always update segments when index is set, as segments list might have shifted in the meantime. 2011-03-06 12:25:08 +00:00
Jürg Lehni
909b2a22ba Begin implementing Path#curves list. 2011-03-06 12:24:15 +00:00
Jürg Lehni
474d79db17 Clean up Segment constructor and make sure internal point objects are never replaced, always updated instead. 2011-03-06 12:24:03 +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
Jürg Lehni
352b3f0d40 More work on Bootstrap core, move Base.isArray back to Array.isArray. 2011-03-05 13:53:18 +00:00
Jürg Lehni
4908ba5edf Expand shortened name. 2011-03-05 01:37:02 +00:00
Jürg Lehni
ce74516228 Remove more beans access, this time related to various PathStyle getters / setters. 2011-03-05 01:36:27 +00:00
Jürg Lehni
c313e702c9 Clean up a whole lot of beans access, and in the process of the refactoring improve canvas, context, size and bounds handling in Raster and PlacedSymbol. 2011-03-05 01:26:12 +00:00
Jürg Lehni
815e35fda6 Fix Segment#toString(). 2011-03-04 23:55:49 +00:00
Jürg Lehni
8d5024523c Add Path#first/lastSegment. 2011-03-04 23:33:37 +00:00
Jürg Lehni
7355c2d4a7 Switch to using Base.isArray. 2011-03-04 21:47:00 +00:00
Jürg Lehni
aa4892c0d8 Apply same optimisations from DOM methods in Item / Layer to Segment too. 2011-03-04 21:34:31 +00:00
Jürg Lehni
92bf51a7cc Simplify the way the paper namespace is created and populated. 2011-03-04 13:34:31 +00:00
Jürg Lehni
c6d79f964c Generalise all read() functions in Base.read(), fix an issue in by making sure arguments passed to initialie are never larger than length, and have Color's initialize create an RGBColor, to still be able to use Color.read(). 2011-03-04 13:19:07 +00:00
Jonathan Puckey
3837ca1f14 Have Path#setSegments convert elements in the passed array to segments. 2011-03-04 13:02:11 +01:00
Jürg Lehni
2b6dede883 Clean up white-spaces and line lengths. 2011-03-03 22:45:17 +00:00
Jürg Lehni
cbe29fd02b Rename Color#getCssString() to #toCssString(), to go with #toString(). 2011-03-03 17:36:53 +00:00
Jürg Lehni
46a0589547 Use Error constructor correctly. 2011-03-03 17:29:40 +00:00
Jürg Lehni
941c3c7346 Declare all classes as local variables, so they can be scoped. 2011-03-03 13:33:41 +00:00
Jürg Lehni
c84df5a346 Use Segment.read() correctly in Path#initialize(). 2011-03-03 13:16:14 +00:00
Jürg Lehni
3a46ac3b54 Allow read() methods to receive an optional length parameter. 2011-03-03 13:15:55 +00:00
Jürg Lehni
ecbd52cdf7 Fix Path.Line() constructor with 4 arguments. 2011-03-03 13:10:29 +00:00
Jürg Lehni
e089e080c2 Make Path#_add() handle both addition and insertion, and use it consequently so segment.path always gets correctly set. 2011-03-03 13:10:17 +00:00
Jürg Lehni
9a2462d147 No need to explicitely call Point#toString() in Segment#toString(). 2011-03-03 13:03:57 +00:00
Jürg Lehni
d4d6d652ec Rename Path#addSegment() to #_add(), to make sure it's supposed to be a private method. 2011-03-03 12:51:47 +00:00
Jürg Lehni
53b091b871 Rename #transformContent() to #_transform(), to make sure it's supposed to be a private method. 2011-03-03 12:47:55 +00:00
Jürg Lehni
490ef78b53 Fix error in CompoundPath#closePath(): Forgot to pass 'this' to getCurrentPath(). 2011-03-03 12:26:28 +00:00
Jürg Lehni
1d37c7b76f Use 'that' variable for private instance method. 2011-03-03 12:25:41 +00:00
Jürg Lehni
26ebe2f2c0 Refacture CompoundPath to only use injection scope for methods that require getCurrentPath(). 2011-03-03 12:23:46 +00:00
Jürg Lehni
07fcc000cf Move the new refactored CanvasDraw functionality to static Item.draw() and #draw() instance methods on each prototype. 2011-03-03 12:19:43 +00:00
Jürg Lehni
54bb4d5527 Merge remote-tracking branch 'origin/master' 2011-03-03 10:55:39 +00:00
Jürg Lehni
964dc462e9 Add comments to Path#strokeBounds and scafolding for #controlBounds too. 2011-03-03 10:55:35 +00:00
Jonathan Puckey
8ff04b6614 Unify canvas drawing commands in CanvasDraw.js and rework compositing code. 2011-03-03 02:22:21 +01:00
Jürg Lehni
91ec37de9c Add foundations for Path#strokeBounds support. 2011-03-02 17:27:20 +00:00
Jürg Lehni
620cb2c754 Various clean-ups in Path. 2011-03-02 17:23:45 +00:00
Jürg Lehni
dbbefa9526 index on master: fd4b7b7 Include DocumentView.js in all examples and tests. 2011-03-02 16:22:26 +00:00
Jonathan Puckey
74f797a9dd Clean up whitespace. 2011-02-28 18:30:08 +01:00
Jonathan Puckey
c6d606db0a Path: After calling Path#add(segment), return the added segment. Add todo to Path#insert. 2011-02-27 15:50:41 +01:00
Jonathan Puckey
9496ac70bd Clean up Path.RegularPolygon constructor. 2011-02-26 19:21:52 +01:00
Jonathan Puckey
eebe7e2731 Implement Path.RegularPolygon constructor and add tests for it. 2011-02-26 19:19:02 +01:00
Jürg Lehni
506e7c036c Merge remote-tracking branch 'origin/master' 2011-02-26 17:27:12 +01:00
Jürg Lehni
6d25dbbd22 Add beginning of path length calculations, work in progress. 2011-02-26 17:26:54 +01:00
Jonathan Puckey
51f4ee718c As in Scriptographer, we don't worry if there wasn't a moveTo before the first lineTo. 2011-02-26 12:44:09 +01:00
Jonathan Puckey
8828ed7e25 CompoundPath - check for this.blendMode != 'normal'. 2011-02-26 01:02:17 +01:00
Jonathan Puckey
c9d04d33f8 Implement BlendMode class. 2011-02-25 12:47:52 +01:00
Jonathan Puckey
4d83631230 Segment: remove todo. 2011-02-24 17:14:59 +01:00
Jonathan Puckey
f65625b591 Change CompoundPath#moveBy to be relative to the previous position in lack of an argument. 2011-02-24 17:13:41 +01:00
Jonathan Puckey
ad82be1bec Add CompoundPath#bounds 2011-02-24 17:11:02 +01:00
Jürg Lehni
0d53167926 Simplify calculation of bezier polynomial derivative, by dividing all factors by 3. 2011-02-22 10:39:05 +01:00
Jürg Lehni
614f9998de More optimisations in Path#getBounds(). 2011-02-22 10:35:48 +01:00
Jürg Lehni
a08e3dc366 Optimise Path#getBounds() by merging internal f() and bounds() functions and thus reducing calls. 2011-02-22 10:33:46 +01:00
Jürg Lehni
452b1e2792 Add explanations to Path#getBounds(). 2011-02-22 10:25:18 +01:00
Jonathan Puckey
b9d37e1b9b Only draw a CompoundPath if it is visible. 2011-02-21 03:52:03 +01:00
Jonathan Puckey
357a8af6ec Clean up white spaces. 2011-02-21 03:32:39 +01:00
Jonathan Puckey
5e271359b9 Add todo. 2011-02-21 01:16:53 +01:00
Jonathan Puckey
f83309d6b7 Optimize Path#draw. 2011-02-20 20:47:13 +01:00
Jürg Lehni
3374e50def Yet another optimisation in Path#transformContent(): Only transform handles if they are not [0, 0]. 2011-02-20 11:20:23 +01:00
Jürg Lehni
98837cbe98 Further optimise Path#transformContent() by reusing arrays and thus reducing memory footprint. 2011-02-20 11:15:40 +01:00
Jürg Lehni
c89d04dca6 Optimise Path#getBounds() by not relying on Point#add() but instead doing the calculations in direct math in the per-coordinate loop. 2011-02-20 02:05:40 +01:00
Jürg Lehni
6c4121db4b Optimise Path#transformContent() by using Matrix#transform() version that handles arrays of multiple point values for much improved performance. 2011-02-20 01:55:43 +01:00
Jürg Lehni
ed752ed744 Pass ctor.dont to all constructor calls that are followed with explicit initialize() calls afterwards, to make sure it is only called once. 2011-02-20 01:45:53 +01:00
Jonathan Puckey
10623ddb62 Implement Gradient, GradientColor, GradientStop. 2011-02-19 22:50:37 +01:00
Jonathan Puckey
2b1dee1bd4 Add opacity support in Path#draw. 2011-02-19 17:33:23 +01:00
Jonathan Puckey
c2849b3692 Change PathStyle, CompoundPath and Path to work with new Color classes. 2011-02-19 17:25:16 +01:00
Jonathan Puckey
bd5c906047 Fix error in CompoundPath. 2011-02-19 14:12:05 +01:00
Jürg Lehni
b14c9ae21b For the closure injection to work properly we need an iterator function that provides a scope to the referenced key value. Rely on Base.each() for this, which even in a scaled down Bootstrap will be available and not harmful, as it won't rely on modified native prototypes. 2011-02-17 23:34:03 +00:00
Jürg Lehni
bc33ae8084 Add missing #closePath() to both Path and CompoundPath. 2011-02-17 23:01:18 +00:00
Jürg Lehni
4c2e1ee5c9 Optimise and simplfy CompoundPath code, by moving scope into extend() call, and only compiling one fields object inside it that is return at the end. 2011-02-17 22:58:56 +00:00
Jürg Lehni
e6dc189310 Simplify injection separation by using multiple arguments to extend(). 2011-02-17 22:46:28 +00:00
Jürg Lehni
5850ef3cfc Seperate Path definition into two parts, one that requires scoped private functions and values, and one that does not, to keep related things closer together and save indentation space. 2011-02-17 20:08:37 +00:00
Jürg Lehni
19121c33b2 Simplify injection of Path constructors. 2011-02-17 20:04:02 +00:00
Jonathan Puckey
deb1699f13 Tidy up code. 2011-02-17 16:00:03 +01:00
Jonathan Puckey
36de01a6ae Move Path Constructors into seperate file. 2011-02-17 15:55:26 +01:00
Jonathan Puckey
1953c17f41 CompoundPath: move getCurrentPath into the outer scope and implement smooth and simplify. 2011-02-17 14:33:25 +01:00
Jonathan Puckey
0c1f29ce29 Implement CompoundPath and move most of PathItem into Path. 2011-02-17 13:36:40 +01:00
Jürg Lehni
9d1458e6ae Rely on new Array.isArray() now for array checks. 2011-02-15 23:15:13 +00:00
Jürg Lehni
b8816a07f5 Reformat to fit 80 chars boundary. 2011-02-15 23:10:48 +00:00
Jürg Lehni
3d64b017c5 Remove comment about having Point.read() return consumed arguments indices, as after analysing the situation it seem too complex to imeplement easly: Point.read internally relies on Point#initialize for all the heavy lifting, and this would have to report back how many indices were consumed somehow... 2011-02-15 22:56:53 +00:00
Jürg Lehni
a154819350 Switch to using indexOf() in Segment#index for now. 2011-02-14 10:35:40 +00:00
Jürg Lehni
91e8a3b652 Update Bootstrap to fix issues with beans (requiring definition of setter when getter is redefined in sub-class), and remove setBounds in PathItem that was introduced for that reason. 2011-02-14 10:28:27 +00:00
Jürg Lehni
a6e9ee56d4 Cleanup Path constructors by using simple constructor functions instead of Base.extend() classes, use Path.Oval for Path.Circle and optimise Path.Oval through ovalSegments array with real segments (no use to call Segment.read each time). 2011-02-14 02:05:54 +00:00
Jürg Lehni
ed55dc39fb Fix PathItem constructor by no redefining arguments variable that results in arguments array changing as well on some browsers. 2011-02-14 01:47:56 +00:00
Jürg Lehni
38f4dd353d Make Item#bounds setter work for PathItem, and add two TODO comments about Bootstrap shortcommings that cause it to break. 2011-02-14 01:24:22 +00:00
Jürg Lehni
3af5d549f6 Add comments about possible optimisations in PathItem#transformContent(). 2011-02-14 01:14:03 +00:00
Jürg Lehni
ee8c30b518 Implement Matrix, Item#position, Item#bounds (setter too), Item#transform(), Item#scale(), Item#rotate(), Item#transalte() and Item#shear(). Some of it work in progress. 2011-02-14 01:05:16 +00:00
Jürg Lehni
420ffaa7ea No need to check for existance of handleIn/Out, as they are always defined. 2011-02-13 18:56:06 +00:00
Jürg Lehni
eeb7d377e6 Add optional index argument to static read() functions, so points, rectangle, sizes and segments can be read from any index in the arguments array. 2011-02-13 18:15:55 +00:00
Jürg Lehni
08d4826441 Reformating code to follow Scriptotgrapher coding conventions. 2011-02-13 16:26:24 +00:00
Jürg Lehni
0ac19a8e82 Optimise read() functions to only convert if argument is not of desired type already. 2011-02-13 16:05:19 +00:00
Jürg Lehni
d67055b09b Add documentation to PathItem#bounds. 2011-02-13 15:59:22 +00:00
Jürg Lehni
515439c4df Optimize PathItem#bounds by using less coordinate lookups. 2011-02-13 15:55:43 +00:00
Jürg Lehni
71d1ff3cb3 Make PathItem#getBounds() work for closed paths too. 2011-02-13 15:51:54 +00:00
Jürg Lehni
d59d514a55 Fix bug in PathItem#bounds (wrongly used variable name twice), now works properly for open paths. 2011-02-13 15:49:36 +00:00
Jürg Lehni
e08359f49d Beginning of PathItem#bounds and tests to go along with it, not functional yet. 2011-02-13 15:40:30 +00:00
Jürg Lehni
a30e4057e3 Fix PathItem constructor to support passing of segments both as array and arguments. 2011-02-13 15:39:24 +00:00
Jürg Lehni
771d9d0efe Fix a couple of bugs in shape drawing code, and switch to consistently use this.currentSegment rather than this._segments[this._segments.length - 1], to use the internal check for a starting point. 2011-02-13 15:12:25 +00:00
Jürg Lehni
a579b8bd3d Make sure Segment#handleIn and #handleOut are always defined, even when not provided, and change compareSegments() to also reflect this change by relying on Segment.read for conversion of comparison values. 2011-02-13 15:09:24 +00:00
Jürg Lehni
4b2341b3c2 Add gettter/setters for Path#segments, and fix bug in Segment#previous. 2011-02-13 13:52:51 +00:00
Jonathan Puckey
c1d2cab5d9 Segment.js: fix toString and remove methods. Add test for segment.remove(). 2011-02-12 19:10:19 +01:00
Jonathan Puckey
9b5e18c795 PathItem: replace this.segments.push(segment) to this.addSegment(segment) 2011-02-12 19:08:34 +01:00
Jonathan Puckey
c0e2101c32 Clean up src directory and move Bootstrap.js into lib. 2011-02-12 17:59:39 +01:00