]> git.lyx.org Git - lyx.git/blobdiff - src/insets/insetgraphics.C
Make it compile when USE_BOOST_FORMAT is unset
[lyx.git] / src / insets / insetgraphics.C
index 649fc0abbf57abd3e0f31af4140ac36db56ff978..79bb4f0a93f4bd036ed947056dba2301390f22dd 100644 (file)
@@ -18,7 +18,6 @@ TODO
     * Add a way to roll the image file into the file format.
     * When loading, if the image is not found in the expected place, try
       to find it in the clipart, or in the same directory with the image.
-    * Keep a tab on the image file, if it changes, update the lyx view.
     * The image choosing dialog could show thumbnails of the image formats
       it knows of, thus selection based on the image instead of based on
       filename.
@@ -85,6 +84,7 @@ TODO
 #include "support/LAssert.h"
 #include "support/filetools.h"
 #include "support/lyxalgo.h" // lyx::count
+#include "support/lyxlib.h" // float_equal
 #include "support/path.h"
 #include "support/systemcall.h"
 #include "support/os.h"
@@ -92,6 +92,7 @@ TODO
 #include <boost/weak_ptr.hpp>
 #include <boost/bind.hpp>
 #include <boost/signals/trackable.hpp>
+#include "BoostFormat.h"
 
 #include <algorithm> // For the std::max
 
@@ -100,12 +101,13 @@ extern string system_tempdir;
 using std::ostream;
 using std::endl;
 
+
+namespace {
+
 ///////////////////////////////////////////////////////////////////////////
 int const VersionNumber = 1;
 ///////////////////////////////////////////////////////////////////////////
 
-namespace {
-
 // This function is a utility function
 // ... that should be with ChangeExtension ...
 inline
@@ -114,10 +116,6 @@ string const RemoveExtension(string const & filename)
        return ChangeExtension(filename, string());
 }
 
-} // namespace anon
-
-
-namespace {
 
 string const uniqueID()
 {
@@ -127,7 +125,30 @@ string const uniqueID()
        ost << "graph" << ++seed;
 
        // Needed if we use lyxstring.
-       return ost.str().c_str();
+       return STRCONV(ost.str());
+}
+
+
+string findTargetFormat(string const & suffix)
+{
+       // lyxrc.pdf_mode means:
+       // Are we creating a PDF or a PS file?
+       // (Should actually mean, are we using latex or pdflatex).
+       if (lyxrc.pdf_mode) {
+               lyxerr[Debug::GRAPHICS] << "findTargetFormat: PDF mode\n";
+               if (contains(suffix, "ps") || suffix == "pdf")
+                       return "pdf";
+               else if (suffix == "jpg")       // pdflatex can use jpeg
+                       return suffix;
+               else
+                       return "png";           // and also png
+       }
+       // If it's postscript, we always do eps.
+       lyxerr[Debug::GRAPHICS] << "findTargetFormat: PostScript mode\n";
+       if (suffix != "ps")                     // any other than ps
+           return "eps";                       // is changed to eps
+       else
+           return suffix;                      // let ps untouched
 }
 
 } // namespace anon
@@ -468,17 +489,17 @@ string const InsetGraphics::createLatexOptions() const
            options << "  draft,\n";
        if (params().clip)
            options << "  clip,\n";
-       
-       if (params().scale) {
-               if (params().scale != 100)
-                       options << "  scale=" << params().scale / 100.0 << ",\n";
+       if (!lyx::float_equal(params().scale, 0.0, 0.05)) {
+               if (!lyx::float_equal(params().scale, 100.0, 0.05))
+                       options << "  scale=" << params().scale / 100.0
+                               << ",\n";
        } else {
                if (!params().width.zero())
                        options << "  width=" << params().width.asLatexString() << ",\n";
                if (!params().height.zero())
                        options << "  height=" << params().height.asLatexString() << ",\n";
                if (params().keepAspectRatio)
-                       options << "  keepaspectratio,\n";
+                       options << "  keepaspectratio,\n";
        }
 
        // Make sure rotation angle is not very close to zero;
@@ -500,37 +521,13 @@ string const InsetGraphics::createLatexOptions() const
        if (!params().special.empty())
            options << params().special << ",\n";
 
-       string opts = options.str().c_str();
-       return opts.substr(0,opts.size()-2);    // delete last ",\n"
+       string opts = STRCONV(options.str());
+       // delete last ",\n"
+       return opts.substr(0, opts.size() - 2);
 }
 
-namespace {
-string findTargetFormat(string const & suffix)
-{
-       // lyxrc.pdf_mode means:
-       // Are we creating a PDF or a PS file?
-       // (Should actually mean, are we using latex or pdflatex).
-       if (lyxrc.pdf_mode) {
-               lyxerr[Debug::GRAPHICS] << "findTargetFormat: PDF mode\n";
-               if (contains(suffix, "ps") || suffix == "pdf")
-                       return "pdf";
-               else if (suffix == "jpg")       // pdflatex can use jpeg
-                       return suffix;
-               else
-                       return "png";           // and also png
-       }
-       // If it's postscript, we always do eps.
-       lyxerr[Debug::GRAPHICS] << "findTargetFormat: PostScript mode\n";
-       if (suffix != "ps")                     // any other than ps
-           return "eps";                       // is changed to eps
-       else
-           return suffix;                      // let ps untouched
-}
-
-} // Anon. namespace
-
 
-string const InsetGraphics::prepareFile(Buffer const *buf) const
+string const InsetGraphics::prepareFile(Buffer const * buf) const
 {
        // LaTeX can cope if the graphics file doesn't exist, so just return the
        // filename.
@@ -669,9 +666,14 @@ string const InsetGraphics::prepareFile(Buffer const *buf) const
                Systemcall one;
                one.startscript(Systemcall::Wait, command);
                if (!IsFileReadable(ChangeExtension(outfile_base, to)))
+#if USE_BOOST_FORMAT
                        Alert::alert(_("Cannot convert Image (not existing file?)"),
-                               _("No information for converting from ")
-                               + from + _(" to ") + to);
+                                    boost::io::str(boost::format(_("No information for converting from %1$s to %2$s"))
+                               % from % to));
+#else
+                       Alert::alert(_("Cannot convert Image (not existing file?)"),
+                                    _("No information for converting from ") + from + " to " + to);
+#endif
        }
 
        return RemoveExtension(temp_file);
@@ -760,7 +762,15 @@ int InsetGraphics::ascii(Buffer const *, ostream & os, int) const
        // 1. Convert file to ascii using gifscii
        // 2. Read ascii output file and add it to the output stream.
        // at least we send the filename
-       os << '<' << _("Graphic file:") << params().filename << ">\n";
+#if USE_BOOST_FORMAT
+       os << '<'
+          << boost::format(_("Graphic file: %1$s")) % params().filename
+          << ">\n";
+#else
+       os << '<'
+          << _("Graphic file: ") << params().filename
+          << ">\n";
+#endif
        return 0;
 }