diff --git a/PanoPainter/GameViewController.m b/PanoPainter/GameViewController.m index 3f7b2ed..02d4cc8 100644 --- a/PanoPainter/GameViewController.m +++ b/PanoPainter/GameViewController.m @@ -97,13 +97,13 @@ std::recursive_mutex lock_mutex; std::string path = [chosenImage cStringUsingEncoding:NSUTF8StringEncoding]; p->callback(path); [picker dismissViewControllerAnimated:YES completion:^{ - [self keyboardWillBeHidden:nil]; + [self keyboardWasHidden:nil]; }]; } - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker { [picker dismissViewControllerAnimated:YES completion:^{ - [self keyboardWillBeHidden:nil]; + [self keyboardWasHidden:nil]; }]; } diff --git a/src/asset.cpp b/src/asset.cpp index 147f1c6..9ec6b56 100644 --- a/src/asset.cpp +++ b/src/asset.cpp @@ -171,7 +171,7 @@ glm::uint8_t* Asset::read_all() if (m_len != fread(m_data, 1, m_len, m_fp)) { LOG("ASSET READ FAILED for %s", m_current_path.c_str()); - delete m_data; + delete[] m_data; m_data = nullptr; } } diff --git a/src/canvas_modes.cpp b/src/canvas_modes.cpp index b56f20e..5ccf348 100644 --- a/src/canvas_modes.cpp +++ b/src/canvas_modes.cpp @@ -869,11 +869,11 @@ void CanvasModeTransform::enter() if (m_source_image.data()) { m_tex[0].create(m_source_image); - aspect = m_source_image.width / m_source_image.height; + aspect = (float)m_source_image.width / (float)m_source_image.height; } auto center = zw(canvas->m_box) * 0.5f; - glm::vec2 bb_sz = glm::vec2(aspect, 0.75f) * 100.f; + glm::vec2 bb_sz = glm::vec2(aspect, 1.f) * 100.f; glm::vec2 bb_min = center - bb_sz * 0.5f; glm::vec2 bb_max = center + bb_sz * 0.5f; glm::vec2 midpoint = (bb_min + bb_max) * 0.5f; @@ -1221,7 +1221,7 @@ void CanvasModeTransform::on_Draw(const glm::mat4& ortho, const glm::mat4& proj, auto c2d = (xy(c3d) * 0.5f + 0.5f) * zw(canvas->m_box); ui::ShaderManager::u_mat4(ui::kShaderUniform::MVP, - ortho * glm::translate(glm::vec3(c2d, 0)) * glm::scale(glm::vec3(10.f))); + ortho * glm::translate(glm::vec3(c2d, 0)) * glm::scale(glm::vec3(20.f) * App::I.zoom)); // draw inside ui::ShaderManager::u_vec4(ui::kShaderUniform::Col, { 1, 1, 1, i == corner_hl ? 1.f : .1f }); @@ -1248,8 +1248,19 @@ void CanvasModeTransform::on_MouseEvent(MouseEvent* me, glm::vec2& loc) break; case kEventType::MouseUpL: m_dragging = false; + corner_hl = -1; break; case kEventType::MouseDownL: + corner_hl = -1; + corners2d.resize(corners.size()); + for (int i = 0; i < corners.size(); i++) + { + auto c = m2d * glm::vec4(corners[i], 1); + corners2d[i] = ((xy(c) / c.z) * 0.5f + 0.5f) * zw(canvas->m_box); + float d = glm::distance(corners2d[i], loc); + if (d < 20.f * App::I.zoom) + corner_hl = i; + } if (corner_hl != -1) { m_dragging = true; @@ -1273,7 +1284,7 @@ void CanvasModeTransform::on_MouseEvent(MouseEvent* me, glm::vec2& loc) auto c = m2d * glm::vec4(corners[i], 1); corners2d[i] = ((xy(c) / c.z) * 0.5f + 0.5f) * zw(canvas->m_box); float d = glm::distance(corners2d[i], loc); - if (d < 10) + if (d < 20.f * App::I.zoom) corner_hl = i; } if (m_dragging)