fix imported image aspect ratio and the transform handles for touch devices

This commit is contained in:
2018-11-27 11:27:28 +01:00
parent a99af642bc
commit 5c39e07434
3 changed files with 18 additions and 7 deletions

View File

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

View File

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

View File

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