+class MaskCoord { public: double x, y, z; };
+
+class MaskEdge : public ArrayList<MaskCoord>
+{
+public:
+ MaskCoord &append(double x, double y, double z=0) {
+ MaskCoord &c = ArrayList<MaskCoord>::append();
+ c.x = x; c.y = y; c.z = z;
+ return c;
+ }
+ void load(MaskPoints &points, float ofs);
+};
+
+class MaskEdges : public ArrayList<MaskEdge*> {
+public:
+ MaskEdges() {}
+ ~MaskEdges() { remove_all_objects(); }
+};
+
+class MaskPoints : public ArrayList<MaskPoint *>
+{
+public:
+ void clear() { remove_all_objects(); }
+ MaskPoints() {}
+ ~MaskPoints() { clear(); }
+};
+
+class MaskPointSets : public ArrayList<MaskPoints*>
+{
+public:
+ void clear() { remove_all_objects(); }
+ MaskPointSets() {}
+ ~MaskPointSets() { clear(); }
+};
+
+#define FEATHER_MAX 100
+// GL reg limit 1024 incls shader param list
+#define MAX_FEATHER 1000
+