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

@@ -61,6 +61,7 @@ add_library(
../engine/node_canvas.cpp
../engine/node_checkbox.cpp
../engine/node_color_quad.cpp
../engine/node_combobox.cpp
../engine/node_dialog_browse.cpp
../engine/node_dialog_cloud.cpp
../engine/node_dialog_open.cpp

View File

@@ -30,7 +30,7 @@ android {
arguments '-DANDROID_PLATFORM=android-19',
'-DANDROID_TOOLCHAIN=clang',
'-DANDROID_STL=gnustl_static',
'-DCMAKE_BUILD_TYPE=Debug',
'-DCMAKE_BUILD_TYPE=Release',
'-DANDROID_ARM_NEON=TRUE'
}
}

View File

@@ -118,7 +118,6 @@ int GetUnicodeChar(struct android_app* app, int eventType, int keyCode, int meta
void android_async_lock(struct engine* engine)
{
pthread_mutex_lock(&engine->app->mutex);
LOG("lock");
eglMakeCurrent(engine->display, engine->surface, engine->surface, engine->context);
}
@@ -130,7 +129,6 @@ void android_async_swap(struct engine* engine)
void android_async_unlock(struct engine* engine)
{
eglMakeCurrent(engine->display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
LOG("unlock");
pthread_mutex_unlock(&engine->app->mutex);
}

View File

@@ -149,6 +149,9 @@
AD58E0761E3421F2006ACC15 /* YGNodeList.c in Sources */ = {isa = PBXBuildFile; fileRef = AD58E0741E3421F2006ACC15 /* YGNodeList.c */; };
AD58E0771E3421F2006ACC15 /* Yoga.c in Sources */ = {isa = PBXBuildFile; fileRef = AD58E0751E3421F2006ACC15 /* Yoga.c */; };
AD58E0791E342205006ACC15 /* tinyxml2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD58E0781E342205006ACC15 /* tinyxml2.cpp */; };
AD74030E1FB9D0C0004ACFCC /* node_combobox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD74030D1FB9D0C0004ACFCC /* node_combobox.cpp */; };
AD74030F1FB9D0D3004ACFCC /* node_combobox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD74030D1FB9D0C0004ACFCC /* node_combobox.cpp */; };
AD7403101FB9D0D4004ACFCC /* node_combobox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD74030D1FB9D0C0004ACFCC /* node_combobox.cpp */; };
AD744B6E1EBC9EF800B66E30 /* canvas_modes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD744B6C1EBC9EF700B66E30 /* canvas_modes.cpp */; };
AD759B681F2796EA00211963 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AD759B671F2796EA00211963 /* OpenGLES.framework */; };
AD759B691F279B3900211963 /* GLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AD759B661F27964D00211963 /* GLKit.framework */; };
@@ -342,6 +345,8 @@
AD58E0741E3421F2006ACC15 /* YGNodeList.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = YGNodeList.c; path = libs/yoga/yoga/YGNodeList.c; sourceTree = "<group>"; };
AD58E0751E3421F2006ACC15 /* Yoga.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Yoga.c; path = libs/yoga/yoga/Yoga.c; sourceTree = "<group>"; };
AD58E0781E342205006ACC15 /* tinyxml2.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = tinyxml2.cpp; path = libs/tinyxml2/tinyxml2.cpp; sourceTree = "<group>"; };
AD74030C1FB9D0BF004ACFCC /* node_combobox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = node_combobox.h; sourceTree = "<group>"; };
AD74030D1FB9D0C0004ACFCC /* node_combobox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = node_combobox.cpp; sourceTree = "<group>"; };
AD744B6C1EBC9EF700B66E30 /* canvas_modes.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = canvas_modes.cpp; sourceTree = "<group>"; };
AD744B6D1EBC9EF800B66E30 /* canvas_modes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = canvas_modes.h; sourceTree = "<group>"; };
AD759B641F2793AE00211963 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.0.sdk/System/Library/Frameworks/OpenGLES.framework; sourceTree = DEVELOPER_DIR; };
@@ -474,6 +479,8 @@
AD10635A1EC7ADFA002A525F /* node_checkbox.h */,
AD10635B1EC7ADFA002A525F /* node_color_quad.cpp */,
AD10635C1EC7ADFA002A525F /* node_color_quad.h */,
AD74030D1FB9D0C0004ACFCC /* node_combobox.cpp */,
AD74030C1FB9D0BF004ACFCC /* node_combobox.h */,
ADBC8C471FAE7CC20094B339 /* node_dialog_browse.cpp */,
ADBC8C491FAE7CC30094B339 /* node_dialog_browse.h */,
ADBC8C521FAFD0370094B339 /* node_dialog_cloud.cpp */,
@@ -828,6 +835,7 @@
ADE4911D1F86E65E00FB8E92 /* shapes.cc in Sources */,
AD0E5CC51ECC72AD00C35669 /* node_panel_color.cpp in Sources */,
AD0E5CD71ECC72AD00C35669 /* brush.cpp in Sources */,
AD7403101FB9D0D4004ACFCC /* node_combobox.cpp in Sources */,
AD0E5CBE1ECC72AD00C35669 /* node_color_quad.cpp in Sources */,
AD0E5CB51ECC72AD00C35669 /* YGNodeList.c in Sources */,
AD0E5CE11ECC72AD00C35669 /* shape.cpp in Sources */,
@@ -878,6 +886,7 @@
AD58E06F1E2A80BC006ACC15 /* shape.cpp in Sources */,
AD58E0651E2A76FD006ACC15 /* shader.cpp in Sources */,
AD4C08DA1E89BD0F0051D85F /* bezier.cpp in Sources */,
AD74030E1FB9D0C0004ACFCC /* node_combobox.cpp in Sources */,
AD0E11991ECA20F200CDA6BB /* app_shaders.cpp in Sources */,
ADBC8C531FAFD0370094B339 /* app_cloud.cpp in Sources */,
ADD6AFDA1F94DEB900E92461 /* node_progress_bar.cpp in Sources */,
@@ -931,6 +940,7 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
AD74030F1FB9D0D3004ACFCC /* node_combobox.cpp in Sources */,
ADBC8C571FAFD05A0094B339 /* node_dialog_cloud.cpp in Sources */,
ADD7D2951EBF9E1C00D5A897 /* bezier.cpp in Sources */,
AD1063A21EC7AE92002A525F /* node_panel_brush.cpp in Sources */,

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;
}