Commit graph

393 commits

Author SHA1 Message Date
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