blob: 264ee2961dc0554d564051a3d344309fb44aa698 [file] [log] [blame]
reed@android.com4408cca2009-10-27 02:24:03 +00001#ifndef SkBoundaryPatch_DEFINED
2#define SkBoundaryPatch_DEFINED
3
4#include "SkPoint.h"
5#include "SkRefCnt.h"
6
7class SkBoundaryCurve : public SkRefCnt {
8public:
9 virtual SkPoint evaluate(SkScalar unitInterval) = 0;
10};
11
12class SkBoundaryPatch {
13public:
14 SkBoundaryPatch();
15 ~SkBoundaryPatch();
16
17 enum Edge {
18 kLeft,
19 kTop,
20 kRight,
21 kBottom
22 };
23
24 SkBoundaryCurve* getCurve(Edge e) const { return fCurve[e]; }
25 SkBoundaryCurve* setCurve(Edge e, SkBoundaryCurve*);
26
27 SkPoint evaluate(SkScalar unitU, SkScalar unitV);
28
29private:
30 SkBoundaryCurve* fCurve[4];
31};
32
33////////////////////////////////////////////////////////////////////////
34
35class SkLineBoundaryCurve : public SkBoundaryCurve {
36public:
37 SkPoint fPts[2];
38
39 // override
40 virtual SkPoint evaluate(SkScalar);
41};
42
43class SkCubicBoundaryCurve : public SkBoundaryCurve {
44public:
45 SkPoint fPts[4];
46
47 // override
48 virtual SkPoint evaluate(SkScalar);
49};
50
51#endif
52