
// simple_path.hpp - interface for drawing simple path for "hairline" stroking algorithm testbed

#ifndef __simple_path_hpp__
#define __simple_path_hpp__

#include <vector>

#include "polar/cpu/CPUStrokeTessellator.hpp"
#include "Paint.hpp"
#include "gl_framebuffer.hpp"
#include "stats.hpp"

using std::vector;

extern bool curveTypeSelect;
extern int curveType;
extern int cpu_path_count;

extern void patchControlPoints(float3 link_control_points[6], const StrokeLink& link);
extern bool prepStroker(CPUStrokeTessellator &stroker, const Paint& paint, const float3 link_control_points[], const GLuint ndx[6], unsigned int primitive_id);

extern void drawSimplePath(LinkRenderStats& stats);

extern void updateSpline();
extern void updatePoint(int ndx, const float2 p);
extern void toggleAnnotations();
extern void toggleNormalExtensions();

extern vector<float3> inputPoints;

extern void configurePerespectivePolarStroking(CPUStrokeTessellator &stroker, StrokingResults &stroke);

extern int current_link;

extern void advanceCurrentLink();
extern void reverseCurrentLink();

extern void invalidateSimplePathShaders();  // for 'T' to use

extern void dumpInputPoints();

#endif // __simple_path_hpp__
