MayaFlux 0.5.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 595 of file PathGeneratorNode.cpp.

596{
597 if (m_draw_window.size() < 4) {
599 "Not enough points in draw window to generate curve segment ({} points)",
600 m_draw_window.size());
601 m_completed_draws.insert(
602 m_completed_draws.end(),
603 m_draw_vertices.begin(),
604 m_draw_vertices.end());
605 m_draw_vertices.clear();
606 m_draw_window.clear();
607 m_vertex_data_dirty = true;
608 return;
609 }
610
611 const size_t per_window = vertices_per_window();
612 const size_t windows = m_draw_window.size() - 3;
613 const size_t base = m_completed_draws.size();
614
615 m_completed_draws.resize(base + windows * per_window);
616
617 for (size_t w = 0; w < windows; ++w) {
618 write_curve_segment(m_draw_window, w, m_completed_draws.data() + base + w * per_window);
619 }
620
621 for (size_t i = windows + 1; i < m_draw_window.size(); ++i) {
623 }
624
625 m_draw_vertices.clear();
626 m_draw_window.clear();
627 m_vertex_data_dirty = true;
628}
#define MF_WARN(comp, ctx,...)
bool m_vertex_data_dirty
Flag: vertex data or layout changed since last GPU upload.
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, MayaFlux::Nodes::GpuSync::GeometryWriterNode::m_vertex_data_dirty, MF_WARN, MayaFlux::Journal::NodeProcessing, MayaFlux::Journal::Nodes, vertices_per_window(), and write_curve_segment().

+ Here is the call graph for this function: