00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __OP_DopeBuffer_h__
00020 #define __OP_DopeBuffer_h__
00021
00022 #include "OP_API.h"
00023 #include <UT/UT_String.h>
00024 #include "OP_Channels.h"
00025 #include "OP_MultiChannel.h"
00026
00027
00028 template<typename T> class UT_RefArray;
00029
00030
00031 class OP_API OP_DopeBuffer
00032 {
00033 public:
00034 OP_DopeBuffer();
00035 virtual ~OP_DopeBuffer();
00036
00037 void clearAndDestroy();
00038
00039
00040
00041
00042
00043
00044
00045
00046 void copyKeys(const OP_MultiChannelRefArray &rows,
00047 int x1, int y1, int x2, int y2, int forceKeys = 0,
00048 const UT_RefArray<UT_IntArray> *row_frame_masks =NULL,
00049 int *row_offset = NULL);
00050 void cutKeys(const OP_MultiChannelRefArray &rows,
00051 int x1, int y1, int x2, int y2, int forceKeys = 0);
00052 static void deleteKeys(const OP_MultiChannelRefArray &rows,
00053 int x1, int y1, int x2, int y2);
00054 void replaceKeys(const OP_MultiChannelRefArray &rows,
00055 int x1, int y1, int x2, int y2);
00056
00057 void pasteKeys(const OP_MultiChannelRefArray &rows,
00058 int x1, int y1 ) const;
00059
00060 void print();
00061 int save();
00062 int load();
00063
00064 const OP_MultiChannelRefArray & getRows() const { return myRows; }
00065
00066 void getChannelList( CH_ChannelList &channels ) const;
00067
00068 void getDimensions(int &x1, int &x2, int &numRows);
00069 void getMaxDimensions(int &x1, int &x2, int &numRows);
00070 void duplicate(OP_DopeBuffer ©);
00071
00072
00073 void setStartEnd(int start, int end)
00074 { myStartFrame = start, myEndFrame = end; }
00075 int getStart() const { return myStartFrame; }
00076 int getEnd() const { return myEndFrame; }
00077
00078 CH_Channel * dupChannel(const CH_Channel &from);
00079
00080 void setTargetChannel( const CH_Channel *target ) const;
00081
00082 private:
00083
00084 int save(const char *filename);
00085 int load(const char *filename);
00086
00087 void pasteChannelKeys( CH_Channel *from_chp,
00088 CH_Channel *to_chp, int x1) const;
00089
00090 OP_DopeBuffer( const OP_DopeBuffer © );
00091 OP_DopeBuffer &operator=(const OP_DopeBuffer © );
00092
00093 private:
00094 OP_MultiChannelRefArray myRows;
00095
00096 OP_Channels myCollection;
00097 int myStartFrame;
00098 int myEndFrame;
00099 };
00100
00101 #endif