Commit graph

38 commits

Author SHA1 Message Date
sheaf a9adcba8eb fix some errors in polynomial code 2021-02-26 01:52:52 +01:00
sheaf c6694e4e2f fix bug in reverseSpline 2021-02-25 14:04:54 +01:00
sheaf 212ac4fded use STRefs to hold cached outline data 2021-02-24 22:52:26 +01:00
sheaf c1cae2b69f compute outline data concurrently 2021-02-23 20:58:53 +01:00
sheaf b32499cc68 GHC 9.0 compatibility 2021-02-23 13:16:26 +01:00
sheaf ab3a12c983 use assertions instead of errors, minor linting 2020-11-15 06:28:48 +01:00
sheaf 393ef6f06e Implement programmable brush framework 2020-11-12 17:34:46 +00:00
sheaf 58ca70c1bd optimise root-finding functions
* use PrimArray to represent polynomials
  * add some strictness annotations
  * turn on some optimisation flags
  * use quadratic formula for quadratic polynomials
2020-09-19 00:43:07 +02:00
sheaf eb8e7012aa curve dragging support 2020-09-18 19:17:40 +02:00
sheaf 40d10b6a8e add backend implementation of curve dragging 2020-09-17 05:47:53 +02:00
sheaf 2e9c437bd4 fix incorrect brush join computation
* also add some curvature calculations (unused at the moment)
2020-09-16 23:56:19 +02:00
sheaf 1c6f751a2b improve offset tangent calculation 2020-09-15 19:07:22 +02:00
sheaf 808e37b1b3 fix issue with incorrect subdivision in fit
* was using `Max ( Arg t sq_dist )` instead of `Max ( Arg sq_dist t )`
2020-09-14 06:28:35 +02:00
sheaf e3d920573d add debug mode to visualise fitting algorithm 2020-09-14 06:03:45 +02:00
sheaf a459467ed0 add parallelism for brush outline computation
* also enable varying the fitting parameters (UI todo)
2020-09-07 17:38:22 +02:00
sheaf 031d72a69b create/move/delete guides: drag from ruler area 2020-09-06 00:40:56 +02:00
sheaf 930fa0ebf9 don't attempt to draw outline when brush is empty 2020-09-05 15:35:01 +02:00
sheaf db4115c634 hook up menu to actions, + some refactors 2020-09-02 22:49:50 +02:00
sheaf 8a6b4f5391 encode/decode documents to JSON using waargonaut 2020-08-31 22:28:30 +02:00
sheaf 9c5f8b1198 use correct applicative operation for brush lerp 2020-08-31 01:59:14 +02:00
sheaf dfa446254a adjust what is rendered in different modes 2020-08-29 20:50:02 +02:00
sheaf 9bde44ed42 fix brush stroke point order for open brush path
* also: add some preset brushes
2020-08-29 19:41:07 +02:00
sheaf 62bb1451c5 curve fitting: implement recursive subdivision 2020-08-29 18:26:11 +02:00
sheaf d4561ad549 use the correct tangent vector for stroke joins 2020-08-29 16:34:51 +02:00
sheaf 3916fe2656 compute and render brush stroke outlines 2020-08-29 03:03:29 +02:00
sheaf b3941a2834 use hmatrix for least squares solving
* this fixes the convergence problems of cubic Bézier curve fitting
2020-08-26 00:41:34 +02:00
sheaf f16ac3fa93 fitting a cubic Bézier to a sequence of points
* WIP: current code exhibits convergence issues / instability
2020-08-24 10:55:39 +02:00
sheaf e8c77befd6 split out stroke code to library 2020-08-19 23:34:43 +02:00
sheaf e044b1b06c stroking: compute offset given tangent vector 2020-08-19 17:41:15 +02:00
sheaf 107b27ebca implement deletion of selection 2020-08-19 05:28:47 +02:00
sheaf 596821222f implement drawing with the pen tool 2020-08-17 00:09:16 +02:00
sheaf 91e1431306 add selection UI 2020-08-14 00:47:10 +02:00
sheaf 8d50c92ca9 highlight points for hover/selection 2020-08-13 19:58:54 +02:00
sheaf 2bd6847e78 add root solving code, coalesce event handling 2020-08-12 22:43:47 +02:00
sheaf 07f9981c41 update infobar, mouse focus zoom, module refactor 2020-08-11 00:07:09 +02:00
sheaf 9fc7b8acb3 basic rendering, mousewheel scrolling 2020-08-10 16:38:27 +02:00
sheaf f224c6b738 add MenuBar 2020-08-05 22:23:16 +02:00
sheaf c9e702e660 WIP 2020-08-04 08:43:25 +02:00