Commit graph

471 commits

Author SHA1 Message Date
Jonathan Puckey
52e7c39567 Improve Curve documentation. 2013-04-21 15:43:57 +02:00
Jürg Lehni
c45ad26b67 Remove tolerance parameter from solveCubic() / solveQuadratic() since we should always use EPSILON. 2013-04-20 19:58:42 -07:00
Jürg Lehni
14aa8e5dea Improve precision of Numerical.solveCubic() and fix issues in Curve.getCrossings().
Closes #202.
2013-04-20 19:14:19 -07:00
Jürg Lehni
461def5383 Fix issue with imprecise tangents / normals to curves at t = 0, 1. 2013-04-20 17:40:19 -07:00
Jürg Lehni
1952e3dc7d Implement Curve#getCurvatureAt(). 2013-04-20 17:26:51 -07:00
Jürg Lehni
9fe1ff951a Clean up code. 2013-04-09 20:36:38 -07:00
Jürg Lehni
7f245974e6 Implement a faster method to filter out beginnings of intersected curves. 2013-04-09 20:35:31 -07:00
Jürg Lehni
a9a0857ba4 Find a better strategy to avoid duplicate solutions in PathItem#getIntersections().
Closes #197.
2013-04-09 20:27:55 -07:00
Jürg Lehni
d3bb68d0e0 Use faster Array construction. 2013-04-09 07:55:09 -07:00
Jürg Lehni
a0b903e49c Simply call slice() instead of slice(0). 2013-04-06 18:39:17 +02:00
Jürg Lehni
e854254986 Insert linear segments when dividing linear curves. 2013-03-19 16:17:12 -07:00
Jürg Lehni
2230c2888d Fix issue with Curve#divide() where the wrong curve reference is returned. 2013-03-01 20:19:44 -08:00
Jürg Lehni
02ca95eb46 Avoid accidental global leakage. 2013-02-08 16:12:57 -08:00
Jürg Lehni
6c9c16ad3d Update copyright information comments, and year. 2013-01-28 18:03:27 -08:00
Jürg Lehni
b0deda9445 Add missing documentation for various location related functions on Curve. 2013-01-28 16:47:45 -08:00
Jürg Lehni
c7d8aebb9e Swap Curve's bounds scope with point evaluation scope, for proximity to bounds related methods in scope before. 2013-01-28 16:32:04 -08:00
Jürg Lehni
1a438b8b9b Change Curve#[getPoint / getTangent / getNormal](t) to #[getPoint / getTangent / getNormal](offset, isParamter).
Keep deprecated versions around for now.
2013-01-28 16:30:28 -08:00
Jürg Lehni
f09bc84a12 Implement correct handling of Curves / Segments synchronization, improve CurveLocation linking to Curves through their linked Segments, and preserve Curves in Path#split() calls. 2013-01-22 14:46:49 -08:00
Jürg Lehni
ba5aa86411 Include Roger Willcocks in the thanks regarding isSufficentlyFlat. 2013-01-20 14:28:02 -08:00
Jürg Lehni
b05a21d6c9 Fix bug in Curve#getLocationOf(). 2013-01-20 14:01:42 -08:00
Jürg Lehni
b04eb2b98f Implement Path#split() and Curve#split(). 2012-12-31 22:28:41 +01:00
Jürg Lehni
e066db4577 Implement Curve#divide(). 2012-12-30 19:49:17 +01:00
Jürg Lehni
4185b63d99 Und recent renaming of #getNearest*() methods. 2012-12-30 19:43:35 +01:00
Jürg Lehni
2abefee336 Merge Base.readValue() with Base.read() and rename Base.peekValue() to Base.peek().
When called directly on Base, read() reads values, otherwise the specific type of the subclass it is called on.
2012-12-30 16:07:20 +01:00
Jürg Lehni
1b539301ad Find a better naming convention for the various getLocation* methods (*At for offsets / parameters, *Of for points), implement the missing methods on Curve and use them in Path. 2012-12-27 21:08:03 +01:00
Jürg Lehni
231369fa01 Shorten code a bit, using loops. 2012-12-27 20:46:12 +01:00
Jürg Lehni
cb8f3291d3 Clean up some comments. 2012-12-27 20:19:23 +01:00
Jürg Lehni
5b9d33f32e Fix imprecision in intersection code by re-introducing tolerance parameter in Curve#isFlatEnough(). 2012-12-27 20:13:45 +01:00
Jürg Lehni
3c4978eb04 Rename Curve#getParameter(point) to Curve#getParameterOf(point), to better distinguish from Curve#getParameterAt(length). 2012-12-27 20:09:21 +01:00
Jürg Lehni
68ad4bb5ba Implement PathItem#getIntersections(path) and Curve#getIntersections(curve) using divide-and-conquer approach, and new Curve.getBounds(). 2012-12-27 19:23:03 +01:00
Jürg Lehni
75596e1d03 Move a part of Path.getBounds() code into Curve._addBounds(), and use it to also define Curve.getBounds(). 2012-12-27 18:38:55 +01:00
Jürg Lehni
57a9f4fc91 Use constant substitution for Numerical constants as well. 2012-12-27 18:36:59 +01:00
Jürg Lehni
8f093f6dd7 Remove all PORT comments, since we won't port back features to Scriptographer. 2012-12-25 16:07:48 +01:00
Jürg Lehni
734cc1cc61 Undo commit 4445376c0204cb5a2e408c64b77a5b6fa09305ba since it clashes with magnification. 2012-12-21 16:41:57 +01:00
Jürg Lehni
d43cc28aac Optimise Curve constructors that construct from 4 arguments (points) and 8 (coordinate values). 2012-12-20 18:03:11 +01:00
Jürg Lehni
29a2bc781b Implement the various bounds getter on Curve too, using caching and the new static Path.get*Bounds methods. 2012-12-18 14:35:21 +01:00
Jürg Lehni
b535d9f843 Implement new Bootstrap feature that allows hiding of getter parameters to make sure beans are produced, and use it across the library. 2012-12-15 19:51:31 +01:00
Jürg Lehni
09ee9a0689 Exclude 1 in parameter range for crossing counting, as segment points would be counted twice otherwise. 2012-12-15 02:27:36 -08:00
Jürg Lehni
16578e6b15 Clean up code. 2012-12-15 02:24:46 -08:00
Jürg Lehni
a36d244eb1 Handle impression in Curve#getCrossings(), causing wrong results when handling circles. 2012-12-15 01:52:23 -08:00
Ben Firshman
73d6c102a6 Fix k leaking into globals 2012-11-20 15:53:04 +00:00
Ben Firshman
dc1161b32a Fix fullLength leaking into globals 2012-11-20 15:53:03 +00:00
Jürg Lehni
400b454177 Introduce Numerical.isZero(), for comparisons against 0 with a tolerance. 2012-11-05 21:06:13 -08:00
Jürg Lehni
6ed1d67ada Modernize Bootstrap.js, introduce Base.create() and use it instead of the Constructor.dont hack for object creation without the calling of initialize. 2012-11-03 21:49:37 -07:00
Jürg Lehni
f73717a7e7 Fix issues in Numerical.solveQuadratic(), solveCubic() and Path#contains().
Closes #71.
2012-10-22 18:21:33 -04:00
Jürg Lehni
44ad4d885a Update link to Kaspar Fischer's PDF with new URL. 2012-10-15 15:48:38 -07:00
Jürg Lehni
9e61995282 Handle parameter matching of beginning and ends of curves separately. 2012-09-30 14:06:31 -07:00
Jürg Lehni
c30ff47930 Remove matrix argument from all hit-testing related methods.
We better inverse-transform the point and save the code!
2011-12-25 00:19:01 +01:00
Jürg Lehni
a326b189b4 Improve Curve#isFlatEnough() by finding the right threshold through testing, and remove other less precise solutions. 2011-11-12 01:23:41 +01:00
Jürg Lehni
d43b54a531 Shorten Curve.isFlatEnough() code. 2011-11-11 20:58:33 +01:00
Jürg Lehni
fdd4ee8d31 Switch back to Kaspar Fischer's version of Curve.isFlatEnough, as it produces the best results with dashed lines. 2011-11-11 20:55:31 +01:00
Jürg Lehni
3397931bb2 Be consistent in Numerical. EPSILON comparison rules. 2011-09-22 21:14:16 +02:00
Jürg Lehni
7f81184848 Only intersect lines if their lengths are not conflicting with Numerical.EPSILON comparison of the cross product in Line#intersect(). 2011-07-30 11:38:17 +01:00
Jürg Lehni
7d0db22b9b Use squared distances in nearest point algorithm. 2011-07-30 11:37:07 +01:00
Jürg Lehni
45c7f9c4fc Port back code to prevent tangents and normals of length 0 from Scriptographer. 2011-07-09 11:20:03 +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
839107d341 Remove faulty code for calculation of tangents / normals. 2011-07-09 10:35:22 +02:00
Jürg Lehni
ec00150df2 Remove unused variable. 2011-07-09 10:34:18 +02:00
Jürg Lehni
4e1d613ed8 Fix Curve#getLength() again for straight lines. 2011-07-09 10:21:17 +02:00
Jürg Lehni
17b412ce6f Fix a newly introduced bug in #contains(). 2011-07-09 10:17:06 +02:00
Jürg Lehni
8a6d53766e Explain code a litter better. 2011-07-09 10:11:50 +02:00
Jürg Lehni
8928a7b057 Fix #getCrossings() where calling #getPoint() / #getTangent() was slow and also wrong when a matrix was used. 2011-07-09 10:09:41 +02:00
Jürg Lehni
8606f25542 Switch from using Function#apply() trick for passing curve values as function parameters to simply passing arrays and looking up the values on then. 2011-07-09 10:08:43 +02:00
Jürg Lehni
bb4e71da81 Clean up isFlatEnough() code. 2011-07-08 22:26:22 +02:00
Jürg Lehni
fe37ce6bcb Clean up comments. 2011-07-07 23:02:26 +02:00
Jürg Lehni
ca50461fd1 Implement new Curve.isFlatEnough(). 2011-07-07 23:00:16 +02:00
Jürg Lehni
5655981f6d Clean up white spaces. 2011-07-07 16:09:02 +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
9d2148245a Implement Curve#getParameter(point), untested. 2011-07-06 23:15:32 +02:00
Jürg Lehni
b13c7622c8 Rename Curve#getParameter(length) -> Curve#getParameterAt(offset) 2011-07-06 23:13:38 +02:00
Jürg Lehni
778a161ba0 Rename Curve.solve() -> Curve.solveCubic() 2011-07-06 23:10:16 +02:00
Jürg Lehni
fadf6e98b5 Pass on minDistance to CurveLocation. 2011-07-06 22:21:49 +02:00
Jürg Lehni
17bdaf6fe4 Use CurveLocation for Curve#getNearest*() methods. 2011-07-06 22:08:10 +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
ccd4113ba3 Implement Nearest Point-on-Curve Problem. 2011-07-05 13:20:31 +02:00
Jürg Lehni
4630a1bd4a Fix documentation. 2011-07-05 13:17:34 +02:00
Jürg Lehni
c1f46977fa Rename Curve.isSufficientlyFlat() to shorter Curve.isFlatEnough() 2011-07-05 13:17:07 +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
4924d683e4 Simplify Curve.solve() and improve documentation. 2011-07-04 23:42:16 +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
dad118cc20 Fix comments. 2011-07-04 23:30:25 +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
50c7649421 Improve Segment and Curve documentation. 2011-06-27 15:07:08 +02:00
Jürg Lehni
e35b171bec Improve Curve documentation. 2011-06-27 14:58:17 +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
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
ffa79f4fd1 Clean up white spaces in comments. 2011-06-14 22:59:45 +01:00
Jürg Lehni
b3d771a870 Remove Curve#transform() which is currently broken anyhow. 2011-06-05 13:27:39 +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
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
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
45a04891ee Clean up. 2011-06-04 15:16:30 +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
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
Jürg Lehni
9d00541987 Clean up PORT comments. 2011-05-29 19:20:10 +01: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
4015b022ad Docs: use @true tag in boolean return descriptions and add Key.isDown param options. 2011-05-27 18:43:27 +02:00
Jürg Lehni
c67209f889 Optimize Curve#initialize for minifying. 2011-05-26 11:09:02 +01:00
Jonathan Puckey
0e63f11b72 Add Curve documentation. 2011-05-23 17:24:57 +02: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
4e6e855461 Change '// TODO: Port' comments to '// PORT:'. 2011-05-07 14:18:27 +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
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
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
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
6cca355e20 Add Curve.create() as faster internal constructor. 2011-04-30 23:29:10 +01:00
Jürg Lehni
781b315808 Add getter/setter for Path#closed. 2011-04-30 23:22:29 +01: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
a251a24347 Add some TODOs to check. 2011-04-27 12:21:47 +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
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
77ad25ffba Clean up port comments. 2011-04-26 17:47:30 +01:00
Jürg Lehni
a20f988511 Minor code cleanup. 2011-04-26 12:55:20 +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
abb0878a25 Curve: Implement selection of curves. 2011-04-21 19:54:32 +02:00
Jürg Lehni
08d0499251 Change comment. 2011-03-25 19:58:20 +02: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
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
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
e1a7aff2f0 Add copyright notice and license file. 2011-03-07 00:50: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
2df6dc989a Add comments about changes that need backporting to Scriptographer. 2011-03-06 14:45:44 +00:00
Jürg Lehni
407b6d8d33 Add Curve#getPrevious / Next. 2011-03-06 13:26:09 +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
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
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
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
3a46ac3b54 Allow read() methods to receive an optional length parameter. 2011-03-03 13:15:55 +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