MayaFlux 1.0.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ complete()

void MayaFlux::Nodes::GpuSync::PathGeneratorNode::complete ( )

Finish incremental drawing stroke.

Clears the sliding window. Call this when pen lifts or stroke ends. Next draw_to() will start a fresh stroke.

Definition at line 560 of file PathGeneratorNode.cpp.

561{
562 if (m_draw_window.size() < 4) {
564 "Not enough points in draw window to generate curve segment ({} points)",
565 m_draw_window.size());
566 m_completed_draws.insert(
567 m_completed_draws.end(),
568 m_draw_vertices.begin(),
569 m_draw_vertices.end());
570 m_draw_vertices.clear();
571 m_draw_window.clear();
572 m_path_dirty = true;
573 return;
574 }
575
576 const size_t per_window = vertices_per_window();
577 const size_t windows = m_draw_window.size() - 3;
578 const size_t base = m_completed_draws.size();
579
580 m_completed_draws.resize(base + windows * per_window);
581
582 for (size_t w = 0; w < windows; ++w) {
583 write_curve_segment(m_draw_window, w, m_completed_draws.data() + base + w * per_window);
584 }
585
586 for (size_t i = windows + 1; i < m_draw_window.size(); ++i) {
588 }
589
590 m_draw_vertices.clear();
591 m_draw_window.clear();
592 m_path_dirty = true;
593}
#define MF_WARN(comp, ctx,...)
size_t vertices_per_window() const
Vertices emitted per four-point window.
void write_curve_segment(const std::vector< LineVertex > &curve_verts, size_t start_idx, LineVertex *dst)
Evaluate one window and write its vertices.
void append_line_segment(const LineVertex &v0, const LineVertex &v1, std::vector< LineVertex > &output)
@ NodeProcessing
Node graph processing (Nodes::NodeGraphManager)
@ Nodes
DSP Generator and Filter Nodes, graph pipeline, node management.

References append_line_segment(), m_completed_draws, m_draw_vertices, m_draw_window, m_path_dirty, MF_WARN, MayaFlux::Journal::NodeProcessing, MayaFlux::Journal::Nodes, vertices_per_window(), and write_curve_segment().

+ Here is the call graph for this function: