update android and xcode projects, fix document title and change default resolution to 1024px

This commit is contained in:
2017-11-14 08:45:35 +00:00
parent 8bc440b9b8
commit 0d3431a9de
14 changed files with 42 additions and 28 deletions

View File

@@ -131,6 +131,7 @@ public:
void download(std::string filename);
void brush_update();
void title_update(std::string name, int resolution);
void cmd_convert(std::string pano_path, std::string out_path);
};

View File

@@ -117,10 +117,9 @@ void App::cloud_browse()
async_start();
canvas->reset_camera();
layers->clear();
canvas->m_canvas->project_open(dialog->selected_path);
canvas->m_canvas->project_open_thread(dialog->selected_path);
doc_name = dialog->selected_name;
if (auto docname = layout[main_id]->find<NodeText>("txt-docname"))
docname->set_text(("Panodoc: " + doc_name).c_str());
title_update(doc_name, canvas->m_canvas->m_width);
for (auto& i : canvas->m_canvas->m_order)
layers->add_layer(canvas->m_canvas->m_layers[i].m_name.c_str());
dialog->destroy();
@@ -129,4 +128,4 @@ void App::cloud_browse()
async_end();
}).detach();
};
}
}

View File

@@ -26,18 +26,18 @@ void App::dialog_newdoc()
std::string path = data_path + "/" + name + ".pano";
auto action = [this, dialog, name] {
std::array<int, 4> resolutions{512, 1024, 1536, 2048};
int res = resolutions[dialog->m_resolution->m_current_index];
doc_name = name;
if (auto docname = layout[main_id]->find<NodeText>("txt-docname"))
docname->set_text(("Panodoc: " + doc_name).c_str());
title_update(name, res);
int res = atoi(dialog->m_resolution->labels[dialog->m_resolution->m_current_index].c_str());
layers->clear();
canvas->m_canvas->m_layers.clear();
canvas->m_canvas->m_order.clear();
canvas->m_canvas->resize(res, res);
canvas->reset_camera();
ActionManager::clear();
canvas->m_canvas->layer_add("Default");
layers->add_layer("Default");
@@ -96,8 +96,7 @@ void App::dialog_open()
canvas->m_canvas->project_open(dialog->selected_path, [this] {
// on complete
async_start();
if (auto docname = layout[main_id]->find<NodeText>("txt-docname"))
docname->set_text(("Panodoc: " + doc_name).c_str());
title_update(doc_name, canvas->m_canvas->m_width);
for (auto& i : canvas->m_canvas->m_order)
layers->add_layer(canvas->m_canvas->m_layers[i].m_name.c_str());
async_end();
@@ -131,8 +130,7 @@ void App::dialog_browse()
canvas->m_canvas->project_open(dialog->selected_path, [this] {
// on complete
async_start();
if (auto docname = layout[main_id]->find<NodeText>("txt-docname"))
docname->set_text(("Panodoc: " + doc_name).c_str());
title_update(doc_name, canvas->m_canvas->m_width);
for (auto& i : canvas->m_canvas->m_order)
layers->add_layer(canvas->m_canvas->m_layers[i].m_name.c_str());
async_end();
@@ -168,8 +166,7 @@ void App::dialog_save_ver()
}
doc_name = next;
if (auto docname = layout[main_id]->find<NodeText>("txt-docname"))
docname->set_text(("Panodoc: " + doc_name).c_str());
title_update(doc_name, canvas->m_canvas->m_width);
canvas->m_canvas->project_save(data_path + "/" + next + ".pano");
}
@@ -204,8 +201,7 @@ void App::dialog_save()
auto action = [this, dialog, name, path] {
doc_name = name;
if (auto docname = layout[main_id]->find<NodeText>("txt-docname"))
docname->set_text(("Panodoc: " + doc_name).c_str());
title_update(doc_name, canvas->m_canvas->m_width);
canvas->m_canvas->project_save(path);
dialog->destroy();
App::I.hideKeyboard();

View File

@@ -10,6 +10,14 @@ using namespace ui;
static glm::vec4 color_button_normal{ .1, .1, .1, 1 };
static glm::vec4 color_button_hlight{ 1, .0, .0, 1 };
void App::title_update(std::string name, int resolution)
{
static char str[256];
snprintf(str, 256, "Panodoc: %s (%dpx)", doc_name.c_str(), resolution);
if (auto docname = layout[main_id]->find<NodeText>("txt-docname"))
docname->set_text(str);
}
void App::init_toolbar_main()
{

View File

@@ -112,10 +112,8 @@ void App::initShaders()
" case 3: return blend_colorDodge(base, stroke, alpha_tot);"
"}}\n"
"void main(){\n"
" mediump vec2 uv2 = gl_FragCoord.st / vec2(2048) * 20.0;\n"
" mediump vec4 base = texture(tex, uv.xy);\n"
" mediump vec4 stroke = texture(tex_stroke, uv.xy);\n"
" mediump float stencil = pow(texture(tex_stencil, uv2).r, 8.0);\n"
" stroke.a = mask ? stroke.a * alpha * blur(tex_mask, uv.xy).r : stroke.a * alpha;\n"
" if (!lock && base.a == 0.0) { frag = stroke; return; }\n"

View File

@@ -241,7 +241,7 @@ void ui::Canvas::stroke_draw()
ShaderManager::use(ui::kShader::Stroke);
ShaderManager::u_int(kShaderUniform::Tex, 0); // brush
ShaderManager::u_int(kShaderUniform::TexBG, 1); // bg
ShaderManager::u_int(kShaderUniform::TexStencil, 3); // stencil
//ShaderManager::u_int(kShaderUniform::TexStencil, 3); // stencil
ShaderManager::u_vec4(kShaderUniform::Col, m_brush.m_tip_color);
ShaderManager::u_vec2(kShaderUniform::Resolution, { m_width, m_height });
//ShaderManager::u_vec2(kShaderUniform::StencilOffset, glm::vec2((rand()%1000)*0.001f, (rand()%1000)*0.001f));
@@ -682,8 +682,9 @@ void ui::Canvas::layer_merge(int source_idx, int dest_idx) // m_layer index
ui::ShaderManager::u_int(kShaderUniform::Tex, 0); // dest
ui::ShaderManager::u_int(kShaderUniform::TexStroke, 1); // source
ui::ShaderManager::u_float(kShaderUniform::Alpha, 1);
ShaderManager::u_int(kShaderUniform::Lock, false);
ShaderManager::u_mat4(kShaderUniform::MVP, glm::ortho(-.5f, .5f, -.5f, .5f, -1.f, 1.f));
ui::ShaderManager::u_int(kShaderUniform::Lock, false);
ui::ShaderManager::u_int(kShaderUniform::BlendMode, 0); // TODO: defaulted to normal, change to layer blend mode when implemented
ui::ShaderManager::u_mat4(kShaderUniform::MVP, glm::ortho(-.5f, .5f, -.5f, .5f, -1.f, 1.f));
glActiveTexture(GL_TEXTURE0);
m_tex2[i].bind();

View File

@@ -9,7 +9,7 @@
NS_START
#define CANVAS_RES 2048
#define CANVAS_RES 512
class Layer
{

View File

@@ -149,7 +149,7 @@ void NodeCanvas::draw()
ui::ShaderManager::u_int(kShaderUniform::Tex, 0);
ui::ShaderManager::u_int(kShaderUniform::TexStroke, 1);
ui::ShaderManager::u_int(kShaderUniform::TexMask, 2);
ui::ShaderManager::u_int(kShaderUniform::TexStencil, 3);
//ui::ShaderManager::u_int(kShaderUniform::TexStencil, 3);
ui::ShaderManager::u_float(kShaderUniform::Alpha, m_canvas->m_current_stroke->m_brush.m_tip_opacity);
ui::ShaderManager::u_int(kShaderUniform::Lock, m_canvas->m_layers[m_canvas->m_current_layer_idx].m_alpha_locked);
ui::ShaderManager::u_int(kShaderUniform::Mask, m_canvas->m_smask_active);

View File

@@ -60,7 +60,8 @@ bool RTT::create(int width, int height, int tex/* = -1*/, GLint internal_format)
glBindTexture(GL_TEXTURE_2D, texID);
if (tex == -1)
glTexImage2D(GL_TEXTURE_2D, 0, internal_format, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
glTexImage2D(GL_TEXTURE_2D, 0, internal_format, width, height, 0, GL_RGBA,
internal_format == GL_RGBA32F ? GL_FLOAT : GL_UNSIGNED_BYTE, 0);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);

View File

@@ -46,7 +46,8 @@ bool Texture2D::create(int width, int height, GLint internal_format, GLint forma
glGenTextures(1, &m_tex);
//LOG("TEX create %d", m_tex);
bind();
glTexImage2D(GL_TEXTURE_2D, 0, internal_format, width, height, 0, format, GL_UNSIGNED_BYTE, data);
glTexImage2D(GL_TEXTURE_2D, 0, internal_format, width, height, 0, format,
internal_format == GL_RGBA32F ? GL_FLOAT : GL_UNSIGNED_BYTE, data);
unbind();
return true;
}