rework proxy scaler, fix crop-gui coord, video_data tweak for proxy_format
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / maskauto.h
index acc035c68b4eb6fdb6e1cf7b88225ebb1ca6d11b..a1338f43313a8005eebe39f10044426016720e6c 100644 (file)
@@ -44,7 +44,44 @@ public:
        float control_x2, control_y2;
 };
 
+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
 
 class SubMask
 {
@@ -60,9 +97,9 @@ public:
        void dump(FILE *fp);
 
        char name[BCSTRLEN];
-       float fader; // -100 - 100
-       float feather; // -100 - 100
-       ArrayList<MaskPoint*> points;
+       float fader;
+       float feather;
+       MaskPoints points;
        MaskAuto *keyframe;
 };
 
@@ -83,9 +120,9 @@ public:
        void copy_from(MaskAuto *src);
 // Copy data but not position
        void copy_data(MaskAuto *src);
-       void get_points(ArrayList<MaskPoint*> *points,
+       void get_points(MaskPoints *points,
                int submask);
-       void set_points(ArrayList<MaskPoint*> *points,
+       void set_points(MaskPoints *points,
                int submask);
 
 // Copy parameters to this which differ between ref & src
@@ -105,19 +142,6 @@ public:
        int disable_opengl_masking;
 };
 
-class MaskCoord { public: double x, y, z; };
-
-class MaskEdge : public ArrayList<MaskCoord>
-{
-public:
-       MaskCoord &append() { return ArrayList<MaskCoord>::append(); }
-       MaskCoord &append(double x, double y, double z=0) {
-               MaskCoord &c = append();
-               c.x = x;  c.y = y;  c.z = z;
-               return c;
-       }
-};
-
 // shader buffer unsized array vec only seems to work for dvec (05/2019)
 class MaskSpot { public: double x, y; };
 
@@ -132,25 +156,4 @@ public:
        }
 };
 
-class MaskEdges : public ArrayList<MaskEdge*> {
-public:
-       MaskEdges() {}
-       ~MaskEdges() { remove_all_objects(); }
-};
-
-class MaskPointSet : public ArrayList<MaskPoint*>
-{
-public:
-       void clear() { remove_all_objects(); }
-       MaskPointSet() {}
-       ~MaskPointSet() { clear(); }
-};
-class MaskPointSets : public ArrayList<MaskPointSet*>
-{
-public:
-       void clear() { remove_all_objects(); }
-       MaskPointSets() {}
-       ~MaskPointSets() { clear(); }
-};
-
 #endif