update file format to 0.2 for blending mode, visibility and alpha lock attributes
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user