Files
panopainter/src/node_stroke_preview.cpp

86 lines
2.2 KiB
C++

#include "pch.h"
#include "log.h"
#include "node_stroke_preview.h"
#include "texture.h"
#include "canvas.h"
#include "app.h"
#include "legacy_canvas_stroke_shader_services.h"
#include "legacy_node_stroke_preview_execution_services.h"
#include "legacy_node_stroke_preview_runtime_services.h"
#include "legacy_node_stroke_preview_sample_services.h"
#include "util.h"
#include <array>
Node* NodeStrokePreview::clone_instantiate() const
{
return new NodeStrokePreview();
}
void NodeStrokePreview::clone_copy(Node* dest) const
{
NodeBorder::clone_copy(dest);
}
void NodeStrokePreview::clone_children(Node* dest) const
{
// stop children cloning
}
void NodeStrokePreview::clone_finalize(Node* dest) const
{
pp::panopainter::initialize_legacy_node_stroke_preview_clone(dest);
}
void NodeStrokePreview::init_controls()
{
// TextureManager::load("data/thumbs/Round-Hard.png");
// Canvas::I->m_current_brush.m_tex_id = const_hash("data/thumbs/Round-Hard.png");
}
void NodeStrokePreview::stroke_draw_mix(const glm::vec2& bb_min, const glm::vec2& bb_sz)
{
const bool mix_ok = pp::panopainter::execute_legacy_node_stroke_preview_mix_pass(
*m_brush,
m_size,
m_rtt_mixer,
bb_min,
bb_sz,
m_sampler_linear,
m_tex_background,
m_tex,
m_tex_dual,
[this] {
m_plane.draw_fill();
});
assert(mix_ok);
}
glm::vec4 NodeStrokePreview::stroke_draw_samples(
std::array<vertex_t, 4>& P,
Texture2D& blend_tex,
bool copy_stroke_destination)
{
return pp::panopainter::execute_legacy_node_stroke_preview_sample_pass(
m_rtt,
P,
m_brush_shape,
blend_tex,
copy_stroke_destination);
}
std::vector<NodeStrokePreview::StrokeFrame> NodeStrokePreview::stroke_draw_compute(const Stroke& stroke, float zoom) const
{
return pp::panopainter::plan_legacy_node_stroke_preview_stroke_frames(
stroke,
zoom,
glm::vec2(m_rtt.getWidth(), m_rtt.getHeight()));
}
void NodeStrokePreview::draw_stroke_immediate()
{
if (m_size.x == 0 || m_size.y == 0)
return;
const bool sequence_ok = pp::panopainter::execute_legacy_node_stroke_preview_immediate_draw(*this);
assert(sequence_ok);
}