/*
* CINELERRA
* Copyright (C) 2008 Adam Williams <broadcast at earthling dot net>
+ * Copyright (C) 2003-2016 Cinelerra CV contributors
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
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
{
int operator==(SubMask& ptr);
int equivalent(SubMask& ptr);
- void copy_from(SubMask& ptr);
+ void copy_from(SubMask& ptr, int do_name=1);
void load(FileXML *file);
void copy(FileXML *file);
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;
};
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
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; };
}
};
-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