9 #ifndef MsiChart_BezierCurve_h 10 #define MsiChart_BezierCurve_h 42 bool iIsVertical,
bool iIsXAlwaysIndependent =
false);
100 void MoveToStart(CGPath* ipCGPath,
bool iTuning =
false)
const;
109 void CurveToEnd(CGPath* ipCGPath,
bool iTuning =
false)
const;
118 void LineToStart(CGPath* ipCGPath,
bool iTuning =
false)
const;
138 double Evaluate(
double iIndependentValue)
const;
254 void hSolveQuadraticEquation(
double iA,
double iB,
double iC, std::vector<double>& orPositiveRoots)
const;
261 void hSolveCubicEquation(
double iA,
double iB,
double iC,
double iD, std::vector<double>& orPositiveRoots)
const;
268 double hEvaluate(
double iS)
const;
275 double hEvaluateDerivative(
double iS)
const;
282 void hGetTangentPositions(
double iSlope, std::vector<double>& orPositions)
const;
291 void hSplitAtPositions(std::vector<double>& iorPositions, std::vector<BezierCurve::Ptr>& orSplitCurves);
298 void hGetIntersections(
const BezierCurve* ipBezierCurve, std::vector<double>& orIntersections)
const;
313 void hMakeXAscending();
320 float hGetTaoFromX(
float iValueX)
const;
334 void hGetXRoots(std::vector<double>& orXRoots)
const;
342 bool hHasIntersection(
const FPoint2D& irStart,
const FPoint2D& irEnd)
const;
349 double hCubicRoot(
double iValue)
const;
355 bool hHaveSameY()
const;
384 inline float BezierCurve::hGetTaoFromX(
float iValueX)
const 399 inline bool BezierCurve::hHaveSameY()
const float GetEndIndependent() const
Definition: BezierCurve.h:394
void SplitAtIntersections(BezierCurve::Ptr iBezierCurvePtr, std::vector< BezierCurve::Ptr > &orSplitCurves)
Point< float > FPoint2D
Definition: Point2D.h:403
void GetMinMax(Int32 &orMinY, Int32 &orMaxY) const
double Evaluate2ndDerivative(double iIndependentValue) const
double EvaluateDerivative(double iIndependentValue) const
FPoint2D GetEndPoint() const
Definition: BezierCurve.h:365
BezierCurve::Ptr CloneReverseShift(const Point2D &irOffset) const
void MoveToStart(CGPath *ipCGPath, bool iTuning=false) const
T y
Y-coordinate of current point.
Definition: Point2D.h:175
bool IsBefore(const Point2D &irOffset, BezierCurve::Ptr iBezierCurvePtr) const
void LineToStart(CGPath *ipCGPath, bool iTuning=false) const
struct _cairo cairo_t
Definition: BezierCurve.h:16
void CurveToEnd(CGPath *ipCGPath, bool iTuning=false) const
#define Int32
Definition: BasicTypes.h:20
float GetStartIndependent() const
Definition: BezierCurve.h:389
T x
X-coordinate of current point.
Definition: Point2D.h:174
BezierCurve(const FPoint2D &irP0, float iP1, float iP2, const FPoint2D &irP3, bool iIsVertical, bool iIsXAlwaysIndependent=false)
void GetApproximatePolyline(std::vector< Point2D > &orPolyline) const
double Evaluate(double iIndependentValue) const
FPoint2D GetStartPoint() const
Definition: BezierCurve.h:360
Definition: SmartPtr.h:38
BezierCurve::Ptr Clone() const
FPoint2D mP2
Definition: BezierCurve.h:239
Definition: ChartContext.h:542
float GetMaxX() const
Definition: BezierCurve.h:380
FPoint2D mP3
Definition: BezierCurve.h:240
double Evaluate3rdDerivative() const
void SplitAtTangentPoints(const Point2D &irOffset, std::vector< BezierCurve::Ptr > &orSplitCurves)
Definition: BezierCurve.h:29
FPoint2D mP1
Definition: BezierCurve.h:238
float GetMinX() const
Definition: BezierCurve.h:375
FPoint2D mP0
Definition: BezierCurve.h:237
MSynch::SmartPtr< BezierCurve > Ptr
Definition: BezierCurve.h:32
bool IsVertical() const
Definition: BezierCurve.h:370
virtual void GetApproximatePolygon(Int32 iLineWidth, std::vector< Point2D > &orPolygon) const