From 7c95f8f9aacfc2083a47d61b338229e33cb2c61d Mon Sep 17 00:00:00 2001 From: Filip Sykala Date: Fri, 18 Feb 2022 13:01:40 +0100 Subject: [PATCH] store / load .3mf TextConfiguration: distance from surface & rotation for move text over surface store / load appConfig distance from surface & rotation for move text over surface --- src/libslic3r/Format/3mf.cpp | 12 ++++++++++++ src/slic3r/Utils/FontListSerializable.cpp | 12 ++++++++++-- src/slic3r/Utils/FontListSerializable.hpp | 2 ++ 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/Format/3mf.cpp b/src/libslic3r/Format/3mf.cpp index 3359983a55..8e7b402cd5 100644 --- a/src/libslic3r/Format/3mf.cpp +++ b/src/libslic3r/Format/3mf.cpp @@ -161,6 +161,8 @@ static constexpr const char *LINE_HEIGHT_ATTR = "line_height"; static constexpr const char *DEPTH_ATTR = "depth"; static constexpr const char *BOLDNESS_ATTR = "boldness"; static constexpr const char *SKEW_ATTR = "skew"; +static constexpr const char *DISTANCE_ATTR = "distance"; +static constexpr const char *ANGLE_ATTR = "angle"; static constexpr const char *FONT_FAMILY_ATTR = "family"; static constexpr const char *FONT_FACE_NAME_ATTR = "face_name"; @@ -3323,6 +3325,10 @@ void TextConfigurationSerialization::to_xml(std::stringstream &stream, const Tex stream << BOLDNESS_ATTR << "=\"" << *fp.boldness << "\" "; if (fp.skew.has_value()) stream << SKEW_ATTR << "=\"" << *fp.skew << "\" "; + if (fp.distance.has_value()) + stream << DISTANCE_ATTR << "=\"" << *fp.distance << "\" "; + if (fp.angle.has_value()) + stream << ANGLE_ATTR << "=\"" << *fp.angle << "\" "; // font descriptor if (fp.family.has_value()) @@ -3349,6 +3355,12 @@ std::optional TextConfigurationSerialization::read(const char float skew = get_attribute_value_float(attributes, num_attributes, SKEW_ATTR); if (std::fabs(skew) > std::numeric_limits::epsilon()) fp.skew = skew; + float distance = get_attribute_value_float(attributes, num_attributes, DISTANCE_ATTR); + if (std::fabs(distance) > std::numeric_limits::epsilon()) + fp.distance = distance; + float angle = get_attribute_value_float(attributes, num_attributes, ANGLE_ATTR); + if (std::fabs(angle) > std::numeric_limits::epsilon()) + fp.angle = angle; fp.size_in_mm = get_attribute_value_float(attributes, num_attributes, LINE_HEIGHT_ATTR); fp.emboss = get_attribute_value_float(attributes, num_attributes, DEPTH_ATTR); diff --git a/src/slic3r/Utils/FontListSerializable.cpp b/src/slic3r/Utils/FontListSerializable.cpp index 8c77747133..0ccbae3441 100644 --- a/src/slic3r/Utils/FontListSerializable.cpp +++ b/src/slic3r/Utils/FontListSerializable.cpp @@ -6,12 +6,14 @@ using namespace Slic3r; using namespace Slic3r::GUI; -const std::string FontListSerializable::APP_CONFIG_FONT_NAME = "name"; -const std::string FontListSerializable::APP_CONFIG_FONT_DESCRIPTOR = "descriptor"; +const std::string FontListSerializable::APP_CONFIG_FONT_NAME = "name"; +const std::string FontListSerializable::APP_CONFIG_FONT_DESCRIPTOR = "descriptor"; const std::string FontListSerializable::APP_CONFIG_FONT_LINE_HEIGHT = "line_height"; const std::string FontListSerializable::APP_CONFIG_FONT_DEPTH = "depth"; const std::string FontListSerializable::APP_CONFIG_FONT_BOLDNESS = "boldness"; const std::string FontListSerializable::APP_CONFIG_FONT_SKEW = "skew"; +const std::string FontListSerializable::APP_CONFIG_FONT_DISTANCE = "distance"; +const std::string FontListSerializable::APP_CONFIG_FONT_ANGLE = "angle"; const std::string FontListSerializable::APP_CONFIG_FONT_CHAR_GAP = "char_gap"; const std::string FontListSerializable::APP_CONFIG_FONT_LINE_GAP = "line_gap"; @@ -79,6 +81,8 @@ std::optional FontListSerializable::load_font_item( read(app_cfg_section, APP_CONFIG_FONT_DEPTH, fp.emboss); read(app_cfg_section, APP_CONFIG_FONT_BOLDNESS, fp.boldness); read(app_cfg_section, APP_CONFIG_FONT_SKEW, fp.skew); + read(app_cfg_section, APP_CONFIG_FONT_DISTANCE, fp.distance); + read(app_cfg_section, APP_CONFIG_FONT_ANGLE, fp.angle); read(app_cfg_section, APP_CONFIG_FONT_CHAR_GAP, fp.char_gap); read(app_cfg_section, APP_CONFIG_FONT_LINE_GAP, fp.line_gap); @@ -101,6 +105,10 @@ void FontListSerializable::store_font_item(AppConfig & cfg, cfg.set(section_name, APP_CONFIG_FONT_BOLDNESS, std::to_string(*fp.boldness)); if (fp.skew.has_value()) cfg.set(section_name, APP_CONFIG_FONT_SKEW, std::to_string(*fp.skew)); + if (fp.distance.has_value()) + cfg.set(section_name, APP_CONFIG_FONT_DISTANCE, std::to_string(*fp.distance)); + if (fp.angle.has_value()) + cfg.set(section_name, APP_CONFIG_FONT_ANGLE, std::to_string(*fp.angle)); if (fp.char_gap.has_value()) cfg.set(section_name, APP_CONFIG_FONT_CHAR_GAP, std::to_string(*fp.char_gap)); if (fp.line_gap.has_value()) diff --git a/src/slic3r/Utils/FontListSerializable.hpp b/src/slic3r/Utils/FontListSerializable.hpp index dc598885fe..692d9de0a7 100644 --- a/src/slic3r/Utils/FontListSerializable.hpp +++ b/src/slic3r/Utils/FontListSerializable.hpp @@ -23,6 +23,8 @@ class FontListSerializable static const std::string APP_CONFIG_FONT_DEPTH; static const std::string APP_CONFIG_FONT_BOLDNESS; static const std::string APP_CONFIG_FONT_SKEW; + static const std::string APP_CONFIG_FONT_DISTANCE; + static const std::string APP_CONFIG_FONT_ANGLE; static const std::string APP_CONFIG_FONT_CHAR_GAP; static const std::string APP_CONFIG_FONT_LINE_GAP; public: