#include #include #include #include "Point.h" using namespace std; #define NUM_SLICES 20 typedef enum { CUBIC_BSPLINE, FOUR_POINT } CurveType; class Stroke { private: vector control; vector * limit; vector * temp; bool computed; int numLevels; static GLUquadricObj * qobj; public: float z; float radius; bool useTexture; float ufreq; float vfreq; float ustart; float vstart; CurveType curveType; Stroke(); ~Stroke(); void add(float x, float y); void clear(); static void drawLines(vector * curve); void forceRecompute(); void discPoint(float x,float y,float brushRadius); void drawCap(const Point & p0, float dx, float dy,float texU,float texV); void drawThickCurve(vector * curve, float radius,bool cap=true); void drawControl(); void drawLineCurve(); void render(); void subdivideCubicBSpline(vector * inputCurve, vector * outputCurve); void subdivideFourPoint(vector * inputCurve, vector * outputCurve); void subdivide(vector * inputCurve, vector * outputCurve); void computeLimitCurve(); };