Commit graph

178 commits

Author SHA1 Message Date
sheaf 60287fbf7e Require GTK >= 4.10 2024-10-23 14:49:22 +02:00
sheaf 6ecfebd397 allow document titles to be edited 2024-10-21 14:58:53 +02:00
sheaf 71f42894f8 pen + brush mode = no op 2024-10-21 10:43:13 +02:00
sheaf 61a33e30d2 proper fix for brush widget action applying to all strokes 2024-10-20 17:49:26 +02:00
sheaf 2e05731ffa add visible/locked layer icons 2024-10-20 17:49:10 +02:00
sheaf b0a17c80ec allow brush widget to modify different strokes 2024-10-20 10:27:29 +02:00
sheaf 3fe46fc029 don't deselect selection after brush widget update 2024-10-19 16:14:33 +02:00
sheaf 5adcb34de6 synchronise brush widget change across selection 2024-10-19 15:51:45 +02:00
sheaf 0223c92a85 allow selection in brush mode 2024-10-19 11:50:25 +02:00
sheaf 53243621b5 implement stroke list popover menu functionality 2024-10-19 11:50:05 +02:00
sheaf 3a7b05d60d make stroke popover menu appear on right click 2024-10-19 11:49:45 +02:00
sheaf bcd0b9fb13 add CSS for stroke popover menu 2024-10-17 18:54:15 +02:00
sheaf 60b65a38e1 remove stroke from list stores when deleting all stroke points 2024-10-16 12:41:19 +02:00
sheaf fea6667114 hacky fix to cusp computation timeout 2024-10-12 16:48:48 +02:00
sheaf 47cf66c5dd rename recomputeStrokes -> redrawStrokes 2024-10-12 16:48:21 +02:00
sheaf 1a8f4b5f5d improvements to brush params when changing brush 2024-10-12 15:41:52 +02:00
sheaf c1d6dd4151 brush list view: first steps 2024-10-09 16:57:08 +02:00
sheaf b5b29f124a Farey sum for curve subdivision 2024-09-28 15:45:07 +02:00
sheaf f7a4b02e90 fix stroke cache issues 2024-09-28 13:07:56 +02:00
sheaf 3886dca483 improvements to draw anchor 2024-09-28 12:10:36 +02:00
sheaf 3d36b39541 fix brush rotation widget 2024-09-28 11:17:33 +02:00
sheaf a41c6235ae anchor position is not static 2024-09-28 03:12:23 +02:00
sheaf 66490b87aa fix draw anchor curve indexing 2024-09-28 01:32:03 +02:00
sheaf 264e04555b add header to warning dialog 2024-09-28 00:38:32 +02:00
sheaf 23cc439ff2 update list model upon undo/redo 2024-09-27 23:53:33 +02:00
sheaf 24f182feec add stroke layer view 2024-09-27 23:36:33 +02:00
sheaf 0eb0724dde Refactors in preparation for stroke hierarchy 2024-09-27 17:21:24 +02:00
sheaf e2e4ae6bfe UI: use GTK Window instead of MessageDialog 2024-09-07 11:28:07 +02:00
sheaf fc2f25cfa6 UI: use GTK4 FileDialog API 2024-09-06 18:48:04 +02:00
sheaf 9ff25a25aa cleanups 2024-08-29 01:46:50 +02:00
sheaf 7bb28f8c96 brush widget UI: don't allow 0 width or height 2024-05-28 10:36:26 +02:00
sheaf 56939ce01a GTK 4.14 compatibility 2024-05-28 10:24:47 +02:00
sheaf 300fbf92c0 fixes to brush widget UI 2024-05-25 17:04:08 +02:00
sheaf 1ec2af6dcc WIP: add brush widget UI 2024-05-21 19:40:22 +02:00
sheaf 63b9703faf UI tweaks 2024-04-25 21:53:53 +02:00
sheaf c89fba7fd2 Improve specialisation + add degree computation 2024-04-25 21:53:27 +02:00
sheaf 1338d7ddbe Improve intervallic rotation computations
This commit bakes in a certain kind of representation for brush strokes:

  c(t,s) = p(t) + R(theta(t)) b(t,s)

This representation allows us to cancel out some rotation terms when
computing the envelope equation, improving the efficiency of the
cusp-finding methods.
2024-04-20 18:28:41 +02:00
sheaf 55470d1f0e make cusp-finding algorithm choice more configurable 2024-04-03 18:46:08 +02:00
sheaf 2289468a84 Fixes and restructuring 2024-02-28 17:20:34 +01:00
sheaf d1b3765335 Split out benchmark for cusp finding 2024-02-23 17:03:28 +01:00
sheaf b70f7ba133 Add mechanisms to log envelope equation data 2024-02-19 16:46:09 +01:00
sheaf 6b658acedd Restructure project & update bounds 2024-02-17 13:58:40 +01:00
sheaf 1368825103 improve outline computation using divMod' 2024-01-08 11:31:18 +01:00
sheaf f10fbd9810 remove traces & minor cleanups 2024-01-06 18:18:14 +01:00
sheaf 326487942e fix orientation computation 2023-08-30 17:40:47 +02:00
sheaf 92efc4127c add teardrop shaped brush 2023-07-15 16:40:59 +02:00
sheaf 7eb16b4782 tiny build fixes 2023-06-15 00:39:03 +02:00
sheaf 96aa38b3c3 improve rotations in interval arithmetic
Computing a rotation in interval arithmetic can lose tightness.
Instead of computing

   a cos phi + b sin phi

which doesn't account for the difference in phase in the two sinusoids,
it is better to use

  sqrt (a² + b²) * cos ( phi - atan2(a,b) )

which correctly estimates the maximum amplitude of the sum to be
sqrt(a²+b²) instead of abs(a) + abs(b).

This seems to worsen the performance of the interval Newton method
at the moment, possibly due to the complexity of the new formula,
which involves computing atan(b/a). Further investigation is needed.
2023-05-14 21:38:25 +02:00
sheaf 50d99e1e4b improve intervallic Bézier evaluation
Now we evaluate Bézier curves using an AABB computation. This results
in tighter intervals, which means that the cusp-finding algorithm
is better behaved.
2023-04-25 23:07:18 +02:00
sheaf 7db3cbef33 more work into observability 2023-03-13 22:09:15 +01:00