#include "insets/insetgraphics.h"
#include "insets/insetgraphicsParams.h"
-#include "insets/graphicinset.h"
+#include "insets/renderers.h"
#include "buffer.h"
#include "BufferView.h"
#include <algorithm> // For the std::max
-extern string system_tempdir;
// set by Exporters
+using namespace lyx::support;
+
using std::ostream;
using std::endl;
+using std::auto_ptr;
namespace {
InsetGraphics::InsetGraphics()
: graphic_label(uniqueID()),
- graphic_(new GraphicInset)
+ graphic_(new GraphicRenderer)
{
graphic_->connect(boost::bind(&InsetGraphics::statusChanged, this));
}
InsetGraphics::InsetGraphics(InsetGraphics const & ig)
- : Inset(ig),
+ : InsetOld(ig),
boost::signals::trackable(),
graphic_label(uniqueID()),
- graphic_(new GraphicInset(*ig.graphic_))
+ graphic_(new GraphicRenderer(*ig.graphic_))
{
graphic_->connect(boost::bind(&InsetGraphics::statusChanged, this));
setParams(ig.params());
}
-Inset * InsetGraphics::clone() const
+auto_ptr<InsetBase> InsetGraphics::clone() const
{
- return new InsetGraphics(*this);
+ return auto_ptr<InsetBase>(new InsetGraphics(*this));
}
if (bv)
bv->updateInset(this);
}
-
+
dispatch_result InsetGraphics::localDispatch(FuncRequest const & cmd)
{
switch (cmd.action) {
case LFUN_INSET_MODIFY: {
+ Buffer const & buffer = *cmd.view()->buffer();
InsetGraphicsParams p;
- InsetGraphicsMailer::string2params(cmd.argument, p);
+ InsetGraphicsMailer::string2params(cmd.argument, buffer, p);
if (!p.filename.empty()) {
setParams(p);
cmd.view()->updateInset(this);
return DISPATCHED;
default:
- return Inset::localDispatch(cmd);
+ return InsetOld::localDispatch(cmd);
}
}
void InsetGraphics::metrics(MetricsInfo & mi, Dimension & dim) const
{
graphic_->metrics(mi, dim);
+ dim_ = dim;
}
}
-Inset::EDITABLE InsetGraphics::editable() const
+InsetOld::EDITABLE InsetGraphics::editable() const
{
return IS_EDITABLE;
}
options << " draft,\n";
if (params().clip)
options << " clip,\n";
- if (!lyx::float_equal(params().scale, 0.0, 0.05)) {
- if (!lyx::float_equal(params().scale, 100.0, 0.05))
+ if (!float_equal(params().scale, 0.0, 0.05)) {
+ if (!float_equal(params().scale, 100.0, 0.05))
options << " scale=" << params().scale / 100.0
<< ",\n";
} else {
// Make sure rotation angle is not very close to zero;
// a float can be effectively zero but not exactly zero.
- if (!lyx::float_equal(params().rotateAngle, 0, 0.001)) {
+ if (!float_equal(params().rotateAngle, 0, 0.001)) {
options << " angle=" << params().rotateAngle << ",\n";
if (!params().rotateOrigin.empty()) {
options << " origin=" << params().rotateOrigin[0];
{
// LaTeX can cope if the graphics file doesn't exist, so just return the
// filename.
- string orig_file = params().filename;
- string const rel_file = MakeRelPath(orig_file, buf->filePath());
+ string orig_file = params().filename.absFilename();
+ string const rel_file = params().filename.relFilename(buf->filePath());
- if (!IsFileReadable(rel_file))
+ if (!IsFileReadable(orig_file)) {
+ lyxerr[Debug::GRAPHICS]
+ << "InsetGraphics::prepareFile\n"
+ << "No file '" << orig_file << "' can be found!" << endl;
return rel_file;
+ }
bool const zipped = zippedFile(orig_file);
temp_file = MakeAbsPath(OnlyFilename(temp_file), buf->tmppath);
lyxerr[Debug::GRAPHICS]
<< "\ttemp_file: " << temp_file << endl;
- if (graphic_->hasFileChanged() || !IsFileReadable(temp_file)) {
- bool const success = lyx::copy(orig_file, temp_file);
+ if (graphic_->hasFileChanged() || !IsFileReadable(temp_file)) {
+ bool const success = copy(orig_file, temp_file);
lyxerr[Debug::GRAPHICS]
<< "\tCopying zipped file from "
<< orig_file << " to " << temp_file
<< "\tthe orig file is: " << orig_file << endl;
if (lyxrc.use_tempdir) {
- temp_file = copyFileToDir(buf->tmppath, orig_file);
+ temp_file = copyFileToDir(buf->tmppath, orig_file);
if (temp_file.empty()) {
string str = bformat(_("Could not copy the file\n%1$s\n"
"into the temporary directory."),
orig_file);
Alert::error(_("Graphics display failed"), str);
return orig_file;
- }
+ }
if (from == to) {
// No conversion is needed. LaTeX can handle the
// just output a message about it in the latex output.
lyxerr[Debug::GRAPHICS]
<< "insetgraphics::latex: Filename = "
- << params().filename << endl;
+ << params().filename.absFilename() << endl;
- string const relative_file = MakeRelPath(params().filename, buf->filePath());
+ string const relative_file =
+ params().filename.relFilename(buf->filePath());
// A missing (e)ps-extension is no problem for LaTeX, so
// we have to test three different cases
#warning uh, but can our cache handle it ? no.
- string const file_ = params().filename;
+ string const file_ = params().filename.absFilename();
bool const file_exists =
!file_.empty() &&
(IsFileReadable(file_) || // original
(before + '{' + relative_file + " not found!}" + after);
os << latex_str;
+ 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') + 1);
}
// 1. Convert file to ascii using gifscii
// 2. Read ascii output file and add it to the output stream.
// at least we send the filename
- os << '<' << bformat(_("Graphics file: %1$s"), params().filename) << ">\n";
+ os << '<' << bformat(_("Graphics file: %1$s"),
+ params().filename.absFilename()) << ">\n";
return 0;
}
-int InsetGraphics::linuxdoc(Buffer const *, ostream &) const
+int InsetGraphics::linuxdoc(Buffer const * buf, ostream & os) const
{
- // No graphics in LinuxDoc output. Should check how/what to add.
+ string const file_name = buf->niceFile ?
+ params().filename.relFilename(buf->filePath()):
+ params().filename.absFilename();
+
+ os << "<eps file=\"" << file_name << "\">\n";
+ os << "<img src=\"" << file_name << "\">";
return 0;
}
// For explanation on inserting graphics into DocBook checkout:
-// http://linuxdoc.org/LDP/LDP-Author-Guide/inserting-pictures.html
+// http://en.tldp.org/LDP/LDP-Author-Guide/inserting-pictures.html
// See also the docbook guide at http://www.docbook.org/
int InsetGraphics::docbook(Buffer const *, ostream & os,
bool /*mixcont*/) const
if (params().filename.empty())
return;
- features.includeFile(graphic_label, RemoveExtension(params().filename));
+ features.includeFile(graphic_label,
+ RemoveExtension(params().filename.absFilename()));
features.require("graphicx");
// Copy the new parameters.
params_ = p;
- // Update the display using the new parameters.
- graphic_->update(params().as_grfxParams());
+ // Update the display using the new parameters.
+ graphic_->update(params().as_grfxParams());
// We have changed data, report it.
return true;
{}
-string const InsetGraphicsMailer::inset2string() const
+string const InsetGraphicsMailer::inset2string(Buffer const & buffer) const
{
- return params2string(inset_.params());
+ return params2string(inset_.params(), buffer);
}
void InsetGraphicsMailer::string2params(string const & in,
+ Buffer const & buffer,
InsetGraphicsParams & params)
{
params = InsetGraphicsParams();
if (lex.isOK()) {
InsetGraphics inset;
-#warning FIXME not setting bufpath is dubious
- inset.readInsetGraphics(lex, string());
+ inset.readInsetGraphics(lex, buffer.filePath());
params = inset.params();
}
}
string const
-InsetGraphicsMailer::params2string(InsetGraphicsParams const & params)
+InsetGraphicsMailer::params2string(InsetGraphicsParams const & params,
+ Buffer const & buffer)
{
ostringstream data;
data << name_ << ' ';
-#warning FIXME not setting bufpath is dubious
- params.Write(data, string());
+ params.Write(data, buffer.filePath());
data << "\\end_inset\n";
return STRCONV(data.str());
}