#include "support/lstrings.h"
#include "support/bind.h"
+#include "support/TempFile.h"
#include <sstream>
#include <fstream>
typedef vector<SnippetPair> BitmapFile;
-string const unique_filename(string const & bufferpath)
+FileName const unique_tex_filename(FileName const & bufferpath)
{
- static int theCounter = 0;
- string const filename = lyx::convert<string>(theCounter++) + "lyxpreview";
- return addName(bufferpath, filename);
+ TempFile tempfile(bufferpath, "lyxpreviewXXXXXX.tex");
+ tempfile.setAutoRemove(false);
+ return tempfile.name();
}
-lyx::Converter const * setConverter(string const from)
+lyx::Converter const * setConverter(string const & from)
{
typedef vector<string> FmtList;
typedef lyx::graphics::Cache GCache;
return ptr;
}
+ // FIXME THREAD
static bool first = true;
if (first) {
first = false;
LYXERR(Debug::GRAPHICS, "PreviewLoader::startLoading()");
// As used by the LaTeX file and by the resulting image files
- string const directory = buffer_.temppath();
+ FileName const directory(buffer_.temppath());
- string const filename_base = unique_filename(directory);
+ FileName const latexfile = unique_tex_filename(directory);
+ string const filename_base = removeExtension(latexfile.absFileName());
// Create an InProgress instance to place in the map of all
// such processes if it starts correctly.
pending_.clear();
// Output the LaTeX file.
- FileName const latexfile(filename_base + ".tex");
-
// we use the encoding of the buffer
Encoding const & enc = buffer_.params().encoding();
ofdocstream of;
return;
}
- double const font_scaling_factor =
- buffer_.isExporting() ? 75.0 * buffer_.params().html_math_img_scale
- : 0.01 * lyxrc.dpi * lyxrc.zoom * lyxrc.preview_scale_factor;
-
- // FIXME XHTML
- // The colors should be customizable.
- ColorCode const bg = buffer_.isExporting()
- ? Color_white : PreviewLoader::backgroundColor();
- ColorCode const fg = buffer_.isExporting()
- ? Color_black : PreviewLoader::foregroundColor();
+ double const font_scaling_factor = buffer_.fontScalingFactor();
+
// The conversion command.
ostringstream cs;
cs << pconverter_->command
<< " " << quoteName(latexfile.toFilesystemEncoding())
- << " --dpi " << int(font_scaling_factor)
- << " --fg " << theApp()->hexName(fg)
- << " --bg " << theApp()->hexName(bg);
+ << " --dpi " << int(font_scaling_factor);
+
+ // FIXME XHTML
+ // The colors should be customizable.
+ if (!buffer_.isExporting()) {
+ ColorCode const fg = PreviewLoader::foregroundColor();
+ ColorCode const bg = PreviewLoader::backgroundColor();
+ cs << " --fg " << theApp()->hexName(fg)
+ << " --bg " << theApp()->hexName(bg);
+ }
+
// FIXME what about LuaTeX?
if (buffer_.params().useNonTeXFonts)
cs << " --latex=xelatex";
if (buffer_.params().bufferFormat() == "lilypond-book")
cs << " --lilypond";
- string const command = libScriptSearch(cs.str());
+ string const command = cs.str();
if (wait) {
ForkedCall call(buffer_.filePath());
int ret = call.startScript(ForkedProcess::Wait, command);
+ // FIXME THREAD
static int fake = (2^20) + 1;
int pid = fake++;
inprogress.pid = pid;
}
+double PreviewLoader::displayPixelRatio() const
+{
+ return buffer().params().display_pixel_ratio;
+}
+
void PreviewLoader::Impl::finishedGenerating(pid_t pid, int retval)
{
// Paranoia check!
runparams.nice = true;
runparams.moving_arg = true;
runparams.free_spacing = true;
- if (buffer_.parent())
- runparams.is_child = true;
+ runparams.is_child = buffer_.parent();
buffer_.writeLaTeXSource(os, buffer_.filePath(), runparams, Buffer::OnlyPreamble);
// FIXME! This is a HACK! The proper fix is to control the 'true'