MeVisLabToolboxReference
MeVis/Foundation/Sources/OSXSupport/macQuickTimeMovie.h
Go to the documentation of this file.
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