tomwalters@116: // Copyright 2006-2010, Willem van Engen, Thomas Walters tomwalters@116: // tomwalters@116: // AIM-C: A C++ implementation of the Auditory Image Model tomwalters@116: // http://www.acousticscale.org/AIMC tomwalters@116: // tomwalters@116: // Licensed under the Apache License, Version 2.0 (the "License"); tomwalters@116: // you may not use this file except in compliance with the License. tomwalters@116: // You may obtain a copy of the License at tomwalters@116: // tomwalters@116: // http://www.apache.org/licenses/LICENSE-2.0 tomwalters@116: // tomwalters@116: // Unless required by applicable law or agreed to in writing, software tomwalters@116: // distributed under the License is distributed on an "AS IS" BASIS, tomwalters@116: // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. tomwalters@116: // See the License for the specific language governing permissions and tomwalters@116: // limitations under the License. tomwalters@116: tomwalters@116: /*! tomwalters@116: * \file tomwalters@116: * \brief Output device for output to a movie tomwalters@116: * tomwalters@116: * \author Willem van Engen tomwalters@116: * \date created 2006/10/16 tomwalters@116: * \version \$Id: $ tomwalters@116: */ tomwalters@116: tomwalters@116: #ifndef __GRAPHICS_OUTPUT_DEVICE_MOVIE_H__ tomwalters@116: #define __GRAPHICS_OUTPUT_DEVICE_MOVIE_H__ tomwalters@116: tomwalters@237: #include tomwalters@116: #include "Modules/Output/Graphics/Devices/GraphicsOutputDeviceCairo.h" tomwalters@116: tom@230: namespace aimc { tom@230: tomwalters@116: /*! tomwalters@116: * \class GraphicsOutputDeviceMovie "Output/GraphicsOutputDeviceMovie.h" tomwalters@116: * \brief Output class for output to a movie tomwalters@116: */ tomwalters@116: // GraphicsOutputDevicePlotutils is also possible here tomwalters@116: class GraphicsOutputDeviceMovie : public GraphicsOutputDeviceCairo { tomwalters@116: public: tomwalters@237: GraphicsOutputDeviceMovie(Parameters *parameters); tomwalters@228: virtual ~GraphicsOutputDeviceMovie() { }; tomwalters@116: tomwalters@228: /*! \brief Initializes this output device, prepares plotting tools. tomwalters@228: * \param sSoundFile Sound file for the movie tomwalters@228: * \param sMovieFile Movie filename to produce tomwalters@228: * \return true on success, false on failure. tomwalters@228: * tomwalters@228: * As usual, make sure to call this function before any other. If this tomwalters@228: * Initialize() failed, you shouldn't try the other functions either. tomwalters@228: */ tomwalters@237: bool Initialize(Parameters *global_parameters); tomwalters@116: tomwalters@228: void Start(); tomwalters@228: //! \brief This function now also generates the output movie. tomwalters@228: void Stop(); tomwalters@244: tomwalters@244: void Reset(Parameters* global_parameters); tomwalters@244: tomwalters@116: tomwalters@116: protected: tomwalters@228: /*! \brief Plots a summary of relevant parameters on the output tomwalters@228: * tomwalters@228: * This is intended for use in a movie as the first frame, which has no tomwalters@228: * interesting data anyway, since at least one buffer of data is needed tomwalters@228: * to be able to show someting. tomwalters@228: * tomwalters@228: * The caller must do the gGrab() and gRelease(). tomwalters@228: */ tomwalters@228: void PlotParameterScreen(); tomwalters@116: tomwalters@228: //! \brief Name of the sound file to be merged with the video tomwalters@237: string sound_filename_; tomwalters@228: //! \brief Name of the movie file to produce tomwalters@237: string movie_filename_; tomwalters@116: }; tom@230: } // namespace aimc tomwalters@116: #endif /* __GRAPHICS_OUTPUT_DEVICE_MOVIE_H__ */