Extract draw toolbar and thin NodeCanvas and Win32 shell
This commit is contained in:
@@ -667,11 +667,15 @@ void NodeCanvas::draw()
|
||||
m_canvas->m_current_stroke ? m_canvas->m_current_stroke->m_brush.get() : nullptr);
|
||||
const bool use_blend = blend_gate.shader_blend;
|
||||
const bool copy_blend_destination = use_blend && !blend_gate.reads_destination_color;
|
||||
const auto layer_orientation = glm::eulerAngleYXZ(yaw, pitch, roll);
|
||||
|
||||
const auto& b = m_canvas->m_current_stroke->m_brush;
|
||||
pp::panopainter::execute_legacy_canvas_draw_unmerged_shell(
|
||||
pp::panopainter::execute_legacy_canvas_draw_unmerged_node_canvas_shell(
|
||||
*this,
|
||||
use_blend,
|
||||
m_canvas->m_layers.size(),
|
||||
proj,
|
||||
camera,
|
||||
layer_orientation,
|
||||
[&] {
|
||||
apply_node_canvas_viewport(0, 0, m_cache_rtt.getWidth(), m_cache_rtt.getHeight());
|
||||
m_cache_rtt.bindFramebuffer();
|
||||
@@ -703,33 +707,8 @@ void NodeCanvas::draw()
|
||||
[&] {
|
||||
apply_node_canvas_capability(pp::renderer::gl::depth_test_state(), false);
|
||||
},
|
||||
[&](size_t layer_index) {
|
||||
return pp::app::plan_animation_onion_frame_range(
|
||||
m_canvas->m_layers[layer_index]->frames_count(),
|
||||
m_canvas->m_layers[layer_index]->m_frame_index,
|
||||
App::I->animation->get_onion_size());
|
||||
},
|
||||
[&](size_t layer_index, int plane_index, int first_frame, int last_frame) {
|
||||
bool faces = false;
|
||||
for (int frame = first_frame; frame <= last_frame; ++frame)
|
||||
faces |= m_canvas->m_layers[layer_index]->face(plane_index, frame);
|
||||
|
||||
if (m_canvas->m_show_tmp && m_canvas->m_current_layer_idx == layer_index)
|
||||
return true;
|
||||
|
||||
return m_canvas->m_layers[layer_index]->m_visible &&
|
||||
m_canvas->m_layers[layer_index]->m_opacity != .0f &&
|
||||
faces;
|
||||
},
|
||||
[&](const pp::panopainter::LegacyCanvasDrawLayerVisit& visit, const auto& onion_range) {
|
||||
const auto layer_index = visit.layer_index;
|
||||
const auto plane_index = visit.plane_index;
|
||||
const auto plane_mvp_z = proj * camera *
|
||||
glm::scale(glm::vec3(visit.z + 1)) *
|
||||
glm::eulerAngleYXZ(yaw, pitch, roll) *
|
||||
m_canvas->m_plane_transform[plane_index] *
|
||||
glm::translate(glm::vec3(0, 0, -1));
|
||||
const auto layer_path_execution = make_node_canvas_layer_path_execution(
|
||||
[&](size_t layer_index, int plane_index, const glm::mat4& plane_mvp_z) {
|
||||
return make_node_canvas_layer_path_execution(
|
||||
*this,
|
||||
layer_index,
|
||||
plane_index,
|
||||
@@ -737,17 +716,6 @@ void NodeCanvas::draw()
|
||||
b.get(),
|
||||
copy_blend_destination,
|
||||
m_canvas->m_cam_fov < 20.f);
|
||||
|
||||
pp::panopainter::execute_legacy_canvas_draw_merge_layer_path(
|
||||
m_canvas->m_current_stroke && m_canvas->m_current_mode == kCanvasMode::Erase && m_canvas->m_show_tmp && m_canvas->m_current_layer_idx == layer_index,
|
||||
m_canvas->m_current_stroke && m_canvas->m_show_tmp && m_canvas->m_current_layer_idx == layer_index,
|
||||
use_blend,
|
||||
visit.first_frame,
|
||||
visit.last_frame,
|
||||
[&](int frame) {
|
||||
return pp::app::animation_onion_frame_alpha(onion_range, frame);
|
||||
},
|
||||
layer_path_execution);
|
||||
},
|
||||
[&](const char* message) {
|
||||
LOG("NodeCanvas onion frame range failed: %s", message);
|
||||
|
||||
Reference in New Issue
Block a user