From 20169de54a266349a3bf0978aad5693557aea919 Mon Sep 17 00:00:00 2001 From: Arsh <184517@nith.ac.in> Date: Sun, 25 Jul 2021 00:44:24 +0530 Subject: [PATCH 01/19] Longest distance mode of morphing --- src/Shape.jl | 10 +++++++--- src/morphs.jl | 15 +++++++++------ 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/Shape.jl b/src/Shape.jl index 85fd22624..61fbb7975 100644 --- a/src/Shape.jl +++ b/src/Shape.jl @@ -221,7 +221,7 @@ function print_basic(s::Shape) end -function prepare_to_interpolate(from_shape, to_shape) +function prepare_to_interpolate(from_shape, to_shape, style) # match number of points for outer polygon from_outer, to_outer = match_num_points(from_shape.points, to_shape.points) @@ -236,8 +236,12 @@ function prepare_to_interpolate(from_shape, to_shape) end # rotate outer polygon - rotate_i, _ = compute_shortest_morphing_dist(from_outer, to_outer) - new_from_outer = circshift(from_outer, -rotate_i + 1) + if style == :short + rotate_i, _ = compute_shortest_morphing_dist(from_outer, to_outer) + new_from_outer = circshift(from_outer, -rotate_i + 1) + elseif style == :long + new_from_outer = circshift(reverse!(from_outer), floor(-length(from_outer)/4)) + end new_from_holes = Vector{Vector{Point}}() diff --git a/src/morphs.jl b/src/morphs.jl index a83401f50..5c25edee7 100644 --- a/src/morphs.jl +++ b/src/morphs.jl @@ -37,9 +37,9 @@ circle_obj = Object(11:20, acirc) act!(circle_obj, Action(:same, morph_to(astar))) ``` """ -function morph_to(to_func::Function; do_action = :stroke) +function morph_to(to_func::Function; style = :short, do_action = :stroke) return (video, object, action, frame) -> - _morph_to(video, object, action, frame, to_func; do_action = do_action) + _morph_to(video, object, action, frame, to_func; style = style, do_action = do_action) end @@ -54,6 +54,7 @@ function _morph_to( action::Action, frame, to_func::Function; + style = :short, do_action = :stroke, ) newpath() @@ -66,7 +67,7 @@ function _morph_to( closepath() to_polys = pathtopoly() - return morph_between(video, action, frame, from_polys, to_polys; do_action = do_action) + return morph_between(video, action, frame, from_polys, to_polys, style; do_action = do_action) end """ @@ -81,7 +82,8 @@ function morph_between( action::Action, frame, from_polys::Vector{Vector{Point}}, - to_polys::Vector{Vector{Point}}; + to_polys::Vector{Vector{Point}}, + style::Symbol; do_action = :stroke, ) cs = get_current_setting() @@ -89,7 +91,7 @@ function morph_between( # computation of the polygons and the best way to morph in the first frame if frame == first(get_frames(action)) - save_morph_polygons!(action, from_polys, to_polys) + save_morph_polygons!(action, from_polys, to_polys, style) end # obtain the computed polygons. These polygons have the same number of points. @@ -226,6 +228,7 @@ function save_morph_polygons!( action::Action, from_polys::Vector{Vector{Point}}, to_polys::Vector{Vector{Point}}, + style::Symbol, ) # delete polygons with less than 2 points for i in length(from_polys):-1:1 @@ -277,7 +280,7 @@ function save_morph_polygons!( ) end else - from_shape, to_shape = prepare_to_interpolate(from_shape, to_shape) + from_shape, to_shape = prepare_to_interpolate(from_shape, to_shape, style) push!(action.defs[:from_shape], from_shape) push!(action.defs[:to_shape], to_shape) From 17c130bdf5ad2162becdbecc63af1ee2e4a893df Mon Sep 17 00:00:00 2001 From: Arsh <184517@nith.ac.in> Date: Mon, 26 Jul 2021 13:58:54 +0530 Subject: [PATCH 02/19] always compute the shortest dist --- src/Shape.jl | 11 ++++++----- src/morphs.jl | 21 ++++++++++++++++++--- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/src/Shape.jl b/src/Shape.jl index 61fbb7975..2736ffbbd 100644 --- a/src/Shape.jl +++ b/src/Shape.jl @@ -236,11 +236,12 @@ function prepare_to_interpolate(from_shape, to_shape, style) end # rotate outer polygon - if style == :short - rotate_i, _ = compute_shortest_morphing_dist(from_outer, to_outer) - new_from_outer = circshift(from_outer, -rotate_i + 1) - elseif style == :long - new_from_outer = circshift(reverse!(from_outer), floor(-length(from_outer)/4)) + rotate_i, _ = compute_shortest_morphing_dist(from_outer, to_outer) + new_from_outer = circshift(from_outer, -rotate_i + 1) + + if style == :long + new_from_outer = + circshift(reverse!(new_from_outer), floor(-length(new_from_outer) / 2.6)) # found this to work best end new_from_holes = Vector{Vector{Point}}() diff --git a/src/morphs.jl b/src/morphs.jl index 5c25edee7..89cc2f474 100644 --- a/src/morphs.jl +++ b/src/morphs.jl @@ -38,8 +38,15 @@ act!(circle_obj, Action(:same, morph_to(astar))) ``` """ function morph_to(to_func::Function; style = :short, do_action = :stroke) - return (video, object, action, frame) -> - _morph_to(video, object, action, frame, to_func; style = style, do_action = do_action) + return (video, object, action, frame) -> _morph_to( + video, + object, + action, + frame, + to_func; + style = style, + do_action = do_action, + ) end @@ -67,7 +74,15 @@ function _morph_to( closepath() to_polys = pathtopoly() - return morph_between(video, action, frame, from_polys, to_polys, style; do_action = do_action) + return morph_between( + video, + action, + frame, + from_polys, + to_polys, + style; + do_action = do_action, + ) end """ From 022eaa9e43d6561f44b90fa72b6d241bd009a52a Mon Sep 17 00:00:00 2001 From: Arsh <184517@nith.ac.in> Date: Fri, 30 Jul 2021 13:48:58 +0530 Subject: [PATCH 03/19] Test morphing modes --- test/morphing.jl | 27 +++++++++++++++++++++++++++ test/refs/morph_modes10.png | Bin 0 -> 4425 bytes test/refs/morph_modes15.png | Bin 0 -> 4620 bytes test/refs/morph_modes19.png | Bin 0 -> 5385 bytes test/refs/morph_modes20.png | Bin 0 -> 5646 bytes test/refs/morph_modes21.png | Bin 0 -> 5646 bytes test/refs/morph_modes30.png | Bin 0 -> 5646 bytes test/refs/morph_modes35.png | Bin 0 -> 8381 bytes test/refs/morph_modes40.png | Bin 0 -> 7967 bytes test/refs/morph_modes45.png | Bin 0 -> 8266 bytes test/refs/morph_modes49.png | Bin 0 -> 8907 bytes test/refs/morph_modes5.png | Bin 0 -> 5786 bytes test/refs/morph_modes50.png | Bin 0 -> 8945 bytes test/runtests.jl | 22 ++++++++++++++++++++-- 14 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 test/refs/morph_modes10.png create mode 100644 test/refs/morph_modes15.png create mode 100644 test/refs/morph_modes19.png create mode 100644 test/refs/morph_modes20.png create mode 100644 test/refs/morph_modes21.png create mode 100644 test/refs/morph_modes30.png create mode 100644 test/refs/morph_modes35.png create mode 100644 test/refs/morph_modes40.png create mode 100644 test/refs/morph_modes45.png create mode 100644 test/refs/morph_modes49.png create mode 100644 test/refs/morph_modes5.png create mode 100644 test/refs/morph_modes50.png diff --git a/test/morphing.jl b/test/morphing.jl index 97534e232..2fabbbbb7 100644 --- a/test/morphing.jl +++ b/test/morphing.jl @@ -156,3 +156,30 @@ end rm("images/$(lpad(i, 10, "0")).png") end end + +@testset "Morphing modes" begin + function ground(args...) + background("black") + sethue("white") + end + + astar(args...; do_action = :stroke) = star(O, 50, 5, 0.5, 0, do_action) + abox(args...; do_action = :stroke) = rect(-150, -150, 100, 100, do_action) + acirc(args...; do_action = :stroke) = circle(Point(0, 0), 50, do_action) + + video = Video(500, 500) + back = Background(1:50, ground) + star_obj = Object(1:50, astar) + box_obj = Object(1:50, abox) + act!(star_obj, Action(5:20, morph_to(acirc, style = :long))) + act!(box_obj, Action(30:50, morph_to(astar, style = :long))) + render(video; tempdirectory = "images", pathname = "") + + for i in [5, 10, 15, 19, 20, 21, 30, 35, 40, 45, 49, 50] + @test_reference "refs/morph_modes$i.png" load("images/$(lpad(i, 10, "0")).png") + end + + for i in 1:50 + rm("images/$(lpad(i, 10, "0")).png") + end +end diff --git a/test/refs/morph_modes10.png b/test/refs/morph_modes10.png new file mode 100644 index 0000000000000000000000000000000000000000..b4e08842e9dd8bdc7ca891ae86081ac7410c67b3 GIT binary patch literal 4425 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 GU-~zvw^ug+ literal 0 HcmV?d00001 diff --git a/test/refs/morph_modes15.png b/test/refs/morph_modes15.png new file mode 100644 index 0000000000000000000000000000000000000000..c1a60ad8e9e78b0d9df4ddfd8aa0cc5b4643a6bc GIT binary patch literal 4620 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 z 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 z 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 z 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 DIU$v1 literal 0 HcmV?d00001 diff --git a/test/refs/morph_modes40.png b/test/refs/morph_modes40.png new file mode 100644 index 0000000000000000000000000000000000000000..9f0d19c78c870cf0aff3622c87fe5c331a8a6997 GIT binary patch literal 7967 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 literal 0 HcmV?d00001 diff --git a/test/refs/morph_modes49.png b/test/refs/morph_modes49.png new file mode 100644 index 0000000000000000000000000000000000000000..f040df369d5280a23d13265d3b1d55bf2f929d71 GIT binary patch literal 8907 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 Gt^Wda?42n9 literal 0 HcmV?d00001 diff --git a/test/runtests.jl b/test/runtests.jl index 875bb122e..8fc0608fb 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -1,6 +1,6 @@ using Animations -using GtkReactive -using Gtk: get_gtk_property, visible +# using GtkReactive +# using Gtk: get_gtk_property, visible using Images import Interact import Interact: @map, Widget, Widgets, @layout!, hbox, vbox @@ -49,3 +49,21 @@ end @testset "Javis Viewer" begin include("viewer.jl") end +# @testset "Unit" begin +# include("unit.jl") +# end +# @testset "SVG LaTeX tests" begin +# include("svg.jl") +# end +# @testset "Animations" begin +# include("animations.jl") +# end +# @testset "Morphing" begin +# include("morphing.jl") +# end +# @testset "Javis Viewer" begin +# include("viewer.jl") +# end +@testset "Layers" begin + include("layers.jl") +end From 979aac53ea67e7a338e5c7c70dd2ecd8ef7d282b Mon Sep 17 00:00:00 2001 From: Arsh <184517@nith.ac.in> Date: Fri, 30 Jul 2021 16:03:25 +0530 Subject: [PATCH 04/19] Fix tests --- test/runtests.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/runtests.jl b/test/runtests.jl index 8fc0608fb..cb3dae640 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -1,6 +1,6 @@ using Animations -# using GtkReactive -# using Gtk: get_gtk_property, visible +using GtkReactive +using Gtk: get_gtk_property, visible using Images import Interact import Interact: @map, Widget, Widgets, @layout!, hbox, vbox From a33ab23099a4666a09aebd5ed9b4cbb86d908a51 Mon Sep 17 00:00:00 2001 From: Arsh <184517@nith.ac.in> Date: Fri, 30 Jul 2021 16:05:38 +0530 Subject: [PATCH 05/19] Update changelog --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index fdba0b9a4..a9feb6e08 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Javis.jl - Changelog +## Unreleased +- Add a manim-like :long morhping mode + ## v0.5.2 - Added support for local network live streaming From 841d9dfea9ae5ae29f7456d325701850b7673fef Mon Sep 17 00:00:00 2001 From: Arsh <184517@nith.ac.in> Date: Fri, 30 Jul 2021 16:15:23 +0530 Subject: [PATCH 06/19] Docstring for style --- src/morphs.jl | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/morphs.jl b/src/morphs.jl index 559be5e1d..32921f4d5 100644 --- a/src/morphs.jl +++ b/src/morphs.jl @@ -1,7 +1,7 @@ include("Shape.jl") """ - morph_to(to_func::Function; object=:stroke) + morph_to(to_func::Function; style=:short, object=:stroke) A closure for the [`_morph_to`](@ref) function. This makes it easier to write the function inside an `Object`. @@ -11,6 +11,7 @@ It especially does not work with functions which produce more than one polygon or which produce filled polygons. Blending between fills of polygons is definitely coming at a later stage. +To get a more visually appealing morphing on can try setting `style = :long`. **Important:** The functions itself should not draw the polygon i.e. use `circle(Point(100,100), 50)` instead of `circle(Point(100,100), 50, :stroke)` @@ -19,6 +20,7 @@ i.e. use `circle(Point(100,100), 50)` instead of `circle(Point(100,100), 50, :st which will be displayed at the end of the Object # Keywords +- `style::Symbol` Sets the style of morphing - `do_action::Symbol` defines whether the object has a fill or just a stroke. Defaults to `:stroke`. # Example @@ -50,7 +52,7 @@ function morph_to(to_func::Function; style = :short, do_action = :stroke) end """ - _morph_to(video::Video, object::Object, action::Action, frame, to_func::Function; do_action=:stroke) + _morph_to(video::Video, object::Object, action::Action, frame, to_func::Function; style=:short, do_action=:stroke) Internal version of [`morph_to`](@ref) but described there. """ @@ -95,7 +97,7 @@ end """ morph_between(video::Video, action::Action, frame, from_polys::Vector{Vector{Point}}, to_polys::Vector{Vector{Point}}; - do_action=:stroke) + style=:short, do_action=:stroke) Internal version of [`morph_to`](@ref) after the from poly is defined. """ @@ -237,7 +239,7 @@ end """ save_morph_polygons!(action::Action, from_func::Vector{Vector{Point}}, - to_func::Vector{Vector{Point}}) + to_func::Vector{Vector{Point}}, style::Symbol) Calls the functions to polygons and calls [`match_num_points`](@ref) such that both polygons have the same number of points. From 8e5880b4345c6a31691a44b910bb69d02c1857ef Mon Sep 17 00:00:00 2001 From: Arsh <184517@nith.ac.in> Date: Fri, 30 Jul 2021 16:19:04 +0530 Subject: [PATCH 07/19] Format --- src/morphs.jl | 8 ++++---- test/morphing.jl | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/morphs.jl b/src/morphs.jl index 32921f4d5..f7088303f 100644 --- a/src/morphs.jl +++ b/src/morphs.jl @@ -87,8 +87,8 @@ function _morph_to( action, frame, from_polys, - to_polys - style; + to_polys; + style, do_action = do_action, ) end @@ -106,8 +106,8 @@ function morph_between( action::Action, frame, from_polys::Vector{Vector{Point}}, - to_polys::Vector{Vector{Point}}, - style::Symbol; + to_polys::Vector{Vector{Point}}; + style::Symbol, do_action = :stroke, ) cs = get_current_setting() diff --git a/test/morphing.jl b/test/morphing.jl index 4b66b56f5..4a3ad953c 100644 --- a/test/morphing.jl +++ b/test/morphing.jl @@ -242,4 +242,4 @@ end for i in 1:50 rm("images/$(lpad(i, 10, "0")).png") end -end \ No newline at end of file +end From 52291a87026e4add9a48ee7a318dd18c09ecb857 Mon Sep 17 00:00:00 2001 From: Arsh <184517@nith.ac.in> Date: Fri, 30 Jul 2021 20:29:21 +0530 Subject: [PATCH 08/19] Update reference images --- test/refs/morph_modes20.png | Bin 5646 -> 5642 bytes test/refs/morph_modes21.png | Bin 5646 -> 5642 bytes test/refs/morph_modes30.png | Bin 5646 -> 5642 bytes test/refs/morph_modes35.png | Bin 8381 -> 8377 bytes test/refs/morph_modes40.png | Bin 7967 -> 7974 bytes test/refs/morph_modes45.png | Bin 8266 -> 8272 bytes test/refs/morph_modes49.png | Bin 8907 -> 8912 bytes test/refs/morph_modes50.png | Bin 8945 -> 8953 bytes 8 files changed, 0 insertions(+), 0 deletions(-) diff --git a/test/refs/morph_modes20.png b/test/refs/morph_modes20.png index fd638d0a2b46954300ed7a5bae30b45c8bf153c5..185ca7dfc7a4f4d9eb8f940d09458b89d10bd68e 100644 GIT binary patch literal 5642 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 literal 5646 zcmeHL=_8bF`=0UY2_17^H4r&1hbQ1d=(@JCJ^~SdMj(g} z5ePcmB90>vcxeP;(iVYGe1Smlc_fw?DI*X(VLF=XrhdqoDt6cIomLgyQ zr`5H;ttBrWym9#Y{@SJGYmeHuqtR%7TCLhdF12XxYa=VdgZl65pOJ%y38-}8ABme{ zELdH=VueVt_4V~?rw~oysKuqF9pu;-9v$$-sU`7bU~Igc69*<+7K!*F^Y82bHwS}n zF9=66>p?ocFJyRZEc427QPH$FZwg#{^8A-Z>+9>AGqlCB_eD^pY$^g5etv%S>Xo1J zsgFlcZU#X?6&~J;nG{Ew|5%cFCP9R)sX>k#EXQnWe zPl|&=(!<>Cc%u`odY8WYh+@H=)mbIq*{0^^yW8typ--MHGt7*PjI2k(<@>NP9_JF1 zll#&PNf7UBU%8T!(njG|oVd6+3Y+_aNPm6)@g5Xf@4)FBU#cGL%+Jpk^dFA&Q_gX@ zZ0<18o|=NC5E$F9FGk=h0@s5%4~@2x2#doy$d!le6t3Blsho6^v|p25H|wL0+c4-~ z8QZIs; z7tsp)n>v(XG1iilAalL;#|Lkc-_H=p_DpY)JAHZLVuSz>_HjJ1L`*@!zc%b(O)%%3 z*$-m^f%8=nYTM?8qP(HyYd=Fnc_sN3yzFtfzDB9a&E*cmxY$?@O0*s(sS`GTA(VH9 zR=S!~I!hmTz-20LT^@k1y1%2RrzhX3^^}A};ADDQUVi?LP8BrysdL+_&+b7>2}-lY z*Xy1gCD1!armN4NKMy;skO#Sj5(Ew0+bJt6d&;Ilf_zE_iPv#)nS|{4%zQuNH$QOm zYfk!}-h3xR7Z;Z+SGpmuf&t?xcQ<~qQ{?n8v}ezspLY9EJkgP+w(tq1prDY!)zHvT z8zCqdu2tmPBkSH*mX(#&&~OQfC$dxi!!Pev=F*h`b$t1f-gjp%9oJKWpGrCZ_^jKH zZ||;Cse**EvNCJTEjeUiwsXf@n2?8u2LKzQsj-6f^z;N2!O*qI%-lT!%I6}r*(jIM z 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 literal 5646 zcmeHL=_8bF`=0UY2_17^H4r&1hbQ1d=(@JCJ^~SdMj(g} z5ePcmB90>vcxeP;(iVYGe1Smlc_fw?DI*X(VLF=XrhdqoDt6cIomLgyQ zr`5H;ttBrWym9#Y{@SJGYmeHuqtR%7TCLhdF12XxYa=VdgZl65pOJ%y38-}8ABme{ zELdH=VueVt_4V~?rw~oysKuqF9pu;-9v$$-sU`7bU~Igc69*<+7K!*F^Y82bHwS}n zF9=66>p?ocFJyRZEc427QPH$FZwg#{^8A-Z>+9>AGqlCB_eD^pY$^g5etv%S>Xo1J zsgFlcZU#X?6&~J;nG{Ew|5%cFCP9R)sX>k#EXQnWe zPl|&=(!<>Cc%u`odY8WYh+@H=)mbIq*{0^^yW8typ--MHGt7*PjI2k(<@>NP9_JF1 zll#&PNf7UBU%8T!(njG|oVd6+3Y+_aNPm6)@g5Xf@4)FBU#cGL%+Jpk^dFA&Q_gX@ zZ0<18o|=NC5E$F9FGk=h0@s5%4~@2x2#doy$d!le6t3Blsho6^v|p25H|wL0+c4-~ z8QZIs; z7tsp)n>v(XG1iilAalL;#|Lkc-_H=p_DpY)JAHZLVuSz>_HjJ1L`*@!zc%b(O)%%3 z*$-m^f%8=nYTM?8qP(HyYd=Fnc_sN3yzFtfzDB9a&E*cmxY$?@O0*s(sS`GTA(VH9 zR=S!~I!hmTz-20LT^@k1y1%2RrzhX3^^}A};ADDQUVi?LP8BrysdL+_&+b7>2}-lY z*Xy1gCD1!armN4NKMy;skO#Sj5(Ew0+bJt6d&;Ilf_zE_iPv#)nS|{4%zQuNH$QOm zYfk!}-h3xR7Z;Z+SGpmuf&t?xcQ<~qQ{?n8v}ezspLY9EJkgP+w(tq1prDY!)zHvT z8zCqdu2tmPBkSH*mX(#&&~OQfC$dxi!!Pev=F*h`b$t1f-gjp%9oJKWpGrCZ_^jKH zZ||;Cse**EvNCJTEjeUiwsXf@n2?8u2LKzQsj-6f^z;N2!O*qI%-lT!%I6}r*(jIM z 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 literal 5646 zcmeHL=_8bF`=0UY2_17^H4r&1hbQ1d=(@JCJ^~SdMj(g} z5ePcmB90>vcxeP;(iVYGe1Smlc_fw?DI*X(VLF=XrhdqoDt6cIomLgyQ zr`5H;ttBrWym9#Y{@SJGYmeHuqtR%7TCLhdF12XxYa=VdgZl65pOJ%y38-}8ABme{ zELdH=VueVt_4V~?rw~oysKuqF9pu;-9v$$-sU`7bU~Igc69*<+7K!*F^Y82bHwS}n zF9=66>p?ocFJyRZEc427QPH$FZwg#{^8A-Z>+9>AGqlCB_eD^pY$^g5etv%S>Xo1J zsgFlcZU#X?6&~J;nG{Ew|5%cFCP9R)sX>k#EXQnWe zPl|&=(!<>Cc%u`odY8WYh+@H=)mbIq*{0^^yW8typ--MHGt7*PjI2k(<@>NP9_JF1 zll#&PNf7UBU%8T!(njG|oVd6+3Y+_aNPm6)@g5Xf@4)FBU#cGL%+Jpk^dFA&Q_gX@ zZ0<18o|=NC5E$F9FGk=h0@s5%4~@2x2#doy$d!le6t3Blsho6^v|p25H|wL0+c4-~ z8QZIs; z7tsp)n>v(XG1iilAalL;#|Lkc-_H=p_DpY)JAHZLVuSz>_HjJ1L`*@!zc%b(O)%%3 z*$-m^f%8=nYTM?8qP(HyYd=Fnc_sN3yzFtfzDB9a&E*cmxY$?@O0*s(sS`GTA(VH9 zR=S!~I!hmTz-20LT^@k1y1%2RrzhX3^^}A};ADDQUVi?LP8BrysdL+_&+b7>2}-lY z*Xy1gCD1!armN4NKMy;skO#Sj5(Ew0+bJt6d&;Ilf_zE_iPv#)nS|{4%zQuNH$QOm zYfk!}-h3xR7Z;Z+SGpmuf&t?xcQ<~qQ{?n8v}ezspLY9EJkgP+w(tq1prDY!)zHvT z8zCqdu2tmPBkSH*mX(#&&~OQfC$dxi!!Pev=F*h`b$t1f-gjp%9oJKWpGrCZ_^jKH zZ||;Cse**EvNCJTEjeUiwsXf@n2?8u2LKzQsj-6f^z;N2!O*qI%-lT!%I6}r*(jIM z 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 literal 8381 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 DIU$v1 diff --git a/test/refs/morph_modes40.png b/test/refs/morph_modes40.png index 9f0d19c78c870cf0aff3622c87fe5c331a8a6997..890a6c1f4de3b6d263b8225dd1c66fc474f17791 100644 GIT binary patch literal 7974 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 PHbUp3!G)}I*B<;A0E5mE literal 7967 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 literal 8266 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 diff --git a/test/refs/morph_modes49.png b/test/refs/morph_modes49.png index f040df369d5280a23d13265d3b1d55bf2f929d71..428140d3c2b42870f405debcdca2385bfa311587 100644 GIT binary patch literal 8912 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 literal 8907 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 Gt^Wda?42n9 From 217d2fc188594dd577d0bf230bd699d6db7ec272 Mon Sep 17 00:00:00 2001 From: Arsh <184517@nith.ac.in> Date: Fri, 30 Jul 2021 20:35:56 +0530 Subject: [PATCH 09/19] Run all tests --- test/runtests.jl | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/test/runtests.jl b/test/runtests.jl index cb3dae640..875bb122e 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -49,21 +49,3 @@ end @testset "Javis Viewer" begin include("viewer.jl") end -# @testset "Unit" begin -# include("unit.jl") -# end -# @testset "SVG LaTeX tests" begin -# include("svg.jl") -# end -# @testset "Animations" begin -# include("animations.jl") -# end -# @testset "Morphing" begin -# include("morphing.jl") -# end -# @testset "Javis Viewer" begin -# include("viewer.jl") -# end -@testset "Layers" begin - include("layers.jl") -end From aa54e44e164822360af7fb223dd466b2716b2f8d Mon Sep 17 00:00:00 2001 From: Arsh <184517@nith.ac.in> Date: Fri, 30 Jul 2021 23:30:08 +0530 Subject: [PATCH 10/19] rectify keyword argument --- src/morphs.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/morphs.jl b/src/morphs.jl index f7088303f..ba2ef5338 100644 --- a/src/morphs.jl +++ b/src/morphs.jl @@ -88,7 +88,7 @@ function _morph_to( frame, from_polys, to_polys; - style, + style = style, do_action = do_action, ) end @@ -107,7 +107,7 @@ function morph_between( frame, from_polys::Vector{Vector{Point}}, to_polys::Vector{Vector{Point}}; - style::Symbol, + style = :short, do_action = :stroke, ) cs = get_current_setting() From 6089821689d1602fcf630d85706cce9043e79f9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ole=20Kr=C3=B6ger?= Date: Sat, 31 Jul 2021 12:06:32 +0200 Subject: [PATCH 11/19] typo: on -> one --- src/morphs.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/morphs.jl b/src/morphs.jl index ba2ef5338..b55afe389 100644 --- a/src/morphs.jl +++ b/src/morphs.jl @@ -11,7 +11,7 @@ It especially does not work with functions which produce more than one polygon or which produce filled polygons. Blending between fills of polygons is definitely coming at a later stage. -To get a more visually appealing morphing on can try setting `style = :long`. +To get a more visually appealing morphing one can try setting `style = :long`. **Important:** The functions itself should not draw the polygon i.e. use `circle(Point(100,100), 50)` instead of `circle(Point(100,100), 50, :stroke)` From ac695027615c22e1fd7fb6f0d6dbe84b3e06b2b4 Mon Sep 17 00:00:00 2001 From: Arsh <184517@nith.ac.in> Date: Tue, 3 Aug 2021 18:36:07 +0530 Subject: [PATCH 12/19] Add docstring for prepare_to_interpoplate --- src/Shape.jl | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/Shape.jl b/src/Shape.jl index 2736ffbbd..955a43d44 100644 --- a/src/Shape.jl +++ b/src/Shape.jl @@ -220,7 +220,12 @@ function print_basic(s::Shape) println("#Holes: $(length(s.subpaths))") end +""" + prepare_to_interpolate(from_shape, to_shape, style) +Determines the way in which shapes are morphed to one another by manipulating the mapping of respective points +of each shape. +""" function prepare_to_interpolate(from_shape, to_shape, style) # match number of points for outer polygon from_outer, to_outer = match_num_points(from_shape.points, to_shape.points) From 77228a2dc2a8d81e95447532905f293ca25c0d66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ole=20Kr=C3=B6ger?= Date: Tue, 3 Aug 2021 17:01:20 +0200 Subject: [PATCH 13/19] use floor(Int, I feel `floor(Int, ` is cleaner as circshift by a float doesn't make sense --- src/Shape.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Shape.jl b/src/Shape.jl index 955a43d44..8486524bb 100644 --- a/src/Shape.jl +++ b/src/Shape.jl @@ -246,7 +246,7 @@ function prepare_to_interpolate(from_shape, to_shape, style) if style == :long new_from_outer = - circshift(reverse!(new_from_outer), floor(-length(new_from_outer) / 2.6)) # found this to work best + circshift(reverse!(new_from_outer), floor(Int, -length(new_from_outer) / 2.6)) # found this to work best end new_from_holes = Vector{Vector{Point}}() From f3f13c0f1b4242c786f0ae05dd0c7e1f00d41b9f Mon Sep 17 00:00:00 2001 From: Arsh <184517@nith.ac.in> Date: Sun, 8 Aug 2021 20:36:10 +0530 Subject: [PATCH 14/19] fix conflicts --- CHANGELOG.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 426ec801b..4e157078a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,5 @@ # Javis.jl - Changelog -## Unreleased -- Add a manim-like :long morhping mode -- added support for `rescale_factor` keyword in `render` function - ## v0.6.0 (3rd of August 2021) - Added layers see `@JLayer` From 10c7ff94b2321f41b0c4755ad6b24aeb3c9dcd2b Mon Sep 17 00:00:00 2001 From: Arsh <184517@nith.ac.in> Date: Sun, 8 Aug 2021 20:37:08 +0530 Subject: [PATCH 15/19] changelog --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e157078a..bc20f0958 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Javis.jl - Changelog +## Unreleased +- Add a manim-like :long morhping mode + +## v0.6.1 (7th of August 2021) +- Add shorthands for basic shapes + - New functions `JBox, JCircle, JEllipse, JLine, JPoly, JRect, JStar, @JShape` +- added support for `rescale_factor` keyword in `render` function +- Docstring improvements to `translate` + ## v0.6.0 (3rd of August 2021) - Added layers see `@JLayer` From c50eb5c0126ed9a44f6a98d043553b0758ebc934 Mon Sep 17 00:00:00 2001 From: Arsh <184517@nith.ac.in> Date: Sun, 8 Aug 2021 20:37:49 +0530 Subject: [PATCH 16/19] conflicts --- CHANGELOG.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bc20f0958..7d86c23a0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,5 @@ # Javis.jl - Changelog -## Unreleased -- Add a manim-like :long morhping mode - ## v0.6.1 (7th of August 2021) - Add shorthands for basic shapes - New functions `JBox, JCircle, JEllipse, JLine, JPoly, JRect, JStar, @JShape` From b89dc871ca12c60f1e1ae650a25be6ddd2061c58 Mon Sep 17 00:00:00 2001 From: Arsh <184517@nith.ac.in> Date: Sun, 8 Aug 2021 20:39:37 +0530 Subject: [PATCH 17/19] Fix changelog conflicts --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7d86c23a0..8011d1a3c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ - added support for `rescale_factor` keyword in `render` function - Docstring improvements to `translate` + ## v0.6.0 (3rd of August 2021) - Added layers see `@JLayer` @@ -113,4 +114,4 @@ Initial implementation with - frames for `Action` can be defined using a `UnitRange`, `Symbol` or `Rel` - `Translation`, `Rotation` - `appear`/`disappear` using opacity and linewidth in `SubAction` -- render `latex` using a basic svg parser +- render `latex` using a basic svg parser \ No newline at end of file From 0eb4752fc7d6f5a8237d96e6c7574eff4fe309ba Mon Sep 17 00:00:00 2001 From: Arsh <184517@nith.ac.in> Date: Sun, 8 Aug 2021 20:48:11 +0530 Subject: [PATCH 18/19] saner morphing modes nomenclature --- CHANGELOG.md | 3 +++ src/Shape.jl | 2 +- src/morphs.jl | 12 ++++++------ test/morphing.jl | 4 ++-- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8011d1a3c..c84dee5f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Javis.jl - Changelog +## Unreleased +- Add a manim-like :long morhping mode + ## v0.6.1 (7th of August 2021) - Add shorthands for basic shapes - New functions `JBox, JCircle, JEllipse, JLine, JPoly, JRect, JStar, @JShape` diff --git a/src/Shape.jl b/src/Shape.jl index 8486524bb..5c4410e08 100644 --- a/src/Shape.jl +++ b/src/Shape.jl @@ -244,7 +244,7 @@ function prepare_to_interpolate(from_shape, to_shape, style) rotate_i, _ = compute_shortest_morphing_dist(from_outer, to_outer) new_from_outer = circshift(from_outer, -rotate_i + 1) - if style == :long + if style == :mode1 new_from_outer = circshift(reverse!(new_from_outer), floor(Int, -length(new_from_outer) / 2.6)) # found this to work best end diff --git a/src/morphs.jl b/src/morphs.jl index 2ab9e2aa4..3c04eebe7 100644 --- a/src/morphs.jl +++ b/src/morphs.jl @@ -1,7 +1,7 @@ include("Shape.jl") """ - morph_to(to_func::Function; style=:short, object=:stroke) + morph_to(to_func::Function; style=:default, object=:stroke) A closure for the [`_morph_to`](@ref) function. This makes it easier to write the function inside an `Object`. @@ -39,7 +39,7 @@ circle_obj = Object(11:20, acirc) act!(circle_obj, Action(:same, morph_to(astar))) ``` """ -function morph_to(to_func::Function; style = :short, do_action = :stroke) +function morph_to(to_func::Function; style = :default, do_action = :stroke) return (video, object, action, frame) -> _morph_to( video, object, @@ -53,7 +53,7 @@ end """ - _morph_to(video::Video, object::Object, action::Action, frame, to_func::Function; style=:short, do_action=:stroke) + _morph_to(video::Video, object::Object, action::Action, frame, to_func::Function; style=:default, do_action=:stroke) Internal version of [`morph_to`](@ref) but described there. """ @@ -63,7 +63,7 @@ function _morph_to( action::Action, frame, to_func::Function; - style = :short, + style = :default, do_action = :stroke, ) if frame == last(get_frames(action)) @@ -98,7 +98,7 @@ end """ morph_between(video::Video, action::Action, frame, from_polys::Vector{Vector{Point}}, to_polys::Vector{Vector{Point}}; - style=:short, do_action=:stroke) + style=:default, do_action=:stroke) Internal version of [`morph_to`](@ref) after the from poly is defined. """ @@ -108,7 +108,7 @@ function morph_between( frame, from_polys::Vector{Vector{Point}}, to_polys::Vector{Vector{Point}}; - style = :short, + style = :default, do_action = :stroke, ) cs = get_current_setting() diff --git a/test/morphing.jl b/test/morphing.jl index 4a3ad953c..abf805562 100644 --- a/test/morphing.jl +++ b/test/morphing.jl @@ -231,8 +231,8 @@ end back = Background(1:50, ground) star_obj = Object(1:50, astar) box_obj = Object(1:50, abox) - act!(star_obj, Action(5:20, morph_to(acirc, style = :long))) - act!(box_obj, Action(30:50, morph_to(astar, style = :long))) + act!(star_obj, Action(5:20, morph_to(acirc, style = :mode1))) + act!(box_obj, Action(30:50, morph_to(astar, style = :mode1))) render(video; tempdirectory = "images", pathname = "") for i in [5, 10, 15, 19, 20, 21, 30, 35, 40, 45, 49, 50] From b79ff009a6ae9165dcaa210a8927ada361d03f5a Mon Sep 17 00:00:00 2001 From: Arsh <184517@nith.ac.in> Date: Fri, 20 Aug 2021 20:36:53 +0530 Subject: [PATCH 19/19] changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 87b4e11df..0c4dbcfb9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,7 @@ # Javis.jl - Changelog ## Unreleased -- Add a manim-like :long morhping mode +- Add new morhping mode ## v0.6.2 (12th of August 2021) - added `@Frames` macro for full power mode of defining frames