3 * \file insetgraphics.h
4 * This file is part of LyX, the document processor.
5 * Licence details can be found in the file COPYING.
10 * Full author contact details are available in file CREDITS
13 #ifndef INSET_GRAPHICS_H
14 #define INSET_GRAPHICS_H
16 #include "insets/inset.h"
17 #include "insets/insetgraphicsParams.h"
19 #include <boost/signals/trackable.hpp>
20 #include <boost/scoped_ptr.hpp>
26 class InsetGraphics : public Inset, public boost::signals::trackable {
31 InsetGraphics(InsetGraphics const &, string const & filepath);
35 virtual dispatch_result localDispatch(FuncRequest const & cmd);
37 void dimension(BufferView *, LyXFont const &, Dimension &) const;
39 void draw(PainterInfo & pi, int x, int y) const;
41 EDITABLE editable() const;
43 void write(Buffer const *, std::ostream &) const;
45 void read(Buffer const *, LyXLex & lex);
47 /** returns the number of rows (\n's) of generated tex code.
48 #fragile == true# means, that the inset should take care about
49 fragile commands by adding a #\protect# before.
51 int latex(Buffer const *, std::ostream &,
52 LatexRunParams const &) const;
54 int ascii(Buffer const *, std::ostream &, int linelen) const;
56 int linuxdoc(Buffer const *, std::ostream &) const;
58 int docbook(Buffer const *, std::ostream &, bool mixcont) const;
60 /** Tell LyX what the latex features you need i.e. what latex packages
61 you need to be included.
63 void validate(LaTeXFeatures & features) const;
65 /// returns LyX code associated with the inset. Used for TOC, ...)
66 Inset::Code lyxCode() const { return Inset::GRAPHICS_CODE; }
69 virtual Inset * clone(Buffer const &) const;
71 /** Set the inset parameters, used by the GUIndependent dialog.
72 Return true of new params are different from what was so far.
74 bool setParams(InsetGraphicsParams const & params,
75 string const & filepath);
77 /// Get the inset parameters, used by the GUIndependent dialog.
78 InsetGraphicsParams const & params() const;
81 /// Returns the cached BufferView.
82 BufferView * view() const;
85 friend class InsetGraphicsMailer;
87 /// Is the image ready to draw, or should we display a message instead?
88 bool imageIsDrawable() const;
90 /** This method is connected to cache_->statusChanged, so we are
91 informed when the image has been loaded.
95 /// Read the inset native format
96 void readInsetGraphics(LyXLex & lex);
98 /// Get the status message, depends on the image loading status.
99 string const statusMessage() const;
100 /// Create the options for the latex command.
101 string const createLatexOptions() const;
102 /// Convert the file if needed, and return the location of the file.
103 string const prepareFile(Buffer const * buf, LatexRunParams const &) const;
106 InsetGraphicsParams params_;
108 /// holds the entity name that defines the graphics location (SGML).
109 string const graphic_label;
111 /// The cached variables
114 /// The pointer never changes although *cache_'s contents may.
115 boost::scoped_ptr<Cache> const cache_;
119 #include "mailinset.h"
121 class InsetGraphicsMailer : public MailInset {
124 InsetGraphicsMailer(InsetGraphics & inset);
126 virtual InsetBase & inset() const { return inset_; }
128 virtual string const & name() const { return name_; }
130 virtual string const inset2string() const;
132 static void string2params(string const &, InsetGraphicsParams &);
134 static string const params2string(InsetGraphicsParams const &);
137 static string const name_;
139 InsetGraphics & inset_;