/* === S Y N F I G ========================================================= */
/*! \file target_scanline.h
-** \brief Template Header
+** \brief Template Header for the Target Scanline class
**
** $Id$
**
namespace synfig {
/*! \class Target_Scanline
-** \brief Render-target
-** \todo writeme
+** \brief This is a Target class that implements the render fucntion
+* for a line by line render procedure
*/
class Target_Scanline : public Target
{
+ //! Number of threads to use
int threads_;
+ //! Current frame being rendered
int curr_frame_;
public:
typedef etl::handle<Target_Scanline> Handle;
typedef etl::loose_handle<Target_Scanline> LooseHandle;
typedef etl::handle<const Target_Scanline> ConstHandle;
-
+ //! Default constructor (threads = 2 current frame = 0)
Target_Scanline();
//! Renders the canvas to the target
** \see end_frame(), start_scanline()
*/
virtual bool start_frame(ProgressCallback *cb=NULL)=0;
-
+ //! Returns the number of peniding frames to render. If it is zero it
+ //! stops rendering frames.
+ //! \todo Fix the calculation of frames to really render the last frame
+ //! When start frame= 1f and end frame = 1f it just render one frame (at 1f)
+ //! When start frame= 1f and end frame = 2f it just render one frame (at 1f)
+ //! which is a bug.
virtual int next_frame(Time& time);
//! Marks the end of a frame
** \see start_scanline()
*/
virtual bool end_scanline()=0;
-
+ //! Sets the number of threads
void set_threads(int x) { threads_=x; }
-
+ //! Gets the number of threads
int get_threads()const { return threads_; }
-
+ //! Puts the rendered surface onto the target.
bool add_frame(const synfig::Surface *surface);
private:
}; // END of class Target_Scanline