00001 #ifndef LABEL_H
00002 #define LABEL_H
00003
00004 #include <stdint.h>
00005
00006 #include "edl.inc"
00007 #include "guicast.h"
00008 #include "filexml.inc"
00009 #include "labels.inc"
00010 #include "mwindow.inc"
00011 #include "recordlabel.inc"
00012 #include "stringfile.inc"
00013 #include "timebar.inc"
00014
00015 #define LABELSIZE 15
00016
00017 class LabelToggle : public BC_Label
00018 {
00019 public:
00020 LabelToggle(MWindow *mwindow, Label *label, int x, int y, long position);
00021 ~LabelToggle();
00022
00023 int handle_event();
00024 MWindow *mwindow;
00025 Label *label;
00026 };
00027
00028 class Label : public ListItem<Label>
00029 {
00030 public:
00031 Label(EDL *edl, Labels *labels, double position, char *textstr);
00032 Label();
00033 ~Label();
00034
00035
00036 EDL *edl;
00037 Labels *labels;
00038 char textstr[BCTEXTLEN];
00039
00040 double position;
00041 };
00042
00043 class Labels : public List<Label>
00044 {
00045 public:
00046 Labels(EDL *edl, char *xml_tag);
00047 virtual ~Labels();
00048
00049 void dump();
00050
00051 Labels& operator=(Labels &that);
00052 void copy_from(Labels *labels);
00053 int toggle_label(double start, double end);
00054 int delete_all();
00055 int save(FileXML *xml);
00056 int load(FileXML *xml, uint32_t load_flags);
00057 void insert_labels(Labels *labels,
00058 double start,
00059 double length,
00060 int paste_silence = 1);
00061
00062 int modify_handles(double oldposition,
00063 double newposition,
00064 int currentend,
00065 int handle_mode,
00066 int edit_labels);
00067 int copy(double start, double end, FileXML *xml);
00068 int copy_length(long start, long end);
00069 int insert(double start, double length);
00070 int paste(long start, long end, long total_length, FileXML *xml);
00071 int paste_output(long startproject, long endproject, long startsource, long endsource, RecordLabels *labels);
00072
00073
00074 int clear(double start, double end, int follow = 1);
00075 int paste_silence(double start, double end);
00076 int optimize();
00077
00078 Label* prev_label(double position);
00079 Label* next_label(double position);
00080
00081 Label* label_of(double position);
00082 MWindow *mwindow;
00083 TimeBar *timebar;
00084 EDL *edl;
00085 char *xml_tag;
00086 };
00087
00088 #endif