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

@@ -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);