#include "FuncStatus.h"
#include "gettext.h"
#include "LaTeXFeatures.h"
-#include "lyx_main.h"
#include "lyxlength.h"
#include "lyxlex.h"
#include "metricsinfo.h"
{
// Are we using latex or pdflatex?
if (runparams.flavor == OutputParams::PDFLATEX) {
- lyxerr[Debug::GRAPHICS] << "findTargetFormat: PDF mode" << endl;
+ LYXERR(Debug::GRAPHICS) << "findTargetFormat: PDF mode" << endl;
Format const * const f = formats.getFormat(format);
// Convert vector graphics to pdf
if (f && f->vectorFormat())
return "png";
}
// If it's postscript, we always do eps.
- lyxerr[Debug::GRAPHICS] << "findTargetFormat: PostScript mode" << endl;
+ LYXERR(Debug::GRAPHICS) << "findTargetFormat: PostScript mode" << endl;
if (format != "ps")
// any other than ps is changed to eps
return "eps";
if (token == "Graphics")
readInsetGraphics(lex, buf.filePath());
else
- lyxerr[Debug::GRAPHICS] << "Not a Graphics inset!" << endl;
+ LYXERR(Debug::GRAPHICS) << "Not a Graphics inset!" << endl;
graphic_->update(params().as_grfxParams());
}
lex.next();
string const token = lex.getString();
- lyxerr[Debug::GRAPHICS] << "Token: '" << token << '\''
+ LYXERR(Debug::GRAPHICS) << "Token: '" << token << '\''
<< endl;
if (token.empty()) {
// Nothing to do...
return std::make_pair(IDENTICAL_CONTENTS, file_out);
- Mover const & mover = movers(formats.getFormatFromFile(file_in));
+ Mover const & mover = getMover(formats.getFormatFromFile(file_in));
bool const success = mover.copy(file_in, file_out);
if (!success) {
// FIXME UNICODE
- lyxerr[Debug::GRAPHICS]
+ LYXERR(Debug::GRAPHICS)
<< to_utf8(support::bformat(_("Could not copy the file\n%1$s\n"
"into the temporary directory."),
from_utf8(file_in.absFilename())))
string::size_type const ext_len = file_in.length() - base.length();
mangled[mangled.length() - ext_len] = '.';
}
- string const file_out = support::makeAbsPath(mangled, dir);
+ FileName const file_out(support::makeAbsPath(mangled, dir));
- return copyFileIfNeeded(file, FileName(file_out));
+ return copyFileIfNeeded(file, file_out);
}
-string const stripExtensionIfPossible(string const & file)
+string const stripExtensionIfPossible(string const & file, bool nice)
{
- // Remove the extension so the LaTeX will use whatever
- // is appropriate (when there are several versions in
- // different formats)
+ // Remove the extension so the LaTeX compiler will use whatever
+ // is appropriate (when there are several versions in different
+ // formats).
+ // Do this only if we are not exporting for internal usage, because
+ // pdflatex prefers png over pdf and it would pick up the png images
+ // that we generate for preview.
// This works only if the filename contains no dots besides
// the just removed one. We can fool here by replacing all
// dots with a macro whose definition is just a dot ;-)
// name is escaped.
string const latex_name = latex_path(file,
support::EXCLUDE_EXTENSION);
- if (contains(latex_name, '"'))
+ if (!nice || contains(latex_name, '"'))
return latex_name;
return latex_path(removeExtension(file),
support::PROTECT_EXTENSION,
}
-string const stripExtensionIfPossible(string const & file, string const & to)
+string const stripExtensionIfPossible(string const & file, string const & to, bool nice)
{
// No conversion is needed. LaTeX can handle the graphic file as is.
// This is true even if the orig_file is compressed.
if (to_format == file_format ||
(to_format == "eps" && file_format == "ps") ||
(to_format == "ps" && file_format == "eps"))
- return stripExtensionIfPossible(file);
+ return stripExtensionIfPossible(file, nice);
return latex_path(file, support::EXCLUDE_EXTENSION);
}
// previewing source code, no file copying or file format conversion
if (runparams.dryrun)
- return stripExtensionIfPossible(rel_file);
+ return stripExtensionIfPossible(rel_file, runparams.nice);
// temp_file will contain the file for LaTeX to act on if, for example,
// we move it to a temp dir or uncompress it.
// this file, but we can't check, because that would
// mean to unzip the file and thereby making the
// noUnzip parameter meaningless.
- lyxerr[Debug::GRAPHICS]
+ LYXERR(Debug::GRAPHICS)
<< "\tpass zipped file to LaTeX.\n";
FileName const bb_orig_file = FileName(changeExtension(orig_file, "bb"));
// temp_file has been unzipped already and
// orig_file has not changed in the meantime.
temp_file = unzipped_temp_file;
- lyxerr[Debug::GRAPHICS]
+ LYXERR(Debug::GRAPHICS)
<< "\twas already unzipped to " << temp_file
<< endl;
} else {
// unzipped_temp_file does not exist or is too old
temp_file = unzipFile(temp_file);
- lyxerr[Debug::GRAPHICS]
+ LYXERR(Debug::GRAPHICS)
<< "\tunzipped to " << temp_file << endl;
}
}
string const from = formats.getFormatFromFile(temp_file);
if (from.empty()) {
- lyxerr[Debug::GRAPHICS]
+ LYXERR(Debug::GRAPHICS)
<< "\tCould not get file format." << endl;
}
string const to = findTargetFormat(from, runparams);
string const ext = formats.extension(to);
- lyxerr[Debug::GRAPHICS]
+ LYXERR(Debug::GRAPHICS)
<< "\t we have: from " << from << " to " << to << '\n';
// We're going to be running the exported buffer through the LaTeX
// compiler, so must ensure that LaTeX can cope with the graphics
// file format.
- lyxerr[Debug::GRAPHICS]
+ LYXERR(Debug::GRAPHICS)
<< "\tthe orig file is: " << orig_file << endl;
if (from == to) {
output_file = changeExtension(output_file, ext);
source_file = FileName(changeExtension(source_file.absFilename(), ext));
} else
- lyxerr[Debug::GRAPHICS]
+ LYXERR(Debug::GRAPHICS)
<< "Could not rename file `"
<< temp_file << "' to `" << new_file
<< "'." << endl;
output_file);
runparams.exportdata->addExternalFile("dvi", source_file,
output_file);
- return stripExtensionIfPossible(output_file, to);
+ return stripExtensionIfPossible(output_file, to, runparams.nice);
}
FileName const to_file = FileName(changeExtension(temp_file.absFilename(), ext));
// Yes if to_file does not exist or if temp_file is newer than to_file
if (compare_timestamps(temp_file, to_file) < 0) {
// FIXME UNICODE
- lyxerr[Debug::GRAPHICS]
+ LYXERR(Debug::GRAPHICS)
<< to_utf8(bformat(_("No conversion of %1$s is needed after all"),
from_utf8(rel_file)))
<< std::endl;
output_to_file);
runparams.exportdata->addExternalFile("dvi", to_file,
output_to_file);
- return stripExtensionIfPossible(output_file);
+ return stripExtensionIfPossible(output_to_file, runparams.nice);
}
- lyxerr[Debug::GRAPHICS]
+ LYXERR(Debug::GRAPHICS)
<< "\tThe original file is " << orig_file << "\n"
<< "\tA copy has been made and convert is to be called with:\n"
<< "\tfile to convert = " << temp_file << '\n'
// FIXME (Abdel 12/08/06): Is there a need to show these errors?
ErrorList el;
- if (converters.convert(&buf, temp_file, to_file, params().filename,
+ if (theConverters().convert(&buf, temp_file, to_file, params().filename,
from, to, el,
Converters::try_default | Converters::try_cache)) {
runparams.exportdata->addExternalFile(tex_format,
to_file, output_to_file);
}
- return stripExtensionIfPossible(output_file);
+ return stripExtensionIfPossible(output_to_file, runparams.nice);
}
int InsetGraphics::latex(Buffer const & buf, odocstream & os,
- OutputParams const & runparams) const
+ OutputParams const & runparams) const
{
// If there is no file specified or not existing,
// just output a message about it in the latex output.
- lyxerr[Debug::GRAPHICS]
+ LYXERR(Debug::GRAPHICS)
<< "insetgraphics::latex: Filename = "
<< params().filename.absFilename() << endl;
// "filename" found. In this case LaTeX
// draws only a rectangle with the above bb and the
// not found filename in it.
- lyxerr[Debug::GRAPHICS]
+ LYXERR(Debug::GRAPHICS)
<< "\tMessage = \"" << message << '\"' << endl;
// These variables collect all the latex code that should be before and
// Write the options if there are any.
string const opts = createLatexOptions();
- lyxerr[Debug::GRAPHICS] << "\tOpts = " << opts << endl;
+ LYXERR(Debug::GRAPHICS) << "\tOpts = " << opts << endl;
if (!opts.empty() && !message.empty())
before += ('[' + opts + ',' + message + ']');
else if (!opts.empty() || !message.empty())
before += ('[' + opts + message + ']');
- lyxerr[Debug::GRAPHICS]
+ LYXERR(Debug::GRAPHICS)
<< "\tBefore = " << before
<< "\n\tafter = " << after << endl;
// FIXME UNICODE
os << from_utf8(latex_str);
- lyxerr[Debug::GRAPHICS] << "InsetGraphics::latex outputting:\n"
+ LYXERR(Debug::GRAPHICS) << "InsetGraphics::latex outputting:\n"
<< latex_str << endl;
// Return how many newlines we issued.
return int(lyx::count(latex_str.begin(), latex_str.end(),'\n'));
int InsetGraphics::plaintext(Buffer const &, odocstream & os,
- OutputParams const &) const
+ OutputParams const &) const
{
// No graphics in ascii output. Possible to use gifscii to convert
// images to ascii approximation.
// at least we send the filename
// FIXME UNICODE
// FIXME: We have no idea what the encoding of the filename is
- os << '<' << bformat(_("Graphics file: %1$s"),
- from_utf8(params().filename.absFilename()))
- << ">\n";
- return 0;
+
+ docstring const str = bformat(_("Graphics file: %1$s"),
+ from_utf8(params().filename.absFilename()));
+ os << '<' << str << '>';
+
+ return 2 + str.size();
}