00001 #ifndef MASKAUTO_H
00002 #define MASKAUTO_H
00003
00004
00005 #include "arraylist.h"
00006 #include "auto.h"
00007 #include "maskauto.inc"
00008 #include "maskautos.inc"
00009
00010 class MaskPoint
00011 {
00012 public:
00013 MaskPoint();
00014
00015 int operator==(MaskPoint& ptr);
00016 MaskPoint& operator=(MaskPoint& ptr);
00017
00018 float x, y;
00019
00020 float control_x1, control_y1;
00021
00022 float control_x2, control_y2;
00023 };
00024
00025 class SubMask
00026 {
00027 public:
00028 SubMask(MaskAuto *keyframe);
00029 ~SubMask();
00030
00031 int operator==(SubMask& ptr);
00032 void copy_from(SubMask& ptr);
00033 void load(FileXML *file);
00034 void copy(FileXML *file);
00035 void dump();
00036
00037 ArrayList<MaskPoint*> points;
00038 MaskAuto *keyframe;
00039 };
00040
00041 class MaskAuto : public Auto
00042 {
00043 public:
00044 MaskAuto(EDL *edl, MaskAutos *autos);
00045 ~MaskAuto();
00046
00047 int operator==(Auto &that);
00048 int operator==(MaskAuto &that);
00049 int identical(MaskAuto *src);
00050 void load(FileXML *file);
00051 void copy(int64_t start, int64_t end, FileXML *file, int default_auto);
00052 void copy_from(Auto *src);
00053 int interpolate_from(Auto *a1, Auto *a2, int64_t position);
00054 void copy_from(MaskAuto *src);
00055
00056 void dump();
00057
00058 SubMask* get_submask(int number);
00059
00060 void translate_submasks(float translate_x, float translate_y);
00061
00062
00063 ArrayList<SubMask*> masks;
00064
00065 int mode;
00066 float feather;
00067
00068 int value;
00069 };
00070
00071
00072
00073
00074 #endif