]> git.lyx.org Git - lyx.git/blobdiff - src/graphics/PreviewLoader.C
Modify the headers of files in src/graphics as discussed on the list.
[lyx.git] / src / graphics / PreviewLoader.C
index f89fddd03cff84f32831c65f777d9dd598a01f08..5eb37010644edb289abdabada41b42da36cc3ee2 100644 (file)
@@ -1,9 +1,10 @@
-/*
+/**
  *  \file PreviewLoader.C
- *  Copyright 2002 the LyX Team
  *  Read the file COPYING
  *
- * \author Angus Leeming <leeming@lyx.org>
+ * \author Angus Leeming 
+ *
+ * Full author contact details available in file CREDITS
  */
 
 #include <config.h>
 #pragma implementation
 #endif
 
-// Set to 1 if using preview.sty >= 0.73 and a version of lyxpreview2ppm.sh
-// that extracts the metrics info from the latex log file.
-#define USING_NEW_PREVIEW_STY 0
-
 #include "PreviewLoader.h"
 #include "PreviewImage.h"
 
 #include "buffer.h"
-#if !USING_NEW_PREVIEW_STY
-#include "bufferparams.h"
-#endif
 #include "converter.h"
 #include "debug.h"
 #include "lyxrc.h"
@@ -75,11 +69,6 @@ typedef list<string> PendingSnippets;
 // Each item in the vector is a pair<snippet, image file name>.
 typedef vector<StrPair> BitmapFile;
 
-
-#if !USING_NEW_PREVIEW_STY
-double setFontScalingFactor(Buffer &);
-#endif
-
 string const unique_filename(string const bufferpath);
 
 Converter const * setConverter();
@@ -265,10 +254,7 @@ struct IncrementedFileName {
        StrPair const operator()(string const & snippet)
        {
                ostringstream os;
-               os << base_
-                  << setfill('0') << setw(3) << counter_++
-                  << "." << to_format_;
-
+               os << base_ << counter_++ << "." << to_format_;
                string const file = os.str().c_str();
 
                return make_pair(snippet, file);
@@ -292,7 +278,7 @@ InProgress::InProgress(string const & filename_base,
        PendingSnippets::const_iterator pend = pending.end();
        BitmapFile::iterator sit = snippets.begin();
 
-       std::transform(pit, pend, sit,
+       std::transform(pit, pend, sit, 
                       IncrementedFileName(to_format, filename_base));
 }
 
@@ -321,12 +307,8 @@ namespace grfx {
 PreviewLoader::Impl::Impl(PreviewLoader & p, Buffer const & b)
        : parent_(p), buffer_(b), font_scaling_factor_(0.0)
 {
-#if USING_NEW_PREVIEW_STY
        font_scaling_factor_ = 0.01 * lyxrc.dpi * lyxrc.zoom *
                lyxrc.preview_scale_factor;
-#else
-       font_scaling_factor_ = setFontScalingFactor(const_cast<Buffer &>(b));
-#endif
 
        lyxerr[Debug::GRAPHICS] << "The font scaling factor is "
                                << font_scaling_factor_ << endl;
@@ -491,9 +473,9 @@ void PreviewLoader::Impl::startLoading()
        // The conversion command.
        ostringstream cs;
        cs << pconverter_->command << " " << latexfile << " "
-          << int(font_scaling_factor_);
+          << int(font_scaling_factor_) << " " << pconverter_->to;
 
-       string const command = LibScriptSearch(cs.str().c_str());
+       string const command = "sh " + LibScriptSearch(cs.str().c_str());
 
        // Initiate the conversion from LaTeX to bitmap images files.
        Forkedcall::SignalTypePtr convert_ptr;
@@ -577,17 +559,15 @@ void PreviewLoader::Impl::dumpPreamble(ostream & os) const
        // Why on earth is Buffer::makeLaTeXFile a non-const method?
        Buffer & tmp = const_cast<Buffer &>(buffer_);
        // Dump the preamble only.
-       tmp.makeLaTeXFile(os, string(), true, false, true);
+       tmp.makeLaTeXFile(os, buffer_.filePath(), true, false, true);
 
        // Loop over the insets in the buffer and dump all the math-macros.
        Buffer::inset_iterator it  = buffer_.inset_const_iterator_begin();
        Buffer::inset_iterator end = buffer_.inset_const_iterator_end();
 
-       for (; it != end; ++it) {
-               if ((*it)->lyxCode() == Inset::MATHMACRO_CODE) {
-                       (*it)->latex(&buffer_, os, true, true);
-               }
-       }
+       for (; it != end; ++it)
+               if (it->lyxCode() == Inset::MATHMACRO_CODE)
+                       it->latex(&buffer_, os, true, true);
 
        // All equation lables appear as "(#)" + preview.sty's rendering of
        // the label name
@@ -674,68 +654,6 @@ Converter const * setConverter()
 }
 
 
-#if !USING_NEW_PREVIEW_STY
-double setFontScalingFactor(Buffer & buffer)
-{
-       double scale_factor = 0.01 * lyxrc.dpi * lyxrc.zoom *
-               lyxrc.preview_scale_factor;
-
-       // Has the font size been set explicitly?
-       string const & fontsize = buffer.params.fontsize;
-       lyxerr[Debug::GRAPHICS] << "PreviewLoader::scaleToFitLyXView()\n"
-                               << "font size is " << fontsize << endl;
-
-       if (isStrUnsignedInt(fontsize))
-               return 10.0 * scale_factor / strToDbl(fontsize);
-
-       // No. We must extract it from the LaTeX class file.
-       LyXTextClass const & tclass = buffer.params.getLyXTextClass();
-       string const textclass(tclass.latexname() + ".cls");
-       string const classfile(findtexfile(textclass, "cls"));
-
-       lyxerr[Debug::GRAPHICS] << "text class is " << textclass << '\n'
-                               << "class file is " << classfile << endl;
-
-       ifstream ifs(classfile.c_str());
-       if (!ifs.good()) {
-               lyxerr[Debug::GRAPHICS] << "Unable to open class file!" << endl;
-               return scale_factor;
-       }
-
-       string str;
-       double scaling = scale_factor;
-
-       while (ifs.good()) {
-               getline(ifs, str);
-               // To get the default font size, look for a line like
-               // "\ExecuteOptions{letterpaper,10pt,oneside,onecolumn,final}"
-               if (!prefixIs(ltrim(str), "\\ExecuteOptions"))
-                       continue;
-
-               // str contains just the options of \ExecuteOptions
-               string const tmp = split(str, '{');
-               split(tmp, str, '}');
-
-               int count = 0;
-               string tok = token(str, ',', count++);
-               while (!isValidLength(tok) && !tok.empty())
-                       tok = token(str, ',', count++);
-
-               if (!tok.empty()) {
-                       lyxerr[Debug::GRAPHICS]
-                               << "Extracted default font size from "
-                               "LaTeX class file successfully!" << endl;
-                       LyXLength fsize(tok);
-                       scaling *= 10.0 / fsize.value();
-                       break;
-               }
-       }
-
-       return scaling;
-}
-#endif
-
-
 void setAscentFractions(vector<double> & ascent_fractions,
                        string const & metrics_file)
 {
@@ -755,7 +673,6 @@ void setAscentFractions(vector<double> & ascent_fractions,
 
        bool error = false;
 
-#if USING_NEW_PREVIEW_STY
        // Tightpage dimensions affect all subsequent dimensions
        int tp_ascent;
        int tp_descent;
@@ -808,43 +725,6 @@ void setAscentFractions(vector<double> & ascent_fractions,
                }
        }
 
-#else
-       int snippet_counter = 0;
-       for (; it != end; ++it) {
-               // Extracting lines of the form
-               // %%Page id: tp_bl_x tp_bl_y tp_tr_x tp_tr_y asc desc width
-               string page;
-               string page_id;
-               int dummy;
-               int tp_ascent;
-               int tp_descent;
-               int ascent;
-               int descent;
-               in >> page >> page_id
-                  >> dummy >> tp_descent >> dummy >> tp_ascent
-                  >> ascent >> descent >> dummy;
-
-               page_id = rtrim(page_id, ":");
-
-               error = !in.good()
-                       || !isStrUnsignedInt(page_id);
-               if (error)
-                       break;
-
-               int const snippet_id = strToInt(page_id);
-               error = page != "%%Page"
-                       || ++snippet_counter != snippet_id;
-               if (error)
-                       break;
-
-               double const a = ascent + tp_ascent;
-               double const d = descent - tp_descent;
-
-               if (!lyx::float_equal(a + d, 0, 0.1))
-                       *it = a / (a + d);
-       }
-#endif
-
        if (error) {
                lyxerr[Debug::GRAPHICS]
                        << "setAscentFractions(" << metrics_file << ")\n"