fix imported image aspect ratio and the transform handles for touch devices
This commit is contained in:
@@ -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];
|
||||
}];
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user