X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Fsrc%2Fsynfig%2Fimporter.h;h=7244f2c969c23f1a5ad6cdcedaf8f31f4b78495f;hb=d43ed398fd84b93b96eb91d91dafdf65c80537e6;hp=4391c4eea9f79a415ac31f11a0e997f6636f850c;hpb=a095981e18cc37a8ecc7cd237cc22b9c10329264;p=synfig.git diff --git a/synfig-core/src/synfig/importer.h b/synfig-core/src/synfig/importer.h index 4391c4e..7244f2c 100644 --- a/synfig-core/src/synfig/importer.h +++ b/synfig-core/src/synfig/importer.h @@ -1,7 +1,6 @@ -#include /* === S Y N F I G ========================================================= */ /*! \file importer.h -** \brief writeme +** \brief It is the base class for all the importers. ** ** $Id$ ** @@ -28,34 +27,36 @@ /* === H E A D E R S ======================================================= */ +#include #include -//#include #include #include "string.h" -//#include "surface.h" -//#include "general.h" -//#include "vector.h" #include "time.h" #include "gamma.h" +#include "renddesc.h" /* === M A C R O S ========================================================= */ -//! \writeme -#define SYNFIG_IMPORTER_MODULE_EXT public: static const char name__[], version__[], ext__[],cvs_id__[]; static Importer *create(const char *filename); +//! Defines various variables and the create method, common for all importers. +//! To be used in the private part of the importer class definition. +#define SYNFIG_IMPORTER_MODULE_EXT \ + public: static const char name__[], version__[], ext__[],cvs_id__[]; \ + static Importer *create(const char *filename); -//! Sets the name of the importer +//! Sets the name of the importer. #define SYNFIG_IMPORTER_SET_NAME(class,x) const char class::name__[]=x -//! \writeme +//! Sets the primary file extension of the importer. #define SYNFIG_IMPORTER_SET_EXT(class,x) const char class::ext__[]=x -//! Sets the version of the importer +//! Sets the version of the importer. #define SYNFIG_IMPORTER_SET_VERSION(class,x) const char class::version__[]=x -//! Sets the CVS ID of the importer +//! Sets the CVS ID of the importer. #define SYNFIG_IMPORTER_SET_CVS_ID(class,x) const char class::cvs_id__[]=x -//! \writeme +//! Defines de implementation of the create method for the importer +//! \param filename The file name to be imported by the importer. #define SYNFIG_IMPORTER_INIT(class) synfig::Importer* class::create(const char *filename) { return new class(filename); } /* === T Y P E D E F S ===================================================== */ @@ -68,19 +69,33 @@ class Surface; class ProgressCallback; /*! \class Importer -** \brief Used for importing bitmaps of various formats, including animations -** \todo Write more detailed description +** \brief Used for importing bitmaps of various formats, including animations. +* +* It is the base class for all the importers. It defines the has a static Book +* pointer class that is a map for the importers factory creators and the strings +* of the extension that the importer can understand. It allows to create the a +* pointer to a particular importer just by using the extension of the name of file +* to import. Also it creates a virtual member get_frame that must be declared in +* the inherited classes. +* \see module.h +** \ */ class Importer : public etl::shared_object { public: + //! Type that represents a pointer to a Importer's constructor. + //! As a pointer to the constructor, it represents a "factory" of importers. typedef Importer* (*Factory)(const char *filename); typedef std::map Book; static Book* book_; static Book& book(); + //! Initializes the Import module by creating a book of importers names + //! and its creators and the list of open importers static bool subsys_init(); + //! Stops the Import module by deleting the book and the list of open + //! importers static bool subsys_stop(); typedef etl::handle Handle; @@ -88,6 +103,8 @@ public: typedef etl::handle ConstHandle; private: + //! Gamma of the importer. + //! \todo Do not hardcode the gamma to 2.2 Gamma gamma_; protected: @@ -108,13 +125,16 @@ public: ** \return \c true on success, \c false on error ** \see ProgressCallback, Surface */ - virtual bool get_frame(Surface &surface,Time time, ProgressCallback *callback=NULL)=0; - virtual bool get_frame(Surface &surface,Time time, + virtual bool get_frame(Surface &surface, const RendDesc &renddesc, Time time, ProgressCallback *callback=NULL)=0; + virtual bool get_frame(Surface &surface, const RendDesc &renddesc,Time time, bool &trimmed __attribute__ ((unused)), - unsigned int &width __attribute__ ((unused)), unsigned int &height __attribute__ ((unused)), - unsigned int &top __attribute__ ((unused)), unsigned int &left __attribute__ ((unused)), - ProgressCallback *callback=NULL) { - return get_frame(surface,time,callback); + unsigned int &width __attribute__ ((unused)), + unsigned int &height __attribute__ ((unused)), + unsigned int &top __attribute__ ((unused)), + unsigned int &left __attribute__ ((unused)), + ProgressCallback *callback=NULL) + { + return get_frame(surface,renddesc,time,callback); } //! Returns \c true if the importer pays attention to the \a time parameter of get_frame()