From aa189a3468329fb837191ae07cb210c4cbdaa485 Mon Sep 17 00:00:00 2001 From: omigamedev Date: Thu, 28 Feb 2019 00:22:12 +0100 Subject: [PATCH] fix presets save and restore --- src/brush.cpp | 11 ++++++++++- src/node_panel_brush.cpp | 26 ++++++++++++++------------ src/node_panel_brush.h | 4 ++-- 3 files changed, 26 insertions(+), 15 deletions(-) diff --git a/src/brush.cpp b/src/brush.cpp index cd6b2fb..9f41f0b 100644 --- a/src/brush.cpp +++ b/src/brush.cpp @@ -236,7 +236,7 @@ std::vector Stroke::compute_samples() } else if (m_brush->m_tip_angle_init) { - s.angle = m_dir_init; + s.angle += m_dir_init; } m_prev_sample = s; @@ -351,7 +351,10 @@ bool Brush::load_tip(const std::string& path, const std::string& thumb) { m_tip_texture = std::make_shared(); if (!m_tip_texture->load(path)) + { + m_tip_texture = nullptr; return false; + } m_tip_texture->create_mipmaps(); m_tip_texture->auto_destroy = true; m_brush_path = path; @@ -365,7 +368,10 @@ bool Brush::load_dual(const std::string& path, const std::string& thumb) { m_dual_texture = std::make_shared(); if (!m_dual_texture->load(path)) + { + m_dual_texture = nullptr; return false; + } m_dual_texture->create_mipmaps(); m_dual_texture->auto_destroy = true; m_dual_path = path; @@ -377,7 +383,10 @@ bool Brush::load_pattern(const std::string& path, const std::string& thumb) { m_pattern_texture = std::make_shared(); if (!m_pattern_texture->load(path)) + { + m_pattern_texture = nullptr; return false; + } m_pattern_texture->create_mipmaps(); m_pattern_texture->auto_destroy = true; m_pattern_path = path; diff --git a/src/node_panel_brush.cpp b/src/node_panel_brush.cpp index 1a0b563..72c9792 100644 --- a/src/node_panel_brush.cpp +++ b/src/node_panel_brush.cpp @@ -481,10 +481,10 @@ bool NodePanelBrushPreset::save() i.m_name_len = b->m_name.size(); i.m_brush_path_len = b->m_brush_path.size(); i.m_brush_thumb_path_len = b->m_brush_thumb_path.size(); - i.m_dual_path_len = b->m_brush_path.size(); - i.m_dual_thumb_path_len = b->m_brush_thumb_path.size(); - i.m_stencil_path_len = b->m_pattern_path.size(); - i.m_stencil_thumb_path_len = b->m_pattern_thumb_path.size(); + i.m_dual_path_len = b->m_dual_path.size(); + i.m_dual_thumb_path_len = b->m_dual_thumb_path.size(); + i.m_pattern_path_len = b->m_pattern_path.size(); + i.m_pattern_thumb_path_len = b->m_pattern_thumb_path.size(); i.m_tip_color = b->m_tip_color; i.m_tip_scale = b->m_tip_scale; i.m_tip_size = b->m_tip_size; @@ -556,8 +556,8 @@ bool NodePanelBrushPreset::save() fwrite(b->m_name.c_str(), 1, b->m_name.size(), fp); fwrite(b->m_brush_path.c_str(), 1, b->m_brush_path.size(), fp); fwrite(b->m_brush_thumb_path.c_str(), 1, b->m_brush_thumb_path.size(), fp); - fwrite(b->m_dual_path.c_str(), 1, b->m_brush_path.size(), fp); - fwrite(b->m_dual_thumb_path.c_str(), 1, b->m_brush_thumb_path.size(), fp); + fwrite(b->m_dual_path.c_str(), 1, b->m_dual_path.size(), fp); + fwrite(b->m_dual_thumb_path.c_str(), 1, b->m_dual_thumb_path.size(), fp); fwrite(b->m_pattern_path.c_str(), 1, b->m_pattern_path.size(), fp); fwrite(b->m_pattern_thumb_path.c_str(), 1, b->m_pattern_thumb_path.size(), fp); } @@ -638,6 +638,8 @@ bool NodePanelBrushPreset::restore() b->m_dual_invert = i.m_dual_invert; b->m_dual_flipx = i.m_dual_flipx; b->m_dual_flipy = i.m_dual_flipy; + b->m_tip_randflipx = i.m_tip_randflipx; + b->m_tip_randflipy = i.m_tip_randflipy; b->m_tip_aspect = i.m_tip_aspect; b->m_dual_flow = i.m_dual_flow; b->m_dual_opacity = i.m_dual_opacity; @@ -660,15 +662,15 @@ bool NodePanelBrushPreset::restore() b->m_name.resize(i.m_name_len); b->m_brush_path.resize(i.m_brush_path_len); b->m_brush_thumb_path.resize(i.m_brush_thumb_path_len); - b->m_dual_path.resize(i.m_brush_path_len); - b->m_dual_thumb_path.resize(i.m_brush_thumb_path_len); - b->m_pattern_path.resize(i.m_stencil_path_len); - b->m_pattern_thumb_path.resize(i.m_stencil_thumb_path_len); + b->m_dual_path.resize(i.m_dual_path_len); + b->m_dual_thumb_path.resize(i.m_dual_thumb_path_len); + b->m_pattern_path.resize(i.m_pattern_path_len); + b->m_pattern_thumb_path.resize(i.m_pattern_thumb_path_len); fread((char*)b->m_name.c_str(), 1, b->m_name.size(), fp); fread((char*)b->m_brush_path.c_str(), 1, b->m_brush_path.size(), fp); fread((char*)b->m_brush_thumb_path.c_str(), 1, b->m_brush_thumb_path.size(), fp); - fread((char*)b->m_dual_path.c_str(), 1, b->m_brush_path.size(), fp); - fread((char*)b->m_dual_thumb_path.c_str(), 1, b->m_brush_thumb_path.size(), fp); + fread((char*)b->m_dual_path.c_str(), 1, b->m_dual_path.size(), fp); + fread((char*)b->m_dual_thumb_path.c_str(), 1, b->m_dual_thumb_path.size(), fp); fread((char*)b->m_pattern_path.c_str(), 1, b->m_pattern_path.size(), fp); fread((char*)b->m_pattern_thumb_path.c_str(), 1, b->m_pattern_thumb_path.size(), fp); diff --git a/src/node_panel_brush.h b/src/node_panel_brush.h index 5c1768b..0874a9c 100644 --- a/src/node_panel_brush.h +++ b/src/node_panel_brush.h @@ -100,8 +100,8 @@ class NodePanelBrushPreset : public Node int m_dual_path_len = 0; int m_dual_thumb_path_len = 0; - int m_stencil_path_len = 0; - int m_stencil_thumb_path_len = 0; + int m_pattern_path_len = 0; + int m_pattern_thumb_path_len = 0; glm::vec4 m_tip_color{ 0, 0, 0, 1 }; glm::vec2 m_tip_scale = { 1.f, 1.f };