Commit graph

562 commits

Author SHA1 Message Date
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
571ca31dbf Move ctx.restore() to same level as ctx.save(). Closes #51. 2011-09-18 10:56:04 +02:00
Jürg Lehni
7e0307dd6a Correct comments. 2011-08-16 13:36:58 +02:00
Jürg Lehni
a8c08b3301 Docs: Document Path#getNearestLocation() and #getNearestPoint(). 2011-08-01 11:48:27 +01:00
Jonathan Puckey
53a602fb56 Path#_hitTest: check that a stroke hit test was requested. 2011-07-15 14:50:42 +02:00
Jonathan Puckey
91ab38ffd1 Path#getHandleBounds: remove optimization as it leads to problems when hit testing handles. 2011-07-15 12:58:34 +02:00
Jürg Lehni
254aee47f8 Implement Path#getLocation(point) 2011-07-09 17:12:27 +02:00
Jürg Lehni
ebd3bfc092 Introduce faster versions of Rectangle#contains() that do not perform checks. 2011-07-09 11:07:12 +02:00
Jürg Lehni
833d4968ce Change root solvers to not produce new arrays each time but fill a passed one that can be reused. Yields io impressive performance improvements. 2011-07-09 10:50:47 +02:00
Jürg Lehni
23f38c6e5b Fix Path#flatten(), where we don't want to add last segment again for closed paths. 2011-07-09 09:51:06 +02:00
Jürg Lehni
74b23c1882 Use #roughBounds rather than #bounds in #contains() check. 2011-07-09 09:27:54 +02:00
Jürg Lehni
0a7f5a12a5 Fix bug in 'stroke' hit-results. 2011-07-08 23:32:29 +02:00
Jürg Lehni
c033a5a7bc Implement hit-test options: segments, handles and ends. 2011-07-08 23:26:21 +02:00
Jürg Lehni
dfbe3135ad Remove HitResult inheritance from CurveLocation, but have a #location property pointing to it. 2011-07-08 22:25:42 +02:00
Jonathan Puckey
36be78c671 Fix small problem in Item#_hitTest. 2011-07-08 18:41:29 +02:00
Jürg Lehni
23c4499d15 Add comments about how to potentially improve getBounds() accuracy. 2011-07-07 23:00:40 +02:00
Jürg Lehni
69a7d0bfd4 Implement a first version of Item#hitTest(), so far working only for Path items. Work in progress. 2011-07-07 22:14:58 +02:00
Jürg Lehni
64ae48af0b Remove solved TODO. 2011-07-07 16:10:06 +02:00
Jürg Lehni
e573fe5dcd Do not pass prevSlope to Curve#getCrossings(), rely on #getPrevious() instead. 2011-07-07 16:08:10 +02:00
Jürg Lehni
4a53503130 Add support for optional matrix in Path#contains(), Path#getNearestLocation(), Curve#getValues(), Curve#getCrossings(), Curve#getNearestLocation() 2011-07-07 16:07:29 +02:00
Jürg Lehni
b13c7622c8 Rename Curve#getParameter(length) -> Curve#getParameterAt(offset) 2011-07-06 23:13:38 +02:00
Jürg Lehni
d6b666024b Define #getNearestLocation() / #getNearestPoint() for Path. 2011-07-06 22:25:20 +02:00
Jürg Lehni
8b6d9746ce Rename Curve#getCrossingsFor() -> #getCrossings() 2011-07-06 22:07:34 +02:00
Jürg Lehni
5c3a6f72b6 Fix comments. 2011-07-06 15:31:16 +02:00
Jürg Lehni
4110a56521 Improve comments. 2011-07-05 01:20:25 +02:00
Jürg Lehni
6cc7417201 Handle edge case in crossing number algorithm where the beam in right x-direction is touching a tip where the curves change y-direction but do not interesect with the shape, by checking for slope changes. 2011-07-05 01:15:45 +02:00
Jürg Lehni
c5269ecbab Implement Path#contains(point) efficiently using the crossing number algorithm and our cubic polynomial solver. 2011-07-04 23:32:15 +02:00
Jürg Lehni
45a3e7f873 Big refactoring of the way bounds are handled and cached, properly supporting Groups inside Symbols, and also adding #roughBounds, to be used by upcoming hit testing code. 2011-07-04 19:45:53 +02:00
Jürg Lehni
e88043a1f4 Implement Path#roughBounds, based on an improved Path#getHandleBounds() that supports additional hidden join and stroke padding parameters. 2011-07-02 18:27:43 +02:00
Jürg Lehni
0644d9d8b5 Move TODOs up to where they make sense. 2011-07-01 17:40:29 +02:00
Jürg Lehni
51d6ff945e Improve Path#getHandleBounds() and fix bean access for #handleOut. 2011-07-01 17:39:39 +02:00
Jürg Lehni
aa9be1d9c5 Rename #controlBounds -> #handleBounds, to reflect terminology used elsewhere. 2011-07-01 17:23:10 +02:00
Jürg Lehni
9fa51a0457 Implement Item#controlBounds and Path#controlBounds, and test it in StrokeBounds example. This is a first step towards fast hit-testing. 2011-07-01 12:51:18 +02:00
Jürg Lehni
84bce71b1c Remove unnecessary Segment#getHandleIn/OutIfSet. 2011-07-01 12:30:10 +02:00
Jürg Lehni
79c0ad8cc5 Update copyright notices. 2011-07-01 12:17:45 +02:00
Richard D. Worth
ac39873693 Whitespace. Removed all trailing whitespace from .js files 2011-06-30 06:01:51 -04:00
Jürg Lehni
0eb033e6bf Only try to simplfy path if there are more than two segments in it. 2011-06-27 22:35:02 +02:00
Jürg Lehni
7cd749e63d Change all documentation to new convention of defining @class outside injection scope, fix some comments and a few errors with examples. 2011-06-22 23:56:05 +01:00
Jürg Lehni
2f2b3ed7e0 Fix selection behavior when segment lists are cleared, in which case we expect the path to remain selected. 2011-06-20 19:08:34 +01:00
Jonathan Puckey
a2a8939d5d Path# rename #pointsToCurves to #simplify and #curvesToPoints to #flatten. 2011-06-20 19:17:07 +02:00
Jürg Lehni
37f5a64dce Improve _bounds handling by introducing Item#_createBounds() that always uses LinkedRectangle class. 2011-06-20 17:34:43 +01:00
Jürg Lehni
995c5b4081 Fix error in miter calculation in Path#getStrokeBounds(), recently introduced by a fix in Curve#getNormal(). 2011-06-20 15:56:08 +01:00
Jürg Lehni
c1fcd6f3bb Documentation: Convert more Array return types to Type[]. 2011-06-20 14:27:54 +01:00
Jonathan Puckey
e23282fe05 Documentation: convert Array return types to Type[]. 2011-06-20 15:19:08 +02:00
Jürg Lehni
7a90f9260e Have subclasses of Item call the base version of _changed(). 2011-06-19 22:40:49 +01:00
Jürg Lehni
0df909dd71 Rename ChangeFlags -> ChangeFlag. 2011-06-19 22:21:14 +01:00
Jürg Lehni
f0bc3f115b Have all visual changes include ChangeFlags.APPEARANCE. 2011-06-19 22:20:28 +01:00
Jürg Lehni
2594a41b7d Remove the mention of optional parameters in documentation, as they are marked optional already. 2011-06-19 21:52:52 +01:00
Jürg Lehni
bbcec27031 Move support for _bounds caching to Item and start using it in PlacedSymbol. 2011-06-19 18:07:53 +01:00
Jürg Lehni
ca16e43c1f Implement getters / setters for #locked, #visible, #blendMode and #opacity, and call _changed() from setters. 2011-06-17 18:53:34 +01:00
Jürg Lehni
3226147e00 Use a version of Bootstrap that always produces beans and remove all beans: true instructions. 2011-06-17 18:42:29 +01:00
Jürg Lehni
5bc4f69856 Improve documentation for Path#removeSegments(). 2011-06-17 17:54:37 +01:00
Jürg Lehni
7dcdb5ca2f Improve documentation for Path#removeSegments(). 2011-06-17 17:46:42 +01:00
Jürg Lehni
f4d15200ee Remove Group#_clipped and solely use Item#_clipMask to handle clipping internally. 2011-06-17 13:56:02 +01:00
Jürg Lehni
1615b50b68 Fix thrown Error messages. 2011-06-17 11:26:35 +01:00
Jürg Lehni
6e16ab81f4 Fix a bug in Path#arcTo() where sometimes the arc was drawn on the wrong side when the extent was 180 degrees, thus the center point was lying on the line (from, to). 2011-06-16 23:50:14 +01:00
Jürg Lehni
169b58e550 Fix argument reading for PathItem#arcTo(to, clockwise). 2011-06-16 23:48:46 +01:00
Jürg Lehni
c2d425c916 Improve Error message thrown when no arc can be drawn. 2011-06-16 22:50:59 +01:00
Jürg Lehni
2c83eeb7de Improve handling of Path#arcTo() when the arguments demand an infinitely big circle, by either drawing a line or bailing out. 2011-06-16 22:38:43 +01:00
Jürg Lehni
aa825302e4 Clean up documentation for PathItem, Path & CompoundPath, by moving shared documentation to PathItem, for methods that are supposed to be abstract in PathItem and shared between the two classes. 2011-06-16 22:07:00 +01:00
Jürg Lehni
cb463b74f5 Fix @extends tags in documentation: Only the immediately following class is required. 2011-06-16 21:43:31 +01:00
Jürg Lehni
ffa79f4fd1 Clean up white spaces in comments. 2011-06-14 22:59:45 +01:00
Jürg Lehni
a7d22b2165 Add comment about porting back Path#arcTo(). 2011-06-14 21:32:14 +01:00
Jürg Lehni
8213dce4a9 Have newly added segments selected if path was fully selected before. 2011-06-14 15:40:03 +01:00
Jürg Lehni
a32b687bfd Bigger refactoring of handling of segment selection: Have Path#_selectedSegmentState be the summed up value of all Segment's states, and compare it to segments.length * SelectionState.POINT in #fullySelected. 2011-06-14 15:37:25 +01:00
Jürg Lehni
ad78474ae4 Remove obsolete TODO. 2011-06-14 12:46:15 +01:00
Jürg Lehni
50bc64779f Handle special case of infinitely big circle in Path#arcTo(), by cheating using an approximation of a really big circle. 2011-06-14 12:45:37 +01:00
Jürg Lehni
2be18b8013 Completely rewrite Path#arcTo() using Point class and vector geometry methods. 2011-06-14 12:19:14 +01:00
Jürg Lehni
8d0bb3d2ae Path#arcTo(): Fix wrong constant names. 2011-06-14 09:32:53 +01:00
Jürg Lehni
b4a210e113 Path#arcTo(): Fix the case where through point lies on a line between from and to point. 2011-06-14 09:12:18 +01:00
Jürg Lehni
f0c22bc1dc Shorten pre-calculations in Path#arcTo(). 2011-06-14 09:00:55 +01:00
Jürg Lehni
f6b2672f08 Simplify Path#arcTo() arguments check. 2011-06-14 09:00:25 +01:00
Jürg Lehni
a3d1875971 More clean ups. 2011-06-13 19:09:10 +01:00
Jürg Lehni
de739b42a8 Clean up white spaces. 2011-06-13 19:05:17 +01:00
Jürg Lehni
064f17eaec Fix default value for end in Path#removeSegments(), so the last segment gets removed too. 2011-06-13 19:00:39 +01:00
Jürg Lehni
4a23e35eee Merge remote-tracking branch 'origin/master' 2011-06-12 18:42:24 +01:00
Jürg Lehni
c341ec220a Fix white space. 2011-06-12 18:40:30 +01:00
Jonathan Puckey
20fc389020 Documentation: add see tag to Path#closePath(). 2011-06-10 13:33:14 +02:00
Jonathan Puckey
87c1b564d2 Document Path#lineBy(vector). 2011-06-10 13:32:37 +02:00
Jonathan Puckey
ac703f1baa Path: add example of pointToCurves(). 2011-06-10 00:07:25 +02:00
Jonathan Puckey
b385b859f9 Merge remote branch 'origin/master' 2011-06-05 22:46:22 +02:00
Jonathan Puckey
9d4afcfe9c Add another Path#add example. 2011-06-05 22:44:01 +02:00
Jonathan Puckey
5513687daa Add Path#smooth examples. 2011-06-05 22:43:36 +02:00
Jürg Lehni
12e770c032 Merge remote-tracking branch 'origin/master' 2011-06-05 21:32:10 +01:00
Jürg Lehni
7d2742cd94 Rename PathFitter#process() -> #fit(). 2011-06-05 21:26:01 +01:00
Jonathan Puckey
fe901fa96b Add to and improve Path documentation. 2011-06-05 22:02:30 +02:00
Jürg Lehni
28c680ac94 Implement PathFitter and Path#pointsToCurves(). 2011-06-05 19:27:18 +01:00
Jonathan Puckey
e4eb463204 Path: document arcTo and curveTo. 2011-06-05 18:40:33 +02:00
Jonathan Puckey
14e2a61d25 Add examples to Path#arcTo docs. 2011-06-05 17:22:35 +02:00
Jonathan Puckey
ab09a44dc6 Add examples to Path#join documentation. 2011-06-05 16:12:31 +02:00
Jonathan Puckey
c10aa01de0 Fix a bug in Path#join. 2011-06-05 15:56:37 +02:00
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
e76c4e0de1 Implement Path#curvesToPoints() using the new PathFlattener class. 2011-06-05 13:21:00 +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
90be683113 Clean up and add more comments. 2011-06-04 19:25:50 +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
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
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
Jonathan Puckey
17fcb923ff Documentation: rearrange @example tags, improve examples, rename boolean -> Boolean and misc smaller edits. 2011-05-30 19:42:17 +02:00
Jürg Lehni
9d00541987 Clean up PORT comments. 2011-05-29 19:20:10 +01: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
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
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
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
Jonathan Puckey
2a4f5b93f0 Path documentation: whitespace. 2011-05-23 13:37:40 +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
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
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
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
54161f81f1 Add expected parameters to function signature. 2011-05-15 19:57:48 +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
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
057b71ff4c Don't overuse variable chaining - use only were readibility does not suffer. 2011-05-15 14:29:00 +01:00
Jürg Lehni
51dbd85db5 Add experimental orientation detection for Paths. 2011-05-15 11:33:09 +01:00
Jonathan Puckey
bbccb25184 Transform gradient when path is transformed. 2011-05-08 14:05:47 +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
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
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
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
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
92bf51a7cc Simplify the way the paper namespace is created and populated. 2011-03-04 13:34:31 +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
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
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
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
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
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
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
c9d04d33f8 Implement BlendMode class. 2011-02-25 12:47:52 +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
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
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