App::I static singleton to pointer
This commit is contained in:
@@ -31,9 +31,9 @@ void CanvasModeBasicCamera::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
|
||||
// }
|
||||
break;
|
||||
case kEventType::MouseDownR:
|
||||
if (App::I.keys[(int)kKey::KeyAlt])
|
||||
if (App::I->keys[(int)kKey::KeyAlt])
|
||||
break;
|
||||
m_zooming = App::I.keys[(int)kKey::KeyCtrl];
|
||||
m_zooming = App::I->keys[(int)kKey::KeyCtrl];
|
||||
m_draggingR = true;
|
||||
m_dragR_start = me->m_pos;
|
||||
m_pan_start = Canvas::I->m_pan;
|
||||
@@ -53,7 +53,7 @@ void CanvasModeBasicCamera::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
|
||||
}
|
||||
else
|
||||
{
|
||||
auto dir = (App::I.has_vr && App::I.vr_active) ? glm::vec2(1, 1) : glm::vec2(-1, -1);
|
||||
auto dir = (App::I->has_vr && App::I->vr_active) ? glm::vec2(1, 1) : glm::vec2(-1, -1);
|
||||
Canvas::I->m_pan = m_pan_start + (me->m_pos - m_dragR_start) * dir * (Canvas::I->m_cam_fov / 85.f);
|
||||
auto angle = Canvas::I->m_pan * 0.003f;
|
||||
Canvas::I->m_cam_rot = glm::eulerAngleXY(angle.y, angle.x);
|
||||
@@ -63,7 +63,7 @@ void CanvasModeBasicCamera::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
|
||||
case kEventType::MouseScroll:
|
||||
m_zoom_canvas += me->m_scroll_delta * 0.1f;
|
||||
Canvas::I->m_cam_fov -= me->m_scroll_delta * 2.0f;
|
||||
App::I.brush_update();
|
||||
App::I->brush_update();
|
||||
break;
|
||||
case kEventType::MouseCancel:
|
||||
m_draggingR = false;
|
||||
@@ -89,7 +89,7 @@ void CanvasModeBasicCamera::on_GestureEvent(GestureEvent* ge)
|
||||
Canvas::I->m_cam_fov = m_camera_fov - ge->m_distance_delta * .05f;
|
||||
auto angle = Canvas::I->m_pan * 0.003f;
|
||||
Canvas::I->m_cam_rot = glm::eulerAngleXY(angle.y, angle.x);
|
||||
App::I.brush_update();
|
||||
App::I->brush_update();
|
||||
break;
|
||||
}
|
||||
default:
|
||||
@@ -125,17 +125,17 @@ void CanvasModePen::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
|
||||
switch (me->m_type)
|
||||
{
|
||||
case kEventType::MouseDownL:
|
||||
if (App::I.keys[(int)kKey::KeyAlt] || m_picking)
|
||||
if (App::I->keys[(int)kKey::KeyAlt] || m_picking)
|
||||
{
|
||||
m_picking = true;
|
||||
Canvas::I->pick_start();
|
||||
glm::vec4 pix = Canvas::I->pick_get(loc);
|
||||
Canvas::I->m_current_brush->m_tip_color = pix;
|
||||
App::I.brush_update();
|
||||
App::I->brush_update();
|
||||
}
|
||||
else
|
||||
{
|
||||
App::I.render_task_async([loc, pr=me->m_pressure]
|
||||
App::I->render_task_async([loc, pr=me->m_pressure]
|
||||
{
|
||||
Canvas::I->stroke_start({ loc, 0 }, pr);
|
||||
});
|
||||
@@ -147,7 +147,7 @@ void CanvasModePen::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
|
||||
if (m_dragging && !m_picking)
|
||||
{
|
||||
node->mouse_release();
|
||||
App::I.render_task_async([]
|
||||
App::I->render_task_async([]
|
||||
{
|
||||
Canvas::I->stroke_end();
|
||||
});
|
||||
@@ -157,19 +157,19 @@ void CanvasModePen::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
|
||||
node->mouse_release();
|
||||
glm::vec4 pix = Canvas::I->pick_get(loc);
|
||||
Canvas::I->m_current_brush->m_tip_color = pix;
|
||||
App::I.brush_update();
|
||||
App::I->brush_update();
|
||||
Canvas::I->pick_end();
|
||||
}
|
||||
m_dragging = false;
|
||||
m_picking = false;
|
||||
break;
|
||||
case kEventType::MouseDownR:
|
||||
if (App::I.keys[(int)kKey::KeyAlt])
|
||||
if (App::I->keys[(int)kKey::KeyAlt])
|
||||
{
|
||||
m_resizing = true;
|
||||
m_dragging = true;
|
||||
m_size_pos_start = m_cur_pos;
|
||||
auto curve = App::I.stroke->m_curves[App::I.stroke->m_tip_size];
|
||||
auto curve = App::I->stroke->m_curves[App::I->stroke->m_tip_size];
|
||||
m_size_value_start = curve.to_slider(Canvas::I->m_current_brush->m_tip_size);
|
||||
node->mouse_capture();
|
||||
}
|
||||
@@ -185,7 +185,7 @@ void CanvasModePen::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
|
||||
case kEventType::MouseMove:
|
||||
if (m_dragging && !m_picking && !m_resizing)
|
||||
{
|
||||
App::I.render_task_async([loc, pr=me->m_pressure]
|
||||
App::I->render_task_async([loc, pr=me->m_pressure]
|
||||
{
|
||||
Canvas::I->stroke_update({ loc, 0 }, pr);
|
||||
});
|
||||
@@ -194,21 +194,21 @@ void CanvasModePen::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
|
||||
{
|
||||
glm::vec4 pix = Canvas::I->pick_get(loc);
|
||||
Canvas::I->m_current_brush->m_tip_color = pix;
|
||||
App::I.brush_update();
|
||||
App::I->brush_update();
|
||||
}
|
||||
if (m_dragging && m_resizing)
|
||||
{
|
||||
auto diff = m_cur_pos - m_size_pos_start;
|
||||
auto curve = App::I.stroke->m_curves[App::I.stroke->m_tip_size];
|
||||
auto curve = App::I->stroke->m_curves[App::I->stroke->m_tip_size];
|
||||
Canvas::I->m_current_brush->m_tip_size = glm::max(curve.to_value(m_size_value_start + diff.x * 0.001f), 0.001f);
|
||||
App::I.brush_update();
|
||||
App::I->brush_update();
|
||||
}
|
||||
m_cur_pos = loc;
|
||||
break;
|
||||
case kEventType::MouseCancel:
|
||||
if (m_dragging)
|
||||
{
|
||||
App::I.render_task_async([]
|
||||
App::I->render_task_async([]
|
||||
{
|
||||
Canvas::I->stroke_cancel();
|
||||
});
|
||||
@@ -231,14 +231,14 @@ void CanvasModePen::on_Draw(const glm::mat4& ortho, const glm::mat4& proj, const
|
||||
{
|
||||
const auto& brush = Canvas::I->m_current_brush;
|
||||
auto pos = m_resizing ? m_size_pos_start : m_cur_pos;
|
||||
//if (App::I.keys[(int)kKey::KeyAlt] && !m_resizing)
|
||||
//if (App::I->keys[(int)kKey::KeyAlt] && !m_resizing)
|
||||
// pos.x = pos.x - brush->m_tip_size * .5f;
|
||||
ShaderManager::use(kShader::StrokePreview);
|
||||
ShaderManager::u_int(kShaderUniform::Tex, 0);
|
||||
ShaderManager::u_float(kShaderUniform::Alpha, brush->m_tip_flow * brush->m_tip_opacity);
|
||||
float tip_scale_fix = 1.f / glm::tan(glm::radians(Canvas::I->m_cam_fov * 0.5f));
|
||||
float tip_angle = brush->m_tip_angle * (float)(M_PI * 2.0);
|
||||
glm::vec2 tip_scale = App::I.zoom * brush->m_tip_scale *
|
||||
glm::vec2 tip_scale = App::I->zoom * brush->m_tip_scale *
|
||||
glm::vec2(brush->m_tip_size * tip_scale_fix) *
|
||||
glm::vec2(brush->m_tip_flipx ? -1 : 1, brush->m_tip_flipy ? -1.f : 1.f) *
|
||||
glm::vec2((brush->m_tip_aspect <= 0.5 ? brush->m_tip_aspect * 2.f : 1.f),
|
||||
@@ -250,14 +250,14 @@ void CanvasModePen::on_Draw(const glm::mat4& ortho, const glm::mat4& proj, const
|
||||
const auto& s = Canvas::I->m_current_stroke->m_prev_sample;
|
||||
if (s.size > 0.f)
|
||||
{
|
||||
tip_scale = App::I.zoom * (brush->m_tip_size * tip_scale_fix) * s.scale;
|
||||
tip_scale = App::I->zoom * (brush->m_tip_size * tip_scale_fix) * s.scale;
|
||||
tip_angle = s.angle;
|
||||
tip_offset = s.pos - s.origin;
|
||||
tip_color = glm::vec4(s.col, s.flow);
|
||||
}
|
||||
}
|
||||
glm::u8vec4 pixel;
|
||||
glReadPixels(pos.x / App::I.zoom, (App::I.height - pos.y - 1) / App::I.zoom, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, &pixel);
|
||||
glReadPixels(pos.x / App::I->zoom, (App::I->height - pos.y - 1) / App::I->zoom, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, &pixel);
|
||||
bool outline = glm::min(tip_scale.x, tip_scale.y) < 20 || m_resizing ? false : m_draw_outline;
|
||||
ShaderManager::u_int(kShaderUniform::DrawOutline, outline);
|
||||
ShaderManager::u_vec4(kShaderUniform::Col, outline ? glm::vec4(1.f - glm::vec3(pixel) / 255.f, 1.f) : tip_color);
|
||||
@@ -312,7 +312,7 @@ void CanvasModeLine::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
|
||||
node->mouse_release();
|
||||
if (m_dragging)
|
||||
{
|
||||
App::I.render_task_async([=]
|
||||
App::I->render_task_async([=]
|
||||
{
|
||||
Canvas::I->stroke_start({ m_drag_start, 0 }, 1.f);
|
||||
Canvas::I->stroke_update({ m_drag_pos, 0 }, 1.f);
|
||||
@@ -359,7 +359,7 @@ void CanvasModeLine::on_Draw(const glm::mat4& ortho, const glm::mat4& proj, cons
|
||||
ShaderManager::u_float(kShaderUniform::Alpha, brush->m_tip_flow * brush->m_tip_opacity);
|
||||
float tip_scale_fix = 1.f / glm::tan(glm::radians(Canvas::I->m_cam_fov * 0.5f));
|
||||
float tip_angle = brush->m_tip_angle * (float)(M_PI * 2.0);
|
||||
glm::vec2 tip_scale = App::I.zoom * brush->m_tip_scale *
|
||||
glm::vec2 tip_scale = App::I->zoom * brush->m_tip_scale *
|
||||
glm::vec2(brush->m_tip_size * tip_scale_fix) *
|
||||
glm::vec2(brush->m_tip_flipx ? -1 : 1, brush->m_tip_flipy ? -1.f : 1.f) *
|
||||
glm::vec2((brush->m_tip_aspect <= 0.5 ? brush->m_tip_aspect * 2.f : 1.f),
|
||||
@@ -653,7 +653,7 @@ void CanvasModeMaskFree::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
|
||||
m_points2d.push_back(loc);
|
||||
m_points.push_back(vert);
|
||||
m_points.push_back(vert);
|
||||
if (!(App::I.keys[(int)kKey::KeyShift] || App::I.keys[(int)kKey::KeyCtrl]))
|
||||
if (!(App::I->keys[(int)kKey::KeyShift] || App::I->keys[(int)kKey::KeyCtrl]))
|
||||
Canvas::I->m_smask.clear({0, 0, 0, 0});
|
||||
Canvas::I->m_smask_active = true;
|
||||
Canvas::I->m_smask_mode = 1;
|
||||
@@ -674,7 +674,7 @@ void CanvasModeMaskFree::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
|
||||
ShaderManager::use(kShader::Color);
|
||||
ShaderManager::u_mat4(kShaderUniform::MVP, proj * camera);
|
||||
ShaderManager::u_vec4(kShaderUniform::Col,
|
||||
App::I.keys[(int)kKey::KeyCtrl] ? glm::vec4(0, 0, 0, 1) : glm::vec4(1, 1, 1, 1));
|
||||
App::I->keys[(int)kKey::KeyCtrl] ? glm::vec4(0, 0, 0, 1) : glm::vec4(1, 1, 1, 1));
|
||||
m_shape.draw_fill();
|
||||
};
|
||||
// use m_shape to render the mask polygon
|
||||
@@ -1072,7 +1072,7 @@ void CanvasModeTransform::enter(kCanvasMode prev)
|
||||
}
|
||||
|
||||
auto center = zw(Canvas::I->m_box) * 0.5f;
|
||||
glm::vec2 bb_sz = glm::vec2(aspect, 1.f) * 100.f * App::I.zoom;
|
||||
glm::vec2 bb_sz = glm::vec2(aspect, 1.f) * 100.f * App::I->zoom;
|
||||
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;
|
||||
@@ -1207,7 +1207,7 @@ void CanvasModeTransform::enter(kCanvasMode prev)
|
||||
|
||||
auto shape3d = triangulate(m_points_face[plane]);
|
||||
|
||||
App::I.render_task([&]
|
||||
App::I->render_task([&]
|
||||
{
|
||||
m_shape[plane].update_vertices(shape3d.data(), (int)shape3d.size());
|
||||
Canvas::I->m_layers[Canvas::I->m_current_layer_idx]->m_rtt[plane].bindFramebuffer();
|
||||
@@ -1269,7 +1269,7 @@ void CanvasModeTransform::enter(kCanvasMode prev)
|
||||
glm::max(zw(layer->m_dirty_box[i]), bb_max),
|
||||
};
|
||||
|
||||
App::I.render_task([&]
|
||||
App::I->render_task([&]
|
||||
{
|
||||
glViewport(0, 0, layer->w, layer->h);
|
||||
glDisable(GL_DEPTH_TEST);
|
||||
@@ -1367,7 +1367,7 @@ void CanvasModeTransform::leave(kCanvasMode next)
|
||||
glm::max(zw(layer->m_dirty_box[i]), bb_max),
|
||||
};
|
||||
|
||||
App::I.render_task([&]
|
||||
App::I->render_task([&]
|
||||
{
|
||||
layer->m_rtt[i].bindFramebuffer();
|
||||
|
||||
@@ -1451,7 +1451,7 @@ void CanvasModeTransform::on_Draw(const glm::mat4& ortho, const glm::mat4& proj,
|
||||
auto c2d = (xy(c3d) * 0.5f + 0.5f) * zw(Canvas::I->m_box);
|
||||
|
||||
ShaderManager::u_mat4(kShaderUniform::MVP,
|
||||
ortho * glm::translate(glm::vec3(c2d, 0)) * glm::scale(glm::vec3(20.f) * App::I.zoom));
|
||||
ortho * glm::translate(glm::vec3(c2d, 0)) * glm::scale(glm::vec3(20.f) * App::I->zoom));
|
||||
|
||||
// draw inside
|
||||
ShaderManager::u_vec4(kShaderUniform::Col, { 1, 1, 1, i == corner_hl ? 1.f : .1f });
|
||||
@@ -1488,7 +1488,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::I->m_box);
|
||||
float d = glm::distance(corners2d[i], loc);
|
||||
if (d < 20.f * App::I.zoom)
|
||||
if (d < 20.f * App::I->zoom)
|
||||
corner_hl = i;
|
||||
}
|
||||
if (corner_hl != -1)
|
||||
@@ -1514,7 +1514,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::I->m_box);
|
||||
float d = glm::distance(corners2d[i], loc);
|
||||
if (d < 20.f * App::I.zoom)
|
||||
if (d < 20.f * App::I->zoom)
|
||||
corner_hl = i;
|
||||
}
|
||||
if (m_dragging)
|
||||
@@ -1683,7 +1683,7 @@ void CanvasModeFloodFill::on_Draw(const glm::mat4& ortho, const glm::mat4& proj,
|
||||
|
||||
void CanvasModeFloodFill::enter(kCanvasMode prev)
|
||||
{
|
||||
auto tools = App::I.layout[App::I.main_id]->find("tools-container");
|
||||
auto tools = App::I->layout[App::I->main_id]->find("tools-container");
|
||||
m_tool = tools->add_child<NodeToolBucket>();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user