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
+