+2002-06-17 Herbert Voss <voss@perce.de>
+
+ * configure.m4: install only those converters which are different
+ to convert, because this is taken as the default. SO we can get
+ rid of all problems when user do not have installed the right
+ converters.
+
2002-06-16 Adrien Rebollo <adrien.rebollo@gmx.fr>
* examples/fr_ExemplesTableaux.lyx: update
hevea) latex_to_html_command="hevea -s \$\$i";;
esac
-#### Search for image conversion ####
-SEARCH_PROG([for an Image -> EPS converter], TOEPS, convert pnmtops)
-case $TOEPS in
- convert)
- bmp_to_eps="convert BMP:\$\$i EPS:\$\$o"
- fits_to_eps="convert FITS:\$\$i EPS:\$\$o"
- gif_to_eps="convert GIF:\$\$i EPS:\$\$o"
- jpg_to_eps="convert JPG:\$\$i EPS:\$\$o"
- pbm_to_eps="convert PBM:\$\$i EPS:\$\$o"
- pgm_to_eps="convert PGM:\$\$i EPS:\$\$o"
- png_to_eps="convert PNG:\$\$i EPS:\$\$o"
- ppm_to_eps="convert PPM:\$\$i EPS:\$\$o"
- sgi_to_eps="convert SGI:\$\$i EPS:\$\$o"
- xbm_to_eps="convert XBM:\$\$i EPS:\$\$o"
- xwd_to_eps="convert XWD:\$\$i EPS:\$\$o"
- xpm_to_eps="convert XPM:\$\$i EPS:\$\$o" ;;
- pnmtops) gif_to_eps="giftopnm \$\$i | pnmtops > \$\$o"
- png_to_eps="pngtopnm \$\$i | pnmtops >\$\$o"
- jpg_to_eps="jpegtopnm \$\$i | pnmtops >\$\$o";;
-esac
-
-SEARCH_PROG([for an Image -> PNG converter], TOPNG, convert pnmtopng)
-case $TOPNG in
- convert)
- gif_to_png="convert GIF:\$\$i PNG:\$\$o"
- eps_to_png="convert EPS:\$\$i PNG:\$\$o"
- jpg_to_png="convert JPG:\$\$i PNG:\$\$o";;
- pnmtopng)
- gif_to_png="giftopnm \$\$i | pnmtopng >\$\$o"
- eps_to_png="pstopnm \$\$i| pnmtopng >\$\$o"
- jpg_to_png="jpegtopnm \$\$i | pnmtopng >\$\$o";;
-esac
-
-SEARCH_PROG([for an Image -> XPM converter], TOXPM, convert)
-if test "$TOXPM" = "convert"; then
- gif_to_xpm="convert GIF:\$\$i XPM:\$\$o"
- eps_to_xpm="convert EPS:\$\$i XPM:\$\$o"
- jpg_to_xpm="convert JPG:\$\$i XPM:\$\$o"
- png_to_xpm="convert PNG:\$\$i XPM:\$\$o"
- ps_to_xpm="convert PS:\$\$i XPM:\$\$o"
- xbm_to_xpm="convert XBM:\$\$i XPM:\$\$o"
-fi
-
-SEARCH_PROG([for an EPS -> PDF converter], EPSTOPDF, epstopdf)
-case $EPSTOPDF in
- epstopdf) eps_to_pdf="epstopdf --outfile=\$\$o \$\$i";;
-esac
-
-#### Add Grace conversions (xmgrace needs an Xserver, gracebat doesn't.)
-SEARCH_PROG([for a Grace -> Image converter], GRACE, gracebat)
-case $GRACE in
- gracebat)
- for device in `gracebat -version 2>/dev/null | grep "^Dummy"` ; do
- case $device in
- EPS) agr_to_eps="gracebat -hardcopy -printfile \$\$o -hdevice $device \$\$i 2>/dev/null";;
- PDF) agr_to_pdf="gracebat -hardcopy -printfile \$\$o -hdevice $device \$\$i 2>/dev/null";;
- PNG) agr_to_png="gracebat -hardcopy -printfile \$\$o -hdevice $device \$\$i 2>/dev/null";;
- esac
- done
-esac
-
#### Explore the LaTeX configuration
MSG_CHECKING(LaTeX configuration)
# First, remove the files that we want to re-create
\\Format bmp bmp BMP ""
\\Format dvi dvi DVI D
\\Format eps eps EPS ""
-\\Format epsi epsi EPSI ""
\\Format fax "" Fax ""
-\\Format fits fits FITS ""
-\\Format gif gif GIF ""
\\Format agr agr GRACE ""
\\Format html html HTML H
-\\Format jpg jpg JPEG ""
\\Format latex tex LaTeX L
\\Format linuxdoc sgml LinuxDoc x
\\Format lyx lyx LyX ""
\\Format pdf pdf PDF P
\\Format pdf2 pdf "PDF (pdflatex)" F
\\Format pdf3 pdf "PDF (dvipdfm)" m
-\\Format pbm pbm PBM ""
-\\Format pgm pgm PGM ""
\\Format png png PNG ""
-\\Format ppm ppm PPM ""
\\Format ps ps Postscript t
\\Format program "" Program ""
-\\Format sgi sgi SGI ""
\\Format tgif obj TGIF ""
\\Format tiff tif TIFF ""
-\\Format xbm xbm XBM ""
-\\Format xpm xpm XPM ""
-\\Format xwd xwd XWD ""
\\Format word doc Word W
+\\Format xpm xpm XPM ""
\\converter latex dvi "$latex_to_dvi" "latex"
\\converter latex pdf2 "$latex_to_pdf" "latex"
\\converter html latex "$html_to_latex_command" ""
\\converter word latex "$word_to_latex_command" ""
-\\converter bmp eps "$bmp_to_eps" ""
-\\converter fits eps "$fits_to_eps" ""
-\\converter gif eps "$gif_to_eps" ""
-\\converter jpg eps "$jpg_to_eps" ""
-\\converter pbm eps "$pbm_to_eps" ""
-\\converter pgm eps "$pgm_to_eps" ""
-\\converter png eps "$png_to_eps" ""
-\\converter ppm eps "$ppm_to_eps" ""
-\\converter sgi eps "$sgi_to_eps" ""
-\\converter tgif eps "tgif -print -eps \$\$i" ""
-\\converter tiff eps "tiff2ps \$\$i > \$\$o" ""
-\\converter xbm eps "$xbm_to_eps" ""
-\\converter xpm eps "$xpm_to_eps" ""
-\\converter xwd eps "$xwd_to_eps" ""
-
-\\converter tgif xpm "tgif -print -stdout -xpm \$\$i > \$\$o" ""
-\\converter tgif png "tgif -print -stdout -png \$\$i > \$\$o" ""
-\\converter tgif pdf "tgif -print -stdout -pdf \$\$i > \$\$o" ""
-
-\\converter gif png "$gif_to_png" ""
-\\converter eps png "$eps_to_png" ""
-\\converter epsi png "$eps_to_png" ""
-\\converter jpg png "$jpg_to_png" ""
-
-\\converter gif xpm "$gif_to_xpm" ""
-\\converter eps xpm "$eps_to_xpm" ""
-\\converter epsi xpm "$eps_to_xpm" ""
-\\converter jpg xpm "$jpg_to_xpm" ""
-\\converter png xpm "$png_to_xpm" ""
-\\converter ps xpm "$ps_to_xpm" ""
-\\converter xbm xpm "$xbm_to_xpm" ""
-
-\\converter eps pdf "$eps_to_pdf" ""
-\\converter epsi pdf "$eps_to_pdf" ""
-
-\\converter agr eps "$agr_to_eps" ""
-\\converter agr pdf "$agr_to_pdf" ""
-\\converter agr png "$agr_to_png" ""
-
\\viewer dvi "$DVI_VIEWER"
\\viewer html "$HTML_VIEWER"
\\viewer pdf "$PDF_VIEWER"
\\font_encoding "$chk_fontenc"
EOF
+### the graphic converter part with the predefined ones
+#### Search for tne nonstandard converting progs
+#
+SEARCH_PROG([for an TIFF -> PS converter], TIFF2PS, tiff2ps)
+if test "$TIFF2PS" = "tiff2ps"; then
+cat >>$outfile <<EOF
+\\converter tiff eps "tiff2ps \$\$i > \$\$o" ""
+EOF
+fi
+
+SEARCH_PROG([for an TGIF -> EPS/XPM converter], TGIF, tgif)
+if test "$TGIF" = "tgif"; then
+cat >>$outfile <<EOF
+\\converter tgif eps "tgif -print -eps \$\$i" ""
+\\converter tgif pdf "tgif -print -pdf \$\$i" ""
+\\converter tgif png "tgif -print -png \$\$i" ""
+\\converter tgif xpm "tgif -print -stdout -xpm \$\$i > \$\$o" ""
+EOF
+fi
+
+SEARCH_PROG([for an EPS -> PDF converter], EPSTOPDF, epstopdf)
+if test "$EPSTOPDF" = "epstopdf"; then
+cat >>$outfile <<EOF
+\\converter eps pdf "epstopdf --outfile=\$\$o \$\$i" ""
+\\converter epsi pdf "epstopdf --outfile=\$\$o \$\$i" ""
+EOF
+fi
+
+#### Add Grace conversions (xmgrace needs an Xserver, gracebat doesn't.)
+SEARCH_PROG([for a Grace -> Image converter], GRACE, gracebat)
+if test "$GRACE" = "gracebat"; then
+cat >>$outfile <<EOF
+\\converter agr eps "gracebat -hardcopy -printfile \$\$o -hdevice EPS \$\$i 2>/dev/null" ""
+\\converter agr png "gracebat -hardcopy -printfile \$\$o -hdevice PNG \$\$i 2>/dev/null" ""
+\\converter agr xpm "gracebat -hardcopy -printfile - -hdevice PNG \$\$i 2>/dev/null | convert - \$\$o" ""
+EOF
+fi
+
######## X FONTS
# create a fonts.dir file to make X fonts available to LyX
echo "checking for TeX fonts"
+2002-06-17 Herbert Voss <voss@lyx.org>
+
+ * converter.C: (convert) do not post a message, when converting
+ fails, let the calling function decide what to do in this case
+
2002-06-18 John Levon <moz@compsoc.man.ac.uk>
* lyxfunc.C: tidy up a little
EdgePath edgepath = getPath(from_format, to_format);
if (edgepath.empty()) {
- Alert::alert(_("Cannot convert file"),
- _("No information for converting from ")
- + formats.prettyName(from_format) + _(" to ")
- + formats.prettyName(to_format));
return false;
}
* path, with the file selection \param mask. The \param mask
* string is of the form :
*
- * <regular expression to match> | <description>
+ * <glob to match> | <description>
*
* for example, "*.ps | PostScript files (*.ps)".
*
+2002-06-18 John Levon <moz@compsoc.man.ac.uk>
+
+ * ControlGraphics.C: just make the mask *.*
+
2002-06-16 Lars Gullik Bjønnes <larsbj@birdstep.com>
* changes to simplify function setup, removal of a lot of includes.
using std::make_pair;
using std::vector;
-namespace {
-
-// FIXME: currently we need the second '|' to prevent mis-interpretation!
-// All supported graphic formats with their file-extension and the
-// gzip-ext for zipped (e)ps-files.
-// string const grfx_pattern =
-// "*.(agr|bmp|eps|epsi|fits|gif|jpg|obj|pdf|pbm|pgm|png|"
-// "ppm|ps|tif|tiff|xbm|xpm|xwd|gz)|";
-vector<string> const grfx_formats()
-{
- vector<string> native_formats = grfx::GCache::get().loadableFormats();
- // We can load any format that can be loaded natively together with
- // those that can be converted to one of these native formats.
- vector<string> browsable_formats = native_formats;
-
- grfx::GConverter const & gconverter = grfx::GConverter::get();
-
- vector<string>::const_iterator to_end = native_formats.end();
-
- Formats::const_iterator from_it = formats.begin();
- Formats::const_iterator from_end = formats.end();
- for (; from_it != from_end; ++from_it) {
- string const from = from_it->name();
-
- vector<string>::const_iterator to_it = native_formats.begin();
- for (; to_it != to_end; ++to_it) {
- if (gconverter.isReachable(from, *to_it)) {
- browsable_formats.push_back(from);
- break;
- }
- }
- }
-
- browsable_formats.push_back("gz");
-
- return browsable_formats;
-}
-
-
-string const xforms_pattern()
-{
- vector<string> const browsable_formats = grfx_formats();
- string const answer =
- "*.(" + getStringFromVector(browsable_formats, "|") +")|";
- return answer;
-}
-
-}
-
-
ControlGraphics::ControlGraphics(LyXView & lv, Dialogs & d)
: ControlInset<InsetGraphics, InsetGraphicsParams>(lv, d)
{}
pair<string, string> dir2(_("Documents|#o#O"), string(lyxrc.document_path));
// Show the file browser dialog
return browseRelFile(&lv_, in_name, lv_.buffer()->filePath(),
- title, ::xforms_pattern(), dir1, dir2);
+ title, "*.*", dir1, dir2);
}
+2002-06-17 Herbert Voss <voss@lyx.org>
+
+ * GraphicsCachItem.C: (findTargetFormat)return xpm-format as a
+ default when nothing different was found
+ (convertToDisplayFormat): handle zipped files in the right way and
+ choose always convert as a default converter when no other
+ userdefined was found
+
+ * GraphicsConverter.C: add more lyxerr comments and choose
+ convert when no other userdefined converter was found
+
2002-06-10 Herbert Voss <voss@lyx.org>
* GraphicsImageXPM.C (convertTo7chars): get another special color
return *it2;
}
- // Failed!
- return string();
+ // Failed! so we have to try to convert it to XPM format
+ // with the standard converter
+ return string("xpm");
}
} // anon namespace
void GCacheItem::convertToDisplayFormat()
{
setStatus(Converting);
- string filename = filename_; // Make a local copy in case we unzip it
+ // Make a local copy in case we unzip it
+ string const filename = zippedFile(filename_) ?
+ unzipFile(filename_) : filename_;
string const displayed_filename = MakeDisplayPath(filename_);
+ lyxerr[Debug::GRAPHICS] << "[GrahicsCacheItem::convertToDisplayFormat]\n"
+ << "\tAttempting to convert image file: " << filename
+ << "\n\twith displayed filename: " << displayed_filename
+ << endl;
// First, check that the file exists!
if (!IsFileReadable(filename)) {
setStatus(ErrorNoFile);
+ lyxerr[Debug::GRAPHICS] << "\tThe file is not readable" << endl;
return;
}
-// maybe that other zip extensions also be useful, especially the
-// ones that may be declared in texmf/tex/latex/config/graphics.cfg.
-// for example:
-/* -----------snip-------------
- {\DeclareGraphicsRule{.pz}{eps}{.bb}{}%
- \DeclareGraphicsRule{.eps.Z}{eps}{.eps.bb}{}%
- \DeclareGraphicsRule{.ps.Z}{eps}{.ps.bb}{}%
- \DeclareGraphicsRule{.ps.gz}{eps}{.ps.bb}{}%
- \DeclareGraphicsRule{.eps.gz}{eps}{.eps.bb}{}}}%
- -----------snip-------------*/
-
- lyxerr[Debug::GRAPHICS]
- << "Attempting to convert image file: " << displayed_filename
- << "\nwith recognised extension: " << GetExtension(filename)
- << "." << endl;
-
- zipped_ = zippedFile(filename);
- if (zipped_) {
- filename = unzipFile(filename);
- unzipped_filename_ = filename;
- }
-
- string const from = getExtFromContents(filename);
- string const to = grfx::findTargetFormat(from);
-
- lyxerr[Debug::GRAPHICS]
- << "The file contains " << from << " format data." << endl;
-
- if (to.empty()) {
- setStatus(ErrorConverting);
- return;
- }
+ string from = getExtFromContents(filename);
+ // Some old ps-files make problems, so we do not need direct
+ // loading of an ps-file
+ if (from == "ps") {
+ lyxerr[Debug::GRAPHICS]
+ << "\n\tThe file contains PostScript format data.\n"
+ << "\tchanging it to eps-format to get it converted to xpm\n";
+ from = "eps";
+ } else
+ lyxerr[Debug::GRAPHICS]
+ << "\n\tThe file contains " << from << " format data." << endl;
+ string const to = grfx::findTargetFormat(from);
if (from == to) {
// No conversion needed!
- lyxerr[Debug::GRAPHICS] << "No conversion needed!" << endl;
+ lyxerr[Debug::GRAPHICS] << "\tNo conversion needed (from == to)!" << endl;
file_to_load_ = filename;
loadImage();
return;
}
- lyxerr[Debug::GRAPHICS] << "Converting it to " << to << " format." << endl;
-
+ lyxerr[Debug::GRAPHICS] << "\tConverting it to " << to << " format." << endl;
// Take only the filename part of the file, without path or extension.
string const temp = ChangeExtension(OnlyFilename(filename), string());
string const & from_format, string const & to_format,
SignalTypePtr on_finish)
{
+ lyxerr[Debug::GRAPHICS] << "[GraphicsConverter::convert]\n"
+ << "\tfrom_file: " << from_file
+ << "\n\tto_file_base: " << to_file_base
+ << "\n\tfrom_format: " << from_format
+ << "\n\tto_format: " << to_format << endl;
// The conversion commands are stored in a stringstream
ostringstream script;
script << "#!/bin/sh\n";
-
- bool const success = build_script(from_file, to_file_base,
- from_format, to_format, script);
-
- if (!success) {
- lyxerr[Debug::GRAPHICS]
- << "Unable to build the conversion script" << std::endl;
- on_finish->operator()(string());
- return;
- }
-
- lyxerr[Debug::GRAPHICS] << "Conversion script:\n\n"
- << script.str().c_str() << "\n" << std::endl;
-
- // Output the script to file.
- static int counter = 0;
- string const script_file = OnlyPath(to_file_base) + "lyxconvert" +
- tostr(counter++) + ".sh";
-
- std::ofstream fs(script_file.c_str());
- if (!fs.good()) {
- // Unable to output the conversion script to file.
- on_finish->operator()(string());
- return;
+ string script_command;
+ string script_file;
+
+ bool success = build_script(from_file, to_file_base,
+ from_format, to_format, script);
+
+ if (success) {
+ lyxerr[Debug::GRAPHICS] << "\tConversion script:\n"
+ << "--------------------------------------\n"
+ << script.str().c_str()
+ << "\n--------------------------------------\n";
+
+ // Output the script to file.
+ static int counter = 0;
+ script_file = OnlyPath(to_file_base) + "lyxconvert" +
+ tostr(counter++) + ".sh";
+
+ std::ofstream fs(script_file.c_str());
+ if (!fs.good()) {
+ // Unable to output the conversion script to file.
+ success = false;
+ } else {
+
+ fs << script.str().c_str();
+ fs.close();
+
+ // Create a dummy command for ease of understanding of the
+ // list of forked processes.
+ // Note that 'sh ' is absolutely essential, or execvp will fail.
+ script_command =
+ "sh " + script_file + " " +
+ OnlyFilename(from_file) + " " + to_format;
+ }
}
- fs << script.str().c_str();
- fs.close();
-
- // Create a dummy command for ease of understanding of the
- // list of forked processes.
- // Note that 'sh ' is absolutely essential, or execvp will fail.
- string const script_command =
- "sh " + script_file + " " +
- OnlyFilename(from_file) + " " + to_format;
-
string const to_file =
ChangeExtension(to_file_base, formats.extension(to_format));
+ if (!success) {
+ script_file = string();
+ script_command =
+ "convert -depth 8 " +
+ from_format + ':' + from_file + ' ' +
+ to_format + ':' + to_file;
+ lyxerr[Debug::GRAPHICS]
+ << "\tNo converter defined! I use convert from ImageMagic:\n\t"
+ << script_command << endl;
+ }
+
// Launch the conversion process.
ConvProcessPtr shared_ptr;
shared_ptr.reset(new ConvProcess(script_file, script_command,
string const & to_format,
ostringstream & script) const
{
+ lyxerr[Debug::GRAPHICS] << "[GraphicsConverter::build_script] ... ";
typedef Converters::EdgePath EdgePath;
string const to_file = ChangeExtension(to_file_base,
if (from_format == to_format) {
script << move_file(QuoteName(from_file), QuoteName(to_file));
+ lyxerr[Debug::GRAPHICS] << "ready (from == to)" << endl;
return true;
}
EdgePath edgepath = converters.getPath(from_format, to_format);
if (edgepath.empty()) {
+ lyxerr[Debug::GRAPHICS] << "ready (edgepath.empty())" << endl;
return false;
}
// Move the final outfile to to_file
script << move_file("${outfile}", QuoteName(to_file));
+ lyxerr[Debug::GRAPHICS] << "ready!" << endl;
return true;
}
+2002-06-15 Herbert Voss <voss@perce.de>
+
+ * insetgraphics.C: (prepareFile) fix bug with zipped eps-files
+ and take always convert when no userdefined converter was
+ found
+ (latex) small changes in the lyxerr output
+
2002-06-15 LyX Development team <lyx@rilke>
* inset*.[Ch] (docbook): Added new argument to take the pernicious
#include "support/filetools.h"
#include "support/lyxalgo.h" // lyx::count
#include "support/path.h"
+#include "support/systemcall.h"
#include <algorithm> // For the std::max
// LaTeX can cope if the graphics file doesn't exist, so just return the
// filename.
string const orig_file = params().filename;
- string const orig_file_with_path =
+ string orig_file_with_path =
MakeAbsPath(orig_file, buf->filePath());
- lyxerr[Debug::GRAPHICS] << "prepareFile: " << orig_file << endl
- << " with path: " << orig_file_with_path << endl;
+ lyxerr[Debug::GRAPHICS] << "[InsetGraphics::prepareFile] orig_file = "
+ << orig_file << "\n\twith path: "
+ << orig_file_with_path << endl;
if (!IsFileReadable(orig_file_with_path))
return orig_file;
// If the file is compressed and we have specified that it should not be
// uncompressed, then just return its name and let LaTeX do the rest!
+
+ // maybe that other zip extensions also be useful, especially the
+ // ones that may be declared in texmf/tex/latex/config/graphics.cfg.
+ // for example:
+ /* -----------snip-------------
+ {\DeclareGraphicsRule{.pz}{eps}{.bb}{}%
+ \DeclareGraphicsRule{.eps.Z}{eps}{.eps.bb}{}%
+ \DeclareGraphicsRule{.ps.Z}{eps}{.ps.bb}{}%
+ \DeclareGraphicsRule{.ps.gz}{eps}{.ps.bb}{}%
+ \DeclareGraphicsRule{.eps.gz}{eps}{.eps.bb}{}}}%
+ -----------snip-------------*/
+
bool const zipped = zippedFile(orig_file_with_path);
if (zipped)
- lyxerr[Debug::GRAPHICS] << "it's a zipped file\n";
- if (zipped && params().noUnzip) {
- lyxerr[Debug::GRAPHICS] << "pass file unzipped to LaTeX\n";
- return orig_file;
+ lyxerr[Debug::GRAPHICS] << "\twe have a zipped file ("
+ << getExtFromContents(orig_file_with_path) << ")\n";
+ if (params().noUnzip && zipped) {
+ lyxerr[Debug::GRAPHICS]
+ << "\tpass file unzipped to LaTeX but with full path.\n";
+ // latex needs an absolue path, otherwise the coresponding
+ // *.eps.bb file isn't found
+ return orig_file_with_path;
}
+
+ string temp_file(orig_file);
+ // Uncompress the file if necessary. If it has been uncompressed in
+ // a previous call to prepareFile, do nothing.
+ if (zipped) {
+ temp_file = MakeAbsPath(OnlyFilename(temp_file), buf->tmppath);
+ lyxerr[Debug::GRAPHICS]
+ << "\ttemp_file: " << temp_file << endl;
+ if (!IsFileReadable(temp_file)) {
+ bool const success = lyx::copy(orig_file_with_path, temp_file);
+ lyxerr[Debug::GRAPHICS]
+ << "\tCopying zipped file from "
+ << orig_file_with_path << " to " << temp_file
+ << (success ? " succeeded\n" : " failed\n");
+ } else
+ lyxerr[Debug::GRAPHICS]
+ << "\tzipped file " << temp_file
+ << " exists! Maybe no tempdir ...\n";
+ orig_file_with_path = unzipFile(temp_file);
+ lyxerr[Debug::GRAPHICS]
+ << "\tunzipped to " << orig_file_with_path << endl;
+ }
+ string const from = getExtFromContents(orig_file_with_path);
// "nice" means that the buffer is exported to LaTeX format but not
// run through the LaTeX compiler.
// we manipulate the original file "any.dir/file.ext"
// to "any_dir_file.ext"! changing the dots in the
// dirname is important for the use of ChangeExtension
- string temp_file(orig_file);
+ lyxerr[Debug::GRAPHICS]
+ << "\tthe orig file is: " << orig_file_with_path << endl;
+
if (lyxrc.use_tempdir) {
- string const ext_tmp = GetExtension(orig_file);
+ string const ext_tmp = GetExtension(orig_file_with_path);
// without ext and /
temp_file = subst(
- ChangeExtension(temp_file, string()), "/", "_");
- // without . and again with ext
+ ChangeExtension(orig_file_with_path, string()), "/", "_");
+ // without dots and again with ext
temp_file = ChangeExtension(
subst(temp_file, ".", "_"), ext_tmp);
// now we have any_dir_file.ext
temp_file = MakeAbsPath(temp_file, buf->tmppath);
- }
- lyxerr[Debug::GRAPHICS]
- << "InsetGraphics::prepareFile. The temp file is: "
- << temp_file << endl;
-
- // If we are using a temp dir, then copy the file into it.
- if (lyxrc.use_tempdir && !IsFileReadable(temp_file)) {
- bool const success = lyx::copy(orig_file_with_path, temp_file);
lyxerr[Debug::GRAPHICS]
- << "InsetGraphics::prepareFile. Copying from "
- << orig_file << " to " << temp_file
- << (success ? " succeeded\n" : " failed\n");
- if (!success) {
- Alert::alert(_("Cannot copy file"), orig_file,
- _("into tempdir"));
- return orig_file;
- }
- }
-
- // Uncompress the file if necessary. If it has been uncompressed in
- // a previous call to prepareFile, do nothing.
- if (zipped) {
- // What we want to end up with:
- string const temp_file_unzipped =
- ChangeExtension(temp_file, string());
-
- if (!IsFileReadable(temp_file_unzipped)) {
- // unzipFile generates a random filename, so move this
- // file where we want it to go.
- string const tmp = unzipFile(temp_file);
- lyx::copy(tmp, temp_file_unzipped);
- lyx::unlink(tmp);
-
+ << "\tchanged to: " << temp_file << endl;
+
+ // if the file doen't exists, copy it into the tempdi
+ if (!IsFileReadable(temp_file)) {
+ bool const success = lyx::copy(orig_file_with_path, temp_file);
lyxerr[Debug::GRAPHICS]
- << "InsetGraphics::prepareFile. Unzipped to "
- << temp_file_unzipped << endl;
+ << "\tcopying from " << orig_file_with_path << " to "
+ << temp_file
+ << (success ? " succeeded\n" : " failed\n");
+ if (!success) {
+ Alert::alert(_("Cannot copy file"), orig_file_with_path,
+ _("into tempdir"));
+ return orig_file;
+ }
}
-
- // We have an uncompressed file where we expect it,
- // so rename temp_file and continue.
- temp_file = temp_file_unzipped;
}
- // Ascertain the graphics format that LaTeX requires.
- // Make again an absolute path, maybe that we have no
- // tempdir. Than temp_file=orig_file
- string const from = lyxrc.use_tempdir ?
- getExtFromContents(temp_file) :
- getExtFromContents(MakeAbsPath(temp_file, buf->filePath()));
- string const to = findTargetFormat(from);
-
- // No conversion is needed. LaTeX can handle the graphics file as it is.
- // This is true even if the orig_file is compressed.
+ string const to = findTargetFormat(from);
+ lyxerr[Debug::GRAPHICS]
+ << "\t we have: from " << from << " to " << to << '\n';
if (from == to) {
- return orig_file;
+ // No conversion is needed. LaTeX can handle the graphic file as is.
+ // This is true even if the orig_file is compressed. We have to return
+ // the orig_file_with_path, maybe it is a zipped one
+ return lyxrc.use_tempdir ? temp_file : orig_file_with_path;
}
-
+
string const outfile_base = RemoveExtension(temp_file);
-
lyxerr[Debug::GRAPHICS]
- << "InsetGraphics::prepareFile. The original file is "
- << orig_file << "\n"
- << "A copy has been made and convert is to be called with:\n"
+ << "\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'
<< "\toutfile_base = " << outfile_base << '\n'
<< "\t from " << from << " to " << to << '\n';
- converters.convert(buf, temp_file, outfile_base, from, to);
+ // if no special converter defined, than we take the default one
+ // from ImageMagic: convert from:inname.from to:outname.to
+ if (!converters.convert(buf, temp_file, outfile_base, from, to)) {
+ string const command =
+ "convert " +
+ from + ':' + temp_file + ' ' +
+ to + ':' + outfile_base + '.' + to;
+ lyxerr[Debug::GRAPHICS]
+ << "No converter defined! I use convert from ImageMagic:\n\t"
+ << command << endl;
+ Systemcall one;
+ one.startscript(Systemcall::Wait, command);
+ if (!IsFileReadable(ChangeExtension(outfile_base, to)))
+ Alert::alert(_("Cannot convert Image (not existing file??)"),
+ _("No information for converting from ")
+ + from + _(" to ") + to);
+ }
+
return RemoveExtension(temp_file);
}
// draws only a rectangle with the above bb and the
// not found filename in it.
lyxerr[Debug::GRAPHICS]
- << "InsetGraphics::latex. Message = \"" << message << '\"' << endl;
+ << "\tMessage = \"" << message << '\"' << endl;
// These variables collect all the latex code that should be before and
// after the actual includegraphics command.
// Write the options if there are any.
string const opts = createLatexOptions();
- lyxerr[Debug::GRAPHICS]
- << "InsetGraphics::latex. Opts = " << opts << endl;
+ lyxerr[Debug::GRAPHICS] << "\tOpts = " << opts << endl;
if (!opts.empty() && !message.empty())
- before += ("[" + opts + ',' + message);
+ before += ("[%\n" + opts + ',' + message);
else if (!message.empty())
- before += ('[' + message);
+ before += ("[%\n" + message);
else if (!opts.empty())
- before += ("[" + opts + ']');
+ before += ("[%\n" + opts + ']');
lyxerr[Debug::GRAPHICS]
- << "InsetGraphics::latex. Before = " << before
- << "\nafter = " << after << endl;
+ << "\tBefore = " << before
+ << "\n\tafter = " << after << endl;
// Make the filename relative to the lyx file
// and remove the extension so the LaTeX will use whatever is
<< disp_fn << "...";
owner->message(str.str().c_str());
- //XFlush(fl_get_display());
owner->view()->buffer(bufferlist.loadLyXFile(s));
ostringstream str2;
str2 << _("Document") << ' '
+2002-06-17 Herbert Voss <voss@perce.de>
+
+ * filetools.[C]: (readBB_from_PSFile) add a helperfunc
+ (readBB_lyxerrMessage) to get better lyxerr messages
+ (getExtFromContents) test epsi files in the right way
+
+ * DestroxLyXTmpDir.C: changed to true, to delete the
+ temporary unzipped files, too.
+
2002-06-10 Lars Gullik Bjønnes <larsbj@birdstep.com>
* putenv.C (putenv): putenv should never be found in std::
#include "support/systemcall.h"
#include "filetools.h"
+#include "lstrings.h"
#include "frontends/Alert.h"
#include "FileInfo.h"
#include "support/path.h" // I know it's OS/2 specific (SMiyata)
}
+// FIXME: no need for separate method like this ...
int DestroyLyXTmpDir(string const & tmpdir)
{
- return DestroyTmpDir (tmpdir, false); // Why false?
+ return DestroyTmpDir(tmpdir, true);
}
// AGR Grace...
// BMP BM...
// EPS %!PS-Adobe-3.0 EPSF...
+// EPSI like EPS and with
+// %%BeginPreview...
// FITS ...BITPIX...
// GIF GIF...
// JPG JFIF
if (filename.empty() || !IsFileReadable(filename))
return string();
+
ifstream ifs(filename.c_str());
if (!ifs)
// Couldn't open file...
else if (contains(str,"%!PS-Adobe")) {
// eps or ps
ifs >> str;
- if (contains(str,"EPSF"))
+ if (contains(str,"EPSF"))
format = "eps";
else
format = "ps";
}
if (!format.empty()) {
- lyxerr[Debug::GRAPHICS]
- << "Recognised Fileformat: " << format << endl;
- return format;
+ // if we have eps than epsi is also possible
+ // we have to check for a preview
+ if (format == "eps") {
+ lyxerr[Debug::GRAPHICS]
+ << "\teps detected -> test for an epsi ..."
+ << endl;
+ while (count++ < max_count) {
+ if (ifs.eof())
+ break;
+ getline(ifs, str);
+ if (contains(str, "BeginPreview")) {
+ format = "epsi";
+ count = max_count;
+ }
+ }
+ }
+ lyxerr[Debug::GRAPHICS]
+ << "Recognised Fileformat: " << format << endl;
+ return format;
}
string const ext(GetExtension(filename));
}
+void readBB_lyxerrMessage(string const & file, bool & zipped,
+ string const & message)
+{
+ lyxerr[Debug::GRAPHICS] << "[readBB_from_PSFile] "
+ << message << std::endl;
+ if (zipped)
+ lyx::unlink(file);
+}
+
+
string const readBB_from_PSFile(string const & file)
{
// in a (e)ps-file it's an entry like %%BoundingBox:23 45 321 345
// end of the file. Than we have in the header:
// %%BoundingBox: (atend)
// In this case we must check the end.
- string const file_ = zippedFile(file) ?
+ bool zipped = zippedFile(file);
+ string const file_ = zipped ?
string(unzipFile(file)) : string(file);
string const format = getExtFromContents(file_);
- if (format != "eps" && format != "ps")
+
+ if (format != "eps" && format != "ps") {
+ readBB_lyxerrMessage(file_, zipped,"no(e)ps-format");
return string();
+ }
std::ifstream is(file_.c_str());
while (is) {
string s;
getline(is,s);
- if (contains(s,"%%BoundingBox:") && !contains(s,"atend"))
- return (frontStrip(s.substr(14)));
+ if (contains(s,"%%BoundingBox:") && !contains(s,"atend")) {
+ string const bb = frontStrip(s.substr(14));
+ readBB_lyxerrMessage(file_, zipped, bb);
+ return bb;
+ }
}
+ readBB_lyxerrMessage(file_, zipped, "no bb found");
return string();
}