MeVisLabToolboxReference
|
00001 // **InsertLicense** code author="Felix Ritter" version="1.0" 00002 00006 00007 #ifndef __macQuickTimeMovie_H 00008 #define __macQuickTimeMovie_H 00009 #if defined(__APPLE__) 00010 00011 #include <CoreServices/CoreServices.h> 00012 #include <string> 00013 #include <list> 00014 #include <utility> 00015 00016 namespace macx { 00017 00018 // Forward declaration 00019 class QuickTimeMoviePrivate; 00020 00022 class QTComponentDesc : public std::pair<UInt32, UInt32> 00023 { 00024 public: 00025 00027 QTComponentDesc() : std::pair<UInt32, UInt32> (0,0) {} 00029 QTComponentDesc(UInt32 subtype, UInt32 manufacturer) : std::pair<UInt32, UInt32> (subtype, manufacturer) {} 00031 QTComponentDesc(const QTComponentDesc &comp) : std::pair<UInt32, UInt32> (comp.first,comp.second) {} 00033 QTComponentDesc &operator =(const QTComponentDesc &comp) { 00034 first = comp.first; second = comp.second; return *this; 00035 } 00037 QTComponentDesc(const std::string &str); 00039 operator const std::string() const; 00040 }; 00041 00043 typedef QTComponentDesc QTMovieEncoderComponentDesc; 00045 typedef QTComponentDesc QTImageEncoderComponentDesc; 00046 00048 class QuickTimeMovie 00049 { 00050 public: 00051 00053 QuickTimeMovie(); 00055 ~QuickTimeMovie(); 00056 00058 bool create(); 00060 bool canAddImages(); 00062 bool addImageFile(const std::string &filename, long durationInMilliSecs, const QTImageEncoderComponentDesc &component = QTImageEncoderComponentDesc(0,0)); 00064 bool addMLImage(void * /* ml::PagedImg * */ pagedImg, long durationInMilliSecs, const QTImageEncoderComponentDesc &component = QTImageEncoderComponentDesc(0,0)); 00066 bool save(const std::string &filename); 00068 bool saveWithDialog(const std::string &filename, const QTMovieEncoderComponentDesc &component = QTMovieEncoderComponentDesc(0,0)); 00069 00071 static std::list<QTMovieEncoderComponentDesc> usefulAvailableMovieEncoderComponents(); 00073 static std::list<QTImageEncoderComponentDesc> usefulAvailableImageEncoderComponents(); 00074 00076 static std::list<QTMovieEncoderComponentDesc> availableMovieEncoderComponents(); 00078 static std::list<QTImageEncoderComponentDesc> availableImageEncoderComponents(); 00079 00081 static const std::list<QTMovieEncoderComponentDesc> &usefulMovieEncoderComponents(); 00083 static const std::list<QTImageEncoderComponentDesc> &usefulImageEncoderComponents(); 00084 00086 static std::string movieEncoderComponentName(const QTMovieEncoderComponentDesc &component); 00088 static std::string imageEncoderComponentName(const QTImageEncoderComponentDesc &component); 00089 00090 private: 00091 00092 QuickTimeMoviePrivate *_priv; 00093 }; 00094 00095 } 00096 00097 #endif // __APPLE__ 00098 #endif // __macQuickTimeMovie_H