X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fgraphics%2FPreviewLoader.C;h=5eb37010644edb289abdabada41b42da36cc3ee2;hb=3aa7e91a827fa15b3e0906b975c4755a2dcdb76d;hp=f89fddd03cff84f32831c65f777d9dd598a01f08;hpb=7d1204efef7ac8d552d9fa238cca4a0f6e7cc197;p=lyx.git diff --git a/src/graphics/PreviewLoader.C b/src/graphics/PreviewLoader.C index f89fddd03c..5eb3701064 100644 --- a/src/graphics/PreviewLoader.C +++ b/src/graphics/PreviewLoader.C @@ -1,9 +1,10 @@ -/* +/** * \file PreviewLoader.C - * Copyright 2002 the LyX Team * Read the file COPYING * - * \author Angus Leeming + * \author Angus Leeming + * + * Full author contact details available in file CREDITS */ #include @@ -12,17 +13,10 @@ #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 PendingSnippets; // Each item in the vector is a pair. typedef vector 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(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_); // 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 & ascent_fractions, string const & metrics_file) { @@ -755,7 +673,6 @@ void setAscentFractions(vector & 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 & 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"