From 8f197420a2f8e0ac099b59bf3e2e33675a5b033e Mon Sep 17 00:00:00 2001 From: Angus Leeming Date: Mon, 4 Mar 2002 10:37:25 +0000 Subject: [PATCH] Herbert's upgrade to the recognized graphics formats. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@3652 a592a061-630c-0410-9148-cb99ea01b6c8 --- lib/ChangeLog | 4 ++ lib/configure | 7 +- lib/configure.m4 | 7 +- src/support/ChangeLog | 5 ++ src/support/filetools.C | 149 +++++++++++++++++++++------------------- 5 files changed, 101 insertions(+), 71 deletions(-) diff --git a/lib/ChangeLog b/lib/ChangeLog index 3b7b5582eb..66a86758d6 100644 --- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,3 +1,7 @@ +2002-03-03 Herbert Voss + + * configure.m4: added more converter stuff for different formats + 2002-03-03 Lars Gullik Bjønnes * layouts/hollywood.layout: set DefaultStyle diff --git a/lib/configure b/lib/configure index 95476d60f2..6c95c01a68 100755 --- a/lib/configure +++ b/lib/configure @@ -1088,7 +1088,7 @@ if test -z "$TOEPS" ; then fi 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" xwd_to_eps="convert XWD:\$\$i EPS:\$\$o" ;; + 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" ;; pnmtops) gif_to_eps="giftopnm \$\$i | pnmtops > \$\$o" png_to_eps="pngtopnm \$\$i | pnmtops >\$\$o" jpg_to_eps="jpegtopnm \$\$i | pnmtops >\$\$o";; esac @@ -1171,6 +1171,7 @@ if test "$TOXPM" = "convert"; then 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 echo $ac_n "checking For an EPS -> PDF converter""... $ac_c" @@ -1322,6 +1323,7 @@ cat >$outfile <$outfile < \$\$o" "" +\\converter xbm eps "$xbm_to_eps" "" \\converter xwd eps "$xwd_to_eps" "" \\converter tgif gif "tgif -print -gif \$\$i" "" @@ -1373,6 +1376,8 @@ cat >$outfile < 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" xwd_to_eps="convert XWD:\$\$i EPS:\$\$o" ;; + 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" ;; pnmtops) gif_to_eps="giftopnm \$\$i | pnmtops > \$\$o" png_to_eps="pngtopnm \$\$i | pnmtops >\$\$o" jpg_to_eps="jpegtopnm \$\$i | pnmtops >\$\$o";; esac @@ -372,6 +372,7 @@ if test "$TOXPM" = "convert"; then 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) @@ -478,6 +479,7 @@ cat >$outfile <$outfile < \$\$o" "" +\\converter xbm eps "$xbm_to_eps" "" \\converter xwd eps "$xwd_to_eps" "" \\converter tgif gif "tgif -print -gif \$\$i" "" @@ -529,6 +532,8 @@ cat >$outfile < + + * filetools.C: fix bug for xbm format and added some more debug + infos + 2002-03-02 Lars Gullik Bjønnes * forkedcontr.h: make constructor public diff --git a/src/support/filetools.C b/src/support/filetools.C index 4018d63300..a593833e93 100644 --- a/src/support/filetools.C +++ b/src/support/filetools.C @@ -981,15 +981,15 @@ string const GetExtension(string const & name) // SGI \001\332... (decimal 474) // TGIF %TGIF... // TIFF II... or MM... -// XBM ... static char ... +// XBM ..._bits[]... // XPM /* XPM */ -// XWD \000\000\000\151 (0x00006900) +// XWD \000\000\000\151 (0x00006900) decimal 105 // // GZIP \037\213\010\010... http://www.ietf.org/rfc/rfc1952.txt // ZIP PK... http://www.halyava.ru/document/ind_arch.htm // Z \037\177 UNIX compress -/// return the "extension" which belongs to the contents +/// return the "extension" which belongs to the contents. /// for no knowing contents return the extension. Without /// an extension and unknown contents we return "user" string const getExtFromContents(string const & filename) { @@ -1013,10 +1013,11 @@ string const getExtFromContents(string const & filename) { // Maximum strings to read int const max_count = 50; + int count = 0; - string str; + string str, format; bool firstLine = true; - for (int count = 0; count < max_count; ++count) { + while ((count++ < max_count) && format.empty()) { if (ifs.eof()) { lyxerr[Debug::GRAPHICS] << "filetools(getExtFromContents)\n" @@ -1026,110 +1027,120 @@ string const getExtFromContents(string const & filename) { } ifs >> str; + lyxerr[Debug::GRAPHICS] + << "Scanstring: " << str << endl; + string const stamp = str.substr(0,2); if (firstLine && str.size() >= 2) { // at first we check for a zipped file, because this // information is saved in the first bytes of the file! // also some graphic formats which save the information // in the first line, too. if (prefixIs(str, gzipStamp)) - return "gzip"; + format = "gzip"; - string const stamp = str.substr(0,2); + else if (stamp == zipStamp) + format = "zip"; - if (stamp == zipStamp) - return "zip"; - - if (stamp == compressStamp) - return "compress"; + else if (stamp == compressStamp) + format = "compress"; // the graphics part - if (stamp == "BM") - return "bmp"; - - if (stamp == "\001\332") - return "sgi"; - - if ((stamp == "II") || (stamp == "MM")) - return "tiff"; + else if (stamp == "BM") + format = "bmp"; + else if (stamp == "\001\332") + format = "sgi"; // PBM family - // Dont need to use str.at(0), str.at(1) because + // Don't need to use str.at(0), str.at(1) because // we already know that str.size() >= 2 - if (str[0] == 'P') { + else if (str[0] == 'P') { switch (str[1]) { case '1': case '4': - return "pbm"; - + format = "pbm"; + break; case '2': case '5': - return "pgm"; - + format = "pgm"; + break; case '3': case '6': - return "ppm"; + format = "ppm"; } - } - - if (prefixIs(str, "GIF")) - return "gif"; - - // prefixIs doesn't seem happy with this - if (str.size() >= 4 && - str.substr(0,4) == "\000\000\000i") - return "xwd"; + break; + } + if (stamp == "\001\332") + format = "sgi"; + else if ((stamp == "II") || (stamp == "MM")) + format = "tiff"; + else if (str == "%TGIF") + format = "tgif"; + else if (prefixIs(str,"GIF")) + format = "gif"; + else if (str.size() > 3) // get long + if (((str[0] << 24) + (str[1] << 16) + + (str[2] << 8) + str[3]) == 105) + format = "xwd"; + firstLine = false; } - - firstLine = false; - - if (contains(str,"EPSF")) + if (!format.empty()) + break; + else if (contains(str,"EPSF")) // dummy, if we have wrong file description like // description like "%!PS-Adobe-2.0EPSF" - return "eps"; + format = "eps"; - if (contains(str,"TGIF")) - return "tgif"; + else if (contains(str,"Grace")) + format = "agr"; - if (contains(str,"Grace")) - return "agr"; + else if (contains(str,"JFIF")) + format = "jpg"; - if (contains(str,"JFIF")) - return "jpg"; + else if (contains(str,"%PDF")) + format = "pdf"; - if (contains(str,"%PDF")) - return "pdf"; + else if (contains(str,"PNG")) + format = "png"; - if (contains(str,"PNG")) - return "png"; - - if (contains(str,"%!PS-Adobe")) { + else if (contains(str,"%!PS-Adobe")) { // eps or ps ifs >> str; if (contains(str,"EPSF")) - return "eps"; - return "ps"; + format = "eps"; + else + format = "ps"; } - if (contains(str,"static char")) - return "xbm"; + else if (contains(str,"_bits[]")) + format = "xbm"; - if (contains(str,"XPM")) - return "xpm"; + else if (contains(str,"XPM")) + format = "xpm"; - if (contains(str,"BITPIX")) - return "fits"; + else if (contains(str,"BITPIX")) + format = "fits"; } - + + if (!format.empty()) { + lyxerr[Debug::GRAPHICS] + << "Recognised Fileformat: " << format << endl; + return format; + } + + string const ext(GetExtension(filename)); lyxerr[Debug::GRAPHICS] << "filetools(getExtFromContents)\n" - << "\tCouldn't find a known Type!" - << "\twill use ext or a \"user\" defined format" << endl; - - string const ext(GetExtension(filename)); - if (!ext.empty()) + << "\tCouldn't find a known Type!\n"; + if (!ext.empty()) { + lyxerr[Debug::GRAPHICS] + << "\twill take the file extension -> " + << ext << endl; return ext; - - return "user"; + } else { + lyxerr[Debug::GRAPHICS] + << "\twill use ext or a \"user\" defined format" << endl; + return "user"; + } }