X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fmaskauto.h;h=6af17c3ab34f8e1ddb4a23f21da4513b0b83a097;hb=bd7011a86f60b4ef1abf11e2667373eba3a98c99;hp=52c3401fa5d5c75df7deb192a13a5147482c5806;hpb=853b81c6d430bd41037984ecc95fd304fd98964e;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/cinelerra/maskauto.h b/cinelerra-5.1/cinelerra/maskauto.h index 52c3401f..6af17c3a 100644 --- a/cinelerra-5.1/cinelerra/maskauto.h +++ b/cinelerra-5.1/cinelerra/maskauto.h @@ -2,6 +2,7 @@ /* * CINELERRA * Copyright (C) 2008 Adam Williams + * 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 @@ -44,7 +45,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 +92,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(FILE *fp); char name[BCSTRLEN]; - float fader; // 0 - 100 - float feather; // 0 - 100 - ArrayList points; + float fader; + float feather; + MaskPoints points; MaskAuto *keyframe; }; @@ -83,9 +121,9 @@ 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 @@ -98,25 +136,13 @@ public: 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; 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; }; @@ -131,25 +157,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