]> git.lyx.org Git - lyx.git/blobdiff - src/graphics/GraphicsLoader.C
* src/LaTeX.C
[lyx.git] / src / graphics / GraphicsLoader.C
index 5da53f9b84f787e3dd576c2c1ebc0cb5c89a67a2..dc128a1b6bd98bec92f6da4623641f70f0ba69b1 100644 (file)
@@ -5,42 +5,46 @@
  *
  * \author Angus Leeming
  *
- * Full author contact details are available in file CREDITS
+ * Full author contact details are available in file CREDITS.
  */
 
 #include <config.h>
 
 #include "GraphicsLoader.h"
 
-#include "GraphicsCache.h"
 #include "GraphicsCacheItem.h"
 #include "GraphicsImage.h"
 #include "GraphicsParams.h"
 #include "LoaderQueue.h"
 
-#include "frontends/LyXView.h"
-
 #include <boost/bind.hpp>
-#include <boost/signals/trackable.hpp>
 
-#include <list>
 
-namespace grfx {
+using std::string;
+
+
+namespace lyx {
 
-struct Loader::Impl : boost::signals::trackable {
+using support::FileName;
+       
+namespace graphics {
+
+class Loader::Impl : public boost::signals::trackable {
+public:
        ///
-       Impl(Params const &);
+       Impl();
        ///
        ~Impl();
        ///
-       void resetFile(string const &);
+       void resetFile(FileName const &);
        ///
        void resetParams(Params const &);
        ///
        void createPixmap();
-
        ///
        void startLoading();
+       ///
+       Params const & params() const { return params_; }
 
        /// The loading status of the image.
        ImageStatus status_;
@@ -51,7 +55,7 @@ struct Loader::Impl : boost::signals::trackable {
        /// We modify a local copy of the image once it is loaded.
        Image::ImagePtr image_;
        /// This signal is emitted when the image loading status changes.
-       boost::signal0<void> signal_;
+       boost::signal<void()> signal_;
 
 private:
        ///
@@ -61,34 +65,51 @@ private:
 
        ///
        Params params_;
-
 };
 
 
 Loader::Loader()
-       : pimpl_(new Impl(Params()))
+       : pimpl_(new Impl)
 {}
 
 
-Loader::Loader(string const & file, DisplayType type)
-       : pimpl_(new Impl(Params()))
+Loader::Loader(FileName const & file, DisplayType type)
+       : pimpl_(new Impl)
 {
        reset(file, type);
 }
 
 
-Loader::Loader(string const & file, Params const & params)
-       : pimpl_(new Impl(params))
+Loader::Loader(FileName const & file, Params const & params)
+       : pimpl_(new Impl)
 {
        reset(file, params);
 }
 
 
+Loader::Loader(Loader const & other)
+       : pimpl_(new Impl)
+{
+       Params const & params = other.pimpl_->params();
+       reset(params.filename, params);
+}
+
+
 Loader::~Loader()
 {}
 
 
-void Loader::reset(string const & file, DisplayType type) const
+Loader & Loader::operator=(Loader const & other)
+{
+       if (this != &other) {
+               Params const & params = other.pimpl_->params();
+               reset(params.filename, params);
+       }
+       return *this;
+}
+
+
+void Loader::reset(FileName const & file, DisplayType type) const
 {
        Params params;
        params.display = type;
@@ -99,7 +120,7 @@ void Loader::reset(string const & file, DisplayType type) const
 }
 
 
-void Loader::reset(string const & file, Params const & params) const
+void Loader::reset(FileName const & file, Params const & params) const
 {
        pimpl_->resetParams(params);
        pimpl_->resetFile(file);
@@ -149,9 +170,9 @@ unsigned long Loader::checksum() const
 }
 
 
-string const & Loader::filename() const
+FileName const & Loader::filename() const
 {
-       static string const empty;
+       static FileName const empty;
        return pimpl_->cached_item_.get() ?
                pimpl_->cached_item_->filename() : empty;
 }
@@ -175,22 +196,22 @@ Image const * Loader::image() const
 }
 
 
-Loader::Impl::Impl(Params const & params)
-       : status_(WaitingToLoad), params_(params)
+Loader::Impl::Impl()
+       : status_(WaitingToLoad)
 {
 }
 
 
 Loader::Impl::~Impl()
 {
-       resetFile(string());
+       resetFile(FileName());
 }
 
 
-void Loader::Impl::resetFile(string const & file)
+void Loader::Impl::resetFile(FileName const & file)
 {
-       string const old_file = cached_item_.get() ?
-               cached_item_->filename() : string();
+       FileName const old_file = cached_item_.get() ?
+               cached_item_->filename() : FileName();
 
        if (file == old_file)
                return;
@@ -268,7 +289,6 @@ void Loader::Impl::createPixmap()
        }
 }
 
-
 void Loader::Impl::startLoading()
 {
        if (status_ != WaitingToLoad)
@@ -278,4 +298,5 @@ void Loader::Impl::startLoading()
 }
 
 
-} // namespace grfx
+} // namespace graphics
+} // namespace lyx