diff --git a/Libraries/Kanimaji/Include/Kanimaji/Kanimaji.hpp b/Libraries/Kanimaji/Include/Kanimaji/Kanimaji.hpp index 024e9f2..79d3d9b 100644 --- a/Libraries/Kanimaji/Include/Kanimaji/Kanimaji.hpp +++ b/Libraries/Kanimaji/Include/Kanimaji/Kanimaji.hpp @@ -13,11 +13,9 @@ namespace Kanimaji std::string Animate(const std::string& source, const AnimationSettings& settings = AnimationSettings::Default()); - void RemoveStrokeNumbers(const std::string& source, const std::string& destination, - const RemovalSetttings& settings = RemovalSetttings::Default()); + void RemoveStrokeNumbers(const std::string& source, const std::string& destination); - std::string RemoveStrokeNumbers(const std::string& source, - const RemovalSetttings& settings = RemovalSetttings::Default()); + std::string RemoveStrokeNumbers(const std::string& source); } #endif // KANIMAJI_KANIMAJI_HPP diff --git a/Libraries/Kanimaji/Include/Kanimaji/Settings.hpp b/Libraries/Kanimaji/Include/Kanimaji/Settings.hpp index 53f8597..47496fa 100644 --- a/Libraries/Kanimaji/Include/Kanimaji/Settings.hpp +++ b/Libraries/Kanimaji/Include/Kanimaji/Settings.hpp @@ -49,13 +49,6 @@ namespace Kanimaji static AnimationSettings Default(); }; - - struct RemovalSetttings - { - StrokeStyle Style; - - static RemovalSetttings Default(); - }; } #endif // KANIMAJI_CONFIG_HPP diff --git a/Libraries/Kanimaji/Source/Kanimaji.cpp b/Libraries/Kanimaji/Source/Kanimaji.cpp index d10eadb..3bf8034 100644 --- a/Libraries/Kanimaji/Source/Kanimaji.cpp +++ b/Libraries/Kanimaji/Source/Kanimaji.cpp @@ -12,55 +12,42 @@ namespace Kanimaji { namespace { - constexpr std::string_view StaticStrokeStyleFormat( - "fill:none;stroke:{};stroke-width:{};stroke-linecap:round;stroke-linejoin:round;" - ); - - constexpr std::string_view StrokeProgressionFormat( + using namespace std::string_view_literals; + constexpr auto StrokeProgressionFormat = " " "@keyframes stroke-{} {{ " "0.000% {{ stroke-dashoffset: {:.3f}; }} " "{:.3f}% {{ stroke-dashoffset: {:.3f}; }} " "{:.3f}% {{ stroke-dashoffset: 0; }} " - "100.000% {{ stroke-dashoffset: 0; }} }}\n" - ); - - constexpr std::string_view AnimationVisibilityFormat( + "100.000% {{ stroke-dashoffset: 0; }} }}\n"sv; + constexpr auto AnimationVisibilityFormat = " " "@keyframes display-{} {{ " "{:.3f}% {{ visibility: hidden; }} " - "{:.3f}% {{ stroke: {}; }} }}\n" - ); - - constexpr std::string_view AnimationProgressionFormat( + "{:.3f}% {{ stroke: {}; }} }}\n"sv; + constexpr auto AnimationProgressionFormat = " " "#{} {{ " "stroke-dasharray: {:.3f} {:.3f}; " "stroke-dashoffset: 0; " "animation: stroke-{} {:.3f}s {} infinite, " - "display-{} {:.3f}s step-start infinite; }}\n" - ); - - constexpr std::string_view BrushVisibilityFormat( + "display-{} {:.3f}s step-start infinite; }}\n"sv; + constexpr auto BrushVisibilityFormat = " " "@keyframes display-brush-{} {{ " "{:.3f}% {{ visibility: hidden; }} " "{:.3f}% {{ visibility: visible; }} " - "100.000% {{ visibility: hidden; }} }}\n" - ); - - constexpr std::string_view BrushProgressionFormat( + "100.000% {{ visibility: hidden; }} }}\n"sv; + constexpr auto BrushProgressionFormat = " " "#{}, #{} {{ " "stroke-dasharray: 0 {:.3f}; " "animation: stroke-{} {:.3f}s {} infinite, " - "display-brush-{} {:.3f}s step-start infinite; }}\n" - ); + "display-brush-{} {:.3f}s step-start infinite; }}\n"sv; - constexpr std::string_view StylesHeader( + constexpr auto StylesHeader = "\n " - "/* Styles generated automatically by Kanimaji, please avoid editing manually. */\n" - ); + "/* Styles generated automatically by Kanimaji, please avoid editing manually. */\n"sv; double AsSeconds(auto duration) { return std::max(0.0, duration.count()); @@ -78,7 +65,8 @@ namespace Kanimaji pugi::xml_node newGroup = svg.append_child("g"); newGroup.append_attribute("id") = name; newGroup.append_attribute("style") = std::format( - StaticStrokeStyleFormat, config.Colour.ToHex(), config.Width + "fill:none;stroke:{};stroke-width:{};stroke-linecap:round;stroke-linejoin:round;", + config.Colour.ToHex(), config.Width ); return newGroup; } @@ -282,8 +270,7 @@ namespace Kanimaji return str.str(); } - void RemoveStrokeNumbers(const std::string& source, const std::string& destination, - const RemovalSetttings& settings) + void RemoveStrokeNumbers(const std::string& source, const std::string& destination) { pugi::xml_document doc; pugi::xml_parse_result result = doc.load_file(source.c_str(), pugi::parse_full); @@ -297,13 +284,6 @@ namespace Kanimaji throw Error("Unexpected document format: Expected to find a SVG element"); } - pugi::xml_node pathsGroup = svg.find_child([](pugi::xml_node& node) { - return std::string_view(node.attribute("id").as_string()).contains("StrokePaths"); - }); - pathsGroup.attribute("style") = std::format( - StaticStrokeStyleFormat, settings.Style.Colour.ToHex(), settings.Style.Width - ); - RemoveStrokeNumbers(svg); if (!doc.save_file(destination.c_str())) { @@ -311,7 +291,7 @@ namespace Kanimaji } } - std::string RemoveStrokeNumbers(const std::string& source, const RemovalSetttings& settings) + std::string RemoveStrokeNumbers(const std::string& source) { pugi::xml_document doc; pugi::xml_parse_result result = doc.load_string(source.c_str(), pugi::parse_full); @@ -325,13 +305,6 @@ namespace Kanimaji throw Error("Unexpected document format: Expected to find a SVG element"); } - pugi::xml_node pathsGroup = svg.find_child([](pugi::xml_node& node) { - return std::string_view(node.attribute("id").as_string()).contains("StrokePaths"); - }); - pathsGroup.attribute("style") = std::format( - StaticStrokeStyleFormat, settings.Style.Colour.ToHex(), settings.Style.Width - ); - RemoveStrokeNumbers(svg); std::stringstream str; diff --git a/Libraries/Kanimaji/Source/Settings.cpp b/Libraries/Kanimaji/Source/Settings.cpp index 4574cc6..b2d676f 100644 --- a/Libraries/Kanimaji/Source/Settings.cpp +++ b/Libraries/Kanimaji/Source/Settings.cpp @@ -48,14 +48,4 @@ namespace Kanimaji .DelayBetweenStrokes = 50ms, }; } - - RemovalSetttings RemovalSetttings::Default() - { - return RemovalSetttings { - .Style = StrokeStyle { - .Width = 3.0, - .Colour = RGB::FromHex("#000000"), - }, - }; - } } diff --git a/README.md b/README.md index df391ea..39210af 100644 --- a/README.md +++ b/README.md @@ -21,12 +21,6 @@ void AnimateFile(const Path& source, const Path& destination, std::string Animate(const std::string& source, const AnimationSettings& settings = AnimationSettings::Default()); - -void RemoveStrokeNumbers(const std::string& source, const std::string& destination, - const RemovalSetttings& settings = RemovalSetttings::Default()); - -std::string RemoveStrokeNumbers(const std::string& source, - const RemovalSetttings& settings = RemovalSetttings::Default()); ``` The former function takes in two paths, where the first one specifies the file to be read, and @@ -119,7 +113,7 @@ Some caveats: The default settings generate a table with no characters (and horrible styling), you will need to specify custom settings like this for actual use: ```cpp -auto doc = GeneratePage(std::vector(), { +auto doc = GeneratePage({ .FullDocument = Flag::Enable, .OverrideIndentLevel = Flag::Disable, .IndentLevel = 0,