iOS: fix app id in path, pen pressure filtering on Line

This commit is contained in:
2019-03-11 11:40:17 +01:00
parent 5cd80f41fa
commit 373e7ad0e9
6 changed files with 48 additions and 13 deletions

View File

@@ -31,7 +31,7 @@ bool Asset::exist(std::string path)
}
else
{
std::ifstream f(path);
std::ifstream f(path, std::ios::binary);
return f.is_open();
}
return false; // useless return for the stupid xcode

View File

@@ -2,6 +2,7 @@
#include "log.h"
#include "brush.h"
#include "asset.h"
#include "app.h"
void BrushMesh::draw(const std::vector<StrokeSample>& samples, const glm::mat4& proj)
{
@@ -491,11 +492,17 @@ bool Brush::read(BinaryStreamReader& r)
r >> d;
d.value<Serializer::CString>("m_name", m_name);
d.value<Serializer::CString>("m_brush_path", m_brush_path);
m_brush_path = str_replace(m_brush_path, "{data_path}", App::I.data_path);
d.value<Serializer::CString>("m_brush_thumb_path", m_brush_thumb_path);
m_brush_thumb_path = str_replace(m_brush_thumb_path, "{data_path}", App::I.data_path);
d.value<Serializer::CString>("m_dual_path", m_dual_path);
m_dual_path = str_replace(m_dual_path, "{data_path}", App::I.data_path);
d.value<Serializer::CString>("m_dual_thumb_path", m_dual_thumb_path);
m_dual_thumb_path = str_replace(m_dual_thumb_path, "{data_path}", App::I.data_path);
d.value<Serializer::CString>("m_pattern_path", m_pattern_path);
m_pattern_path = str_replace(m_pattern_path, "{data_path}", App::I.data_path);
d.value<Serializer::CString>("m_pattern_thumb_path", m_pattern_thumb_path);
m_pattern_thumb_path = str_replace(m_pattern_thumb_path, "{data_path}", App::I.data_path);
d.value<Serializer::Vec4>("m_tip_color", m_tip_color);
d.value<Serializer::Vec2>("m_tip_scale", m_tip_scale);
@@ -576,12 +583,18 @@ void Brush::write(BinaryStreamWriter& w) const
d.class_id = "brush";
d.name = L"Brush class";
d.props["m_name"] = std::make_shared<Serializer::CString>(m_name);
d.props["m_brush_path"] = std::make_shared<Serializer::CString>(m_brush_path);
d.props["m_brush_thumb_path"] = std::make_shared<Serializer::CString>(m_brush_thumb_path);
d.props["m_dual_path"] = std::make_shared<Serializer::CString>(m_dual_path);
d.props["m_dual_thumb_path"] = std::make_shared<Serializer::CString>(m_dual_thumb_path);
d.props["m_pattern_path"] = std::make_shared<Serializer::CString>(m_pattern_path);
d.props["m_pattern_thumb_path"] = std::make_shared<Serializer::CString>(m_pattern_thumb_path);
d.props["m_brush_path"] = std::make_shared<Serializer::CString>(
str_replace(m_brush_path, App::I.data_path, "{data_path}"));
d.props["m_brush_thumb_path"] = std::make_shared<Serializer::CString>(
str_replace(m_brush_thumb_path, App::I.data_path, "{data_path}"));
d.props["m_dual_path"] = std::make_shared<Serializer::CString>(
str_replace(m_dual_path, App::I.data_path, "{data_path}"));
d.props["m_dual_thumb_path"] = std::make_shared<Serializer::CString>(
str_replace(m_dual_thumb_path, App::I.data_path, "{data_path}"));
d.props["m_pattern_path"] = std::make_shared<Serializer::CString>(
str_replace(m_pattern_path, App::I.data_path, "{data_path}"));
d.props["m_pattern_thumb_path"] = std::make_shared<Serializer::CString>(
str_replace(m_pattern_thumb_path, App::I.data_path, "{data_path}"));
d.props["m_tip_color"] = std::make_shared<Serializer::Vec4>(m_tip_color);
d.props["m_tip_scale"] = std::make_shared<Serializer::Vec2>(m_tip_scale);

View File

@@ -900,7 +900,8 @@ void Canvas::stroke_start(glm::vec3 point, float pressure)
m_current_stroke = std::make_unique<Stroke>();
m_current_stroke->m_camera.rot = m_cam_rot;
m_current_stroke->m_camera.fov = m_cam_fov;
m_current_stroke->m_filter_points = false;
if (m_current_mode == kCanvasMode::Line)
m_current_stroke->m_filter_points = false;
m_current_stroke->randomize_prng();
m_current_stroke->start(m_current_brush);
m_current_stroke->add_point(point, pressure);

View File

@@ -48,6 +48,8 @@ bool NodeButtonBrush::read(BinaryStreamReader& r)
d.value<Serializer::CString>("high_path", high_path);
d.value<Serializer::CString>("thumb_path", thumb_path);
d.value<Serializer::Boolean>("m_user_brush", m_user_brush);
high_path = str_replace(high_path, "{data_path}", App::I.data_path);
thumb_path = str_replace(thumb_path, "{data_path}", App::I.data_path);
return true;
}
@@ -57,8 +59,10 @@ void NodeButtonBrush::write(BinaryStreamWriter& w) const
d.class_id = "brush";
d.name = L"Brush class";
d.props["brush_name"] = std::make_shared<Serializer::CString>(brush_name);
d.props["high_path"] = std::make_shared<Serializer::CString>(high_path);
d.props["thumb_path"] = std::make_shared<Serializer::CString>(thumb_path);
d.props["high_path"] = std::make_shared<Serializer::CString>(
str_replace(high_path, App::I.data_path, "{data_path}"));
d.props["thumb_path"] = std::make_shared<Serializer::CString>(
str_replace(thumb_path, App::I.data_path, "{data_path}"));
d.props["m_user_brush"] = std::make_shared<Serializer::Boolean>(m_user_brush);
w << d;
}
@@ -544,7 +548,7 @@ bool NodePanelBrushPreset::restore()
auto vmin = sr.ru16();
if (vmaj != 0 && vmin != 1)
{
LOG("unrecognised version %d.$d", vmaj, vmin);
LOG("unrecognised version %d.%d", vmaj, vmin);
return false;
}

View File

@@ -508,6 +508,22 @@ bool str_iequals(const std::string& a, const std::string& b)
return true;
}
std::string str_replace(const std::string& string, const std::string& search, const std::string& replace)
{
std::string ret = string;
// Get the first occurrence
size_t pos = ret.find(search);
// Repeat till end is reached
while(pos != std::string::npos)
{
// Replace this occurrence of Sub String
ret.replace(pos, search.size(), replace);
// Get the next occurrence from the current position
pos = ret.find(search, pos + replace.size());
}
return ret;
}
static const char* gl2str(GLenum err)
{
switch (err)
@@ -611,4 +627,4 @@ void parallel_for(unsigned nb_elements, std::function<void(int i)> functor, bool
// Wait for the other thread to finish their task
if (use_threads)
std::for_each(my_threads.begin(), my_threads.end(), std::mem_fn(&std::thread::join));
}
}

View File

@@ -74,6 +74,7 @@ std::string unescape(const std::string& s);
std::wstring str2wstr(const std::string& str);
std::string wstr2str(const std::wstring& wstr);
bool str_iequals(const std::string& a, const std::string& b);
std::string str_replace(const std::string& string, const std::string& search, const std::string& replace);
size_t curl_data_handler(void *contents, size_t size, size_t nmemb, void *userp);
size_t curl_data_write(void *ptr, size_t size, size_t nmemb, FILE *stream);
@@ -181,7 +182,7 @@ public:
post_cv.wait(lock, [&]() { return unlocked | (q.size() < Max); });
if (q.size() >= Max) return;
}
if (std::find(q.begin(), q.end(), pkt) == q.end());
if (std::find(q.begin(), q.end(), pkt) == q.end())
top ? q.push_front(pkt) : q.push_back(pkt);
get_cv.notify_one();
}