add boundary patch experiment
git-svn-id: http://skia.googlecode.com/svn/trunk@407 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/experimental/SkBoundaryPatch.h b/experimental/SkBoundaryPatch.h
new file mode 100644
index 0000000..264ee29
--- /dev/null
+++ b/experimental/SkBoundaryPatch.h
@@ -0,0 +1,52 @@
+#ifndef SkBoundaryPatch_DEFINED
+#define SkBoundaryPatch_DEFINED
+
+#include "SkPoint.h"
+#include "SkRefCnt.h"
+
+class SkBoundaryCurve : public SkRefCnt {
+public:
+ virtual SkPoint evaluate(SkScalar unitInterval) = 0;
+};
+
+class SkBoundaryPatch {
+public:
+ SkBoundaryPatch();
+ ~SkBoundaryPatch();
+
+ enum Edge {
+ kLeft,
+ kTop,
+ kRight,
+ kBottom
+ };
+
+ SkBoundaryCurve* getCurve(Edge e) const { return fCurve[e]; }
+ SkBoundaryCurve* setCurve(Edge e, SkBoundaryCurve*);
+
+ SkPoint evaluate(SkScalar unitU, SkScalar unitV);
+
+private:
+ SkBoundaryCurve* fCurve[4];
+};
+
+////////////////////////////////////////////////////////////////////////
+
+class SkLineBoundaryCurve : public SkBoundaryCurve {
+public:
+ SkPoint fPts[2];
+
+ // override
+ virtual SkPoint evaluate(SkScalar);
+};
+
+class SkCubicBoundaryCurve : public SkBoundaryCurve {
+public:
+ SkPoint fPts[4];
+
+ // override
+ virtual SkPoint evaluate(SkScalar);
+};
+
+#endif
+