update file format to 0.2 for blending mode, visibility and alpha lock attributes

This commit is contained in:
2019-01-12 16:08:23 +01:00
parent 6ba29926ef
commit d5b5946b3d
4 changed files with 28 additions and 8 deletions

View File

@@ -44,7 +44,10 @@ void App::open_document(std::string path)
async_start();
title_update();
for (auto& i : canvas->m_canvas->m_order)
layers->add_layer(canvas->m_canvas->m_layers[i].m_name.c_str());
{
auto l = layers->add_layer(canvas->m_canvas->m_layers[i].m_name.c_str());
l->m_visibility->set_value(canvas->m_canvas->m_layers[i].m_visible);
}
async_end();
}
else

View File

@@ -1803,6 +1803,13 @@ bool Canvas::project_save_thread(std::string file_path)
int name_len = (int)m_layers[i].m_name.size();
fwrite(&name_len, sizeof(int), 1, fp);
fwrite(m_layers[i].m_name.data(), name_len, 1, fp);
if (ppi_header.doc_version.minor > 1)
{
fwrite(&m_layers[i].m_blend_mode, sizeof(int), 1, fp);
fwrite(&m_layers[i].m_alpha_locked, sizeof(bool), 1, fp);
fwrite(&m_layers[i].m_visible, sizeof(bool), 1, fp);
}
App::I.async_start();
auto snap = m_layers[i].snapshot();
@@ -1971,13 +1978,23 @@ bool Canvas::project_open_thread(std::string file_path)
int n_order;
fread(&n_order, sizeof(int), 1, fp);
float layer_opacity;
fread(&layer_opacity, sizeof(float), 1, fp);
tmp_layers.emplace_back();
auto& layer = tmp_layers.back();
fread(&layer.m_opacity, sizeof(float), 1, fp);
int name_len;
fread(&name_len, sizeof(int), 1, fp);
std::string name(name_len, '\0');
fread((char*)name.data(), name_len, 1, fp);
if (ppi_header.doc_version.minor > 1)
{
fread(&layer.m_blend_mode, sizeof(int), 1, fp);
fread(&layer.m_alpha_locked, sizeof(bool), 1, fp);
fread(&layer.m_visible, sizeof(bool), 1, fp);
}
snap.clear();
for (int plane_index = 0; plane_index < 6; plane_index++)
{
@@ -2021,8 +2038,6 @@ bool Canvas::project_open_thread(std::string file_path)
}
App::I.async_start();
tmp_layers.emplace_back();
tmp_layers.back().m_opacity = layer_opacity;
tmp_layers.back().create(m_width, m_height, name.c_str());
tmp_layers.back().clear({0, 0, 0, 0});
tmp_layers.back().restore(snap);

View File

@@ -71,7 +71,7 @@ struct PPIThumb
struct PPIDocVersion
{
int major = 0;
int minor = 1;
int minor = 2;
};
struct PPISoftVersion
@@ -92,7 +92,7 @@ struct PPIHeader
{
if (strcmp(magic, "PPI") != 0)
return false;
if (doc_version.major != 0 || doc_version.minor != 1)
if (doc_version.major != 0 || (doc_version.minor < 1 && doc_version.minor > 2))
return false;
if (!thumb_header.valid())
return false;

View File

@@ -128,7 +128,9 @@ void NodeDialogCloud::load_thumbs_thread()
break;
res.clear();
std::string url = "https://panopainter.com/cloud/cloud-info.php?file=" + n;
char* url_escaped = curl_easy_escape(curl, n.c_str(), n.size());
std::string url = std::string("https://panopainter.com/cloud/cloud-info.php?file=") + url_escaped;
delete url_escaped;
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
LOG("%s", url.c_str());
auto err = curl_easy_perform(curl);