X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fmaskauto.h;h=a1338f43313a8005eebe39f10044426016720e6c;hp=31a11b92bccb3b2ee32c6085ce97dce539aef96c;hb=aeec663c0a88a7ee81a820e758264050a7c4b37e;hpb=7ead9f7382846e81c2f8efb25780014e5f8834c3 diff --git a/cinelerra-5.1/cinelerra/maskauto.h b/cinelerra-5.1/cinelerra/maskauto.h index 31a11b92..a1338f43 100644 --- a/cinelerra-5.1/cinelerra/maskauto.h +++ b/cinelerra-5.1/cinelerra/maskauto.h @@ -44,7 +44,44 @@ public: float control_x2, control_y2; }; +class MaskCoord { public: double x, y, z; }; + +class MaskEdge : public ArrayList +{ +public: + MaskCoord &append(double x, double y, double z=0) { + MaskCoord &c = ArrayList::append(); + c.x = x; c.y = y; c.z = z; + return c; + } + void load(MaskPoints &points, float ofs); +}; + +class MaskEdges : public ArrayList { +public: + MaskEdges() {} + ~MaskEdges() { remove_all_objects(); } +}; + +class MaskPoints : public ArrayList +{ +public: + void clear() { remove_all_objects(); } + MaskPoints() {} + ~MaskPoints() { clear(); } +}; + +class MaskPointSets : public ArrayList +{ +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 { @@ -54,15 +91,15 @@ public: 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(); + void dump(FILE *fp); char name[BCSTRLEN]; - float fader; // 0 - 100 - float feather; // 0 - 100 - ArrayList points; + float fader; + float feather; + MaskPoints points; MaskAuto *keyframe; }; @@ -74,6 +111,7 @@ public: int operator==(Auto &that); int operator==(MaskAuto &that); + bool is_maskauto() { return true; } int identical(MaskAuto *src); void load(FileXML *file); void copy(int64_t start, int64_t end, FileXML *file, int default_auto); @@ -82,42 +120,28 @@ public: void copy_from(MaskAuto *src); // Copy data but not position void copy_data(MaskAuto *src); - void get_points(ArrayList *points, + void get_points(MaskPoints *points, int submask); - void set_points(ArrayList *points, + void set_points(MaskPoints *points, int submask); // Copy parameters to this which differ between ref & src void update_parameter(MaskAuto *ref, MaskAuto *src); - void dump(); + void dump(FILE *fp); // Retrieve submask with clamping SubMask* get_submask(int number); // Translates all submasks void translate_submasks(float translate_x, float translate_y); // scale all submasks void scale_submasks(int orig_scale, int new_scale); - + int has_active_mask(); ArrayList masks; -// These are constant for the entire track int apply_before_plugins; int disable_opengl_masking; }; -class MaskCoord { public: double x, y, z; }; - -class MaskEdge : public ArrayList -{ -public: - MaskCoord &append() { return ArrayList::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 { -public: - MaskEdges() {} - ~MaskEdges() { remove_all_objects(); } -}; - -class MaskPointSet : public ArrayList -{ -public: - void clear() { remove_all_objects(); } - MaskPointSet() {} - ~MaskPointSet() { clear(); } -}; -class MaskPointSets : public ArrayList -{ -public: - void clear() { remove_all_objects(); } - MaskPointSets() {} - ~MaskPointSets() { clear(); } -}; - #endif