]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetGraphicsParams.cpp
This should be the last of the commits refactoring the InsetLayout code.
[lyx.git] / src / insets / InsetGraphicsParams.cpp
index b7d97400b8a52ce0e0db95a5c00c41bff9297101..c7419b39eaeae8f77d04c0c342c8feadab7e013c 100644 (file)
 
 #include "InsetGraphicsParams.h"
 
-#include "debug.h"
 #include "LyX.h" // for use_gui
 #include "Lexer.h"
 #include "LyXRC.h"
+#include "Buffer.h"
 
 #include "graphics/GraphicsParams.h"
+#include "graphics/GraphicsTypes.h"
 
 #include "support/convert.h"
+#include "support/debug.h"
 #include "support/filetools.h"
 #include "support/lyxlib.h"
 #include "support/lstrings.h"
 #include "support/Translator.h"
 
+#include <ostream>
 
-namespace lyx {
-
-using support::float_equal;
-using support::readBB_from_PSFile;
-using support::token;
+using namespace std;
+using namespace lyx::support;
 
-using std::string;
-using std::ostream;
+namespace lyx {
 
 
 InsetGraphicsParams::InsetGraphicsParams()
@@ -52,14 +51,12 @@ InsetGraphicsParams::InsetGraphicsParams(InsetGraphicsParams const & igp)
 }
 
 
-InsetGraphicsParams &
-InsetGraphicsParams::operator=(InsetGraphicsParams const & params)
+void InsetGraphicsParams::operator=(InsetGraphicsParams const & params)
 {
        // Are we assigning the object into itself?
        if (this == &params)
-               return *this;
+               return;
        copy(params);
-       return *this;
 }
 
 
@@ -114,7 +111,7 @@ void InsetGraphicsParams::copy(InsetGraphicsParams const & igp)
 bool operator==(InsetGraphicsParams const & left,
                InsetGraphicsParams const & right)
 {
-       if (left.filename == right.filename &&
+       return left.filename == right.filename &&
            left.lyxscale == right.lyxscale &&
            left.display == right.display &&
            left.scale == right.scale &&
@@ -125,7 +122,6 @@ bool operator==(InsetGraphicsParams const & left,
            left.noUnzip == right.noUnzip &&
            left.scaleBeforeRotation == right.scaleBeforeRotation &&
 
-
            left.bb == right.bb &&
            left.clip == right.clip &&
 
@@ -133,11 +129,7 @@ bool operator==(InsetGraphicsParams const & left,
            left.rotateOrigin == right.rotateOrigin &&
            left.subcaption == right.subcaption &&
            left.subcaptionText == right.subcaptionText &&
-           left.special == right.special
-          )
-               return true;
-
-       return false;
+           left.special == right.special;
 }
 
 
@@ -148,12 +140,12 @@ bool operator!=(InsetGraphicsParams const & left,
 }
 
 
-void InsetGraphicsParams::Write(ostream & os, string const & bufpath) const
+void InsetGraphicsParams::Write(ostream & os, Buffer const & buffer) const
 {
        // Do not write the default values
-
        if (!filename.empty()) {
-               os << "\tfilename " << filename.outputFilename(bufpath) << '\n';
+               os << "\tfilename " << filename.outputFilename(buffer.filePath()) << '\n';
+               os << "\tembed " << (filename.embedded() ? filename.inzipName() : "\"\"") << '\n';
        }
        if (lyxscale != 100)
                os << "\tlyxscale " << lyxscale << '\n';
@@ -202,6 +194,16 @@ bool InsetGraphicsParams::Read(Lexer & lex, string const & token, string const &
        if (token == "filename") {
                lex.eatLine();
                filename.set(lex.getString(), bufpath);
+       } else if (token == "inzipName") {
+               // this option is currently ignored because only files in
+               // or under current document path is embeddable, and their
+               // inzipName is automatically determined.
+               lex.eatLine();
+       } else if (token == "embed") {
+               lex.next();
+               string const name = lex.getString();
+               filename.setInzipName(name);
+               filename.setEmbed(!name.empty());
        } else if (token == "lyxscale") {
                lex.next();
                lyxscale = lex.getInteger();
@@ -273,7 +275,8 @@ bool InsetGraphicsParams::Read(Lexer & lex, string const & token, string const &
 graphics::Params InsetGraphicsParams::as_grfxParams() const
 {
        graphics::Params pars;
-       pars.filename = filename;
+       pars.filename = filename.availableFile();
+       pars.icon = filename.embedded() ? "pin.png" : "";
        pars.scale = lyxscale;
        pars.angle = convert<double>(rotateAngle);
 
@@ -282,16 +285,14 @@ graphics::Params InsetGraphicsParams::as_grfxParams() const
 
                // Get the original Bounding Box from the file
                string const tmp = readBB_from_PSFile(filename);
-               LYXERR(Debug::GRAPHICS) << "BB_from_File: " << tmp << std::endl;
+               LYXERR(Debug::GRAPHICS, "BB_from_File: " << tmp);
                if (!tmp.empty()) {
-#ifdef WITH_WARNINGS
-# warning why not convert to unsigned int? (Lgb)
-#endif
+                       // FIXME: why not convert to unsigned int? (Lgb)
                        unsigned int const bb_orig_xl = convert<int>(token(tmp, ' ', 0));
                        unsigned int const bb_orig_yb = convert<int>(token(tmp, ' ', 1));
 
                        // new pars.bb values must be >= zero
-                       if  (pars.bb.xl > bb_orig_xl)
+                       if (pars.bb.xl > bb_orig_xl)
                                pars.bb.xl -= bb_orig_xl;
                        else
                                pars.bb.xl = 0;
@@ -325,15 +326,14 @@ graphics::Params InsetGraphicsParams::as_grfxParams() const
        }
 
        if (display == graphics::DefaultDisplay) {
-               pars.display = lyxrc.display_graphics;
+               pars.display = graphics::DisplayType(lyxrc.display_graphics);
        } else {
                pars.display = display;
        }
 
        // Override the above if we're not using a gui
-       if (!use_gui) {
+       if (!use_gui)
                pars.display = graphics::NoDisplay;
-       }
 
        return pars;
 }