mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-10 20:04:46 +00:00
Changed to use the Converter class instead of hardcoding ImageMagick.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@1874 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
0a736a817a
commit
2f20425459
@ -1,3 +1,8 @@
|
|||||||
|
2001-04-02 Baruch Even <baruch@lyx.org>
|
||||||
|
|
||||||
|
* GraphicsCacheItem.[Ch]: Changed to used the Converter class instead
|
||||||
|
of hard coding ImageMagick.
|
||||||
|
|
||||||
2001-03-10 Baruch Even <baruch@lyx.org>
|
2001-03-10 Baruch Even <baruch@lyx.org>
|
||||||
|
|
||||||
* GraphicsCache.C: Style change from (*it).field to it->field
|
* GraphicsCache.C: Style change from (*it).field to it->field
|
||||||
|
@ -19,11 +19,13 @@
|
|||||||
#include "graphics/GraphicsCacheItem.h"
|
#include "graphics/GraphicsCacheItem.h"
|
||||||
#include "frontends/support/LyXImage.h"
|
#include "frontends/support/LyXImage.h"
|
||||||
#include "graphics/ImageLoaderXPM.h"
|
#include "graphics/ImageLoaderXPM.h"
|
||||||
|
#include "converter.h"
|
||||||
#include "support/filetools.h"
|
#include "support/filetools.h"
|
||||||
#include "support/lyxlib.h"
|
#include "support/lyxlib.h"
|
||||||
#include "support/syscall.h"
|
#include "lyx_gui_misc.h"
|
||||||
|
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
|
#include "support/LAssert.h"
|
||||||
|
#include "gettext.h"
|
||||||
|
|
||||||
using std::endl;
|
using std::endl;
|
||||||
|
|
||||||
@ -32,9 +34,12 @@ GraphicsCacheItem::GraphicsCacheItem(string const & filename)
|
|||||||
{
|
{
|
||||||
filename_ = filename;
|
filename_ = filename;
|
||||||
|
|
||||||
renderXPM(filename);
|
bool success = convertImage(filename);
|
||||||
// For now we do it synchronously
|
// For now we do it synchronously
|
||||||
imageConverted(0);
|
if (success)
|
||||||
|
imageConverted(0);
|
||||||
|
else
|
||||||
|
imageStatus_ = ErrorConverting;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -62,37 +67,64 @@ GraphicsCacheItem::imageConverted(int retval)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do the actual image loading from XPM to memory.
|
// Do the actual image loading from file to memory.
|
||||||
loadXPMImage();
|
loadImage();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool
|
namespace {
|
||||||
GraphicsCacheItem::renderXPM(string const & filename)
|
string const findTargetFormat(string const & from)
|
||||||
{
|
{
|
||||||
// Create the command to do the conversion, this depends on ImageMagicks
|
typedef ImageLoader::FormatList FormatList;
|
||||||
// convert program.
|
FormatList formats = ImageLoaderXPM().loadableFormats();
|
||||||
string command = "convert ";
|
Assert(formats.size() > 0); // There must be a format to load from.
|
||||||
command += filename;
|
|
||||||
command += " XPM:";
|
FormatList::const_iterator iter = formats.begin();
|
||||||
|
FormatList::const_iterator end = formats.end();
|
||||||
|
|
||||||
|
for (; iter != end; ++iter) {
|
||||||
|
if (converters.IsReachable(from, *iter))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (iter == end) {
|
||||||
|
// We do not know how to convert the image to something loadable.
|
||||||
|
lyxerr << "ERROR: Do not know how to convert image." << std::endl;
|
||||||
|
|
||||||
|
string const first(_("Cannot convert image to display format"));
|
||||||
|
string const second1(_("Need converter from "));
|
||||||
|
string const second2(_(" to "));
|
||||||
|
string const second(second1 + from + second2 + formats[0]);
|
||||||
|
|
||||||
|
WriteAlert(first, second);
|
||||||
|
|
||||||
|
return string();
|
||||||
|
}
|
||||||
|
|
||||||
|
return (*iter);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // anon namespace
|
||||||
|
|
||||||
|
|
||||||
|
bool
|
||||||
|
GraphicsCacheItem::convertImage(string const & filename)
|
||||||
|
{
|
||||||
|
string const from = GetExtension(filename);
|
||||||
|
string const to = findTargetFormat(from);
|
||||||
|
if (to.empty())
|
||||||
|
return false;
|
||||||
|
|
||||||
// Take only the filename part of the file, without path or extension.
|
// Take only the filename part of the file, without path or extension.
|
||||||
string temp = OnlyFilename(filename);
|
string temp = OnlyFilename(filename);
|
||||||
temp = ChangeExtension(filename, string());
|
temp = ChangeExtension(filename, string());
|
||||||
|
|
||||||
// Add some stuff to have it a unique temp file.
|
// Add some stuff to have it a unique temp file.
|
||||||
// This tempfile is deleted in loadXPMImage after it is loaded to memory.
|
// This tempfile is deleted in loadImage after it is loaded to memory.
|
||||||
tempfile = lyx::tempName(string(), temp);
|
tempfile = lyx::tempName(string(), temp);
|
||||||
// Remove the temp file, we only want the name...
|
// Remove the temp file, we only want the name...
|
||||||
lyx::unlink(tempfile);
|
lyx::unlink(tempfile);
|
||||||
tempfile = ChangeExtension(tempfile, ".xpm");
|
|
||||||
|
|
||||||
command += tempfile;
|
converters.Convert(0, filename, tempfile, from, to);
|
||||||
|
|
||||||
// Run the convertor.
|
|
||||||
lyxerr << "Launching convert to xpm, command=" << command << endl;
|
|
||||||
Systemcalls syscall;
|
|
||||||
syscall.startscript(Systemcalls::Wait, command);
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -101,7 +133,7 @@ GraphicsCacheItem::renderXPM(string const & filename)
|
|||||||
// This function gets called from the callback after the image has been
|
// This function gets called from the callback after the image has been
|
||||||
// converted successfully.
|
// converted successfully.
|
||||||
void
|
void
|
||||||
GraphicsCacheItem::loadXPMImage()
|
GraphicsCacheItem::loadImage()
|
||||||
{
|
{
|
||||||
lyxerr << "Loading XPM Image... ";
|
lyxerr << "Loading XPM Image... ";
|
||||||
|
|
||||||
|
@ -61,8 +61,8 @@ public:
|
|||||||
void imageConverted(int retval);
|
void imageConverted(int retval);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool renderXPM(string const & filename);
|
bool convertImage(string const & filename);
|
||||||
void loadXPMImage();
|
void loadImage();
|
||||||
|
|
||||||
/** The filename we refer too.
|
/** The filename we refer too.
|
||||||
This is used when removing ourselves from the cache.
|
This is used when removing ourselves from the cache.
|
||||||
|
Loading…
Reference in New Issue
Block a user