X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsetgraphics.h;h=51ffe31ca274fdd6106ab0c4ee14c00eb876c089;hb=e28331ed63062dea10d0a21b9ec12034b4b17b9a;hp=7aa5967d37220aac40c167ea10ed71527049629f;hpb=f1c24d100985c6df2eb5ec390017b69c78fe49c7;p=lyx.git diff --git a/src/insets/insetgraphics.h b/src/insets/insetgraphics.h index 7aa5967d37..51ffe31ca2 100644 --- a/src/insets/insetgraphics.h +++ b/src/insets/insetgraphics.h @@ -1,76 +1,60 @@ // -*- C++ -*- -/* This file is part of - * ====================================================== - * - * LyX, The Document Processor - * - * Copyright 1995 Matthias Ettrich - * Copyright 1995-2001 the LyX Team. +/** + * \file insetgraphics.h + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. * * \author Baruch Even - * \author Herbert Voss - * ====================================================== */ + * \author Herbert Voß + * + * Full author contact details are available in file CREDITS. + */ #ifndef INSET_GRAPHICS_H #define INSET_GRAPHICS_H +#include "inset.h" +#include "insetgraphicsParams.h" +#include "mailinset.h" -#ifdef __GNUG__ -#pragma interface -#endif +#include +#include -#include "insets/inset.h" -#include "graphics/GraphicsTypes.h" -#include "insets/insetgraphicsParams.h" -// We need a signal here to hide an active dialog when we are deleted. -#include -#include +namespace lyx { class Dialogs; +class RenderGraphic; class LaTeXFeatures; /// -class InsetGraphics : public Inset, public boost::signals::trackable { +class InsetGraphics : public InsetOld, public boost::signals::trackable { public: /// InsetGraphics(); /// - InsetGraphics(InsetGraphics const &, string const & filepath, - bool same_id = false); - /// ~InsetGraphics(); /// - int ascent(BufferView *, LyXFont const &) const; - /// - int descent(BufferView *, LyXFont const &) const; - /// - int width(BufferView *, LyXFont const &) const; - /// - void draw(BufferView *, LyXFont const &, int, float &, bool) const; - /// - void edit(BufferView *, int, int, mouse_button::state); - /// - void edit(BufferView * bv, bool front = true); + bool metrics(MetricsInfo &, Dimension &) const; /// EDITABLE editable() const; /// - void write(Buffer const *, std::ostream &) const; + void write(Buffer const &, std::ostream &) const; /// - void read(Buffer const *, LyXLex & lex); + void read(Buffer const &, LyXLex & lex); /** returns the number of rows (\n's) of generated tex code. #fragile == true# means, that the inset should take care about fragile commands by adding a #\protect# before. */ - int latex(Buffer const *, std::ostream &, - bool fragile, bool free_spc) const; + int latex(Buffer const &, odocstream &, + OutputParams const &) const; /// - int ascii(Buffer const *, std::ostream &, int linelen) const; + int plaintext(Buffer const &, odocstream &, + OutputParams const &) const; /// - int linuxdoc(Buffer const *, std::ostream &) const; - /// - int docbook(Buffer const *, std::ostream &, bool mixcont) const; + int docbook(Buffer const &, odocstream &, + OutputParams const &) const; /** Tell LyX what the latex features you need i.e. what latex packages you need to be included. @@ -78,59 +62,82 @@ public: void validate(LaTeXFeatures & features) const; /// returns LyX code associated with the inset. Used for TOC, ...) - Inset::Code lyxCode() const { return Inset::GRAPHICS_CODE; } - - /// - virtual Inset * clone(Buffer const &, bool same_id = false) const; + InsetBase::Code lyxCode() const { return InsetBase::GRAPHICS_CODE; } /** Set the inset parameters, used by the GUIndependent dialog. Return true of new params are different from what was so far. */ - bool setParams(InsetGraphicsParams const & params, - string const & filepath); + bool setParams(InsetGraphicsParams const & params); /// Get the inset parameters, used by the GUIndependent dialog. InsetGraphicsParams const & params() const; - - /** This signal is connected by our dialog and called when the inset - is deleted. - */ - boost::signal0 hideDialog; - + /// + void draw(PainterInfo & pi, int x, int y) const; + /// + void edit(LCursor & cur, bool left); + /// + void editGraphics(InsetGraphicsParams const &, Buffer const &) const; + /// + bool getStatus(LCursor &, FuncRequest const &, FuncStatus &) const; +protected: + InsetGraphics(InsetGraphics const &); + /// + virtual void doDispatch(LCursor & cur, FuncRequest & cmd); private: - /// Set the cached variables - void setCache() const; - /// Is the image ready to draw, or should we display a message instead? - bool drawImage() const; + friend class InsetGraphicsMailer; + + virtual std::auto_ptr doClone() const; /// Read the inset native format - void readInsetGraphics(LyXLex & lex); - /// Read the FigInset file format - void readFigInset(LyXLex & lex); + void readInsetGraphics(LyXLex & lex, std::string const & bufpath); - /// Update the inset after parameter change. - void updateInset(string const & filepath) const; /// Get the status message, depends on the image loading status. - string const statusMessage() const; + std::string const statusMessage() const; /// Create the options for the latex command. - string const createLatexOptions() const; + std::string const createLatexOptions() const; + /// Create length values for docbook export. + docstring const toDocbookLength(LyXLength const & len) const; + /// Create the atributes for docbook export. + docstring const createDocBookAttributes() const; /// Convert the file if needed, and return the location of the file. - string const prepareFile(Buffer const * buf) const; + std::string const prepareFile(Buffer const & buf, OutputParams const &) const; /// InsetGraphicsParams params_; /// holds the entity name that defines the graphics location (SGML). - string const graphic_label; + docstring const graphic_label; + + /// The thing that actually draws the image on LyX's screen. + boost::scoped_ptr const graphic_; +}; + - /// The cached variables - mutable grfx::ImageStatus cached_status_; +class InsetGraphicsMailer : public MailInset { +public: + /// + InsetGraphicsMailer(InsetGraphics & inset); + /// + virtual InsetBase & inset() const { return inset_; } /// - mutable grfx::ImagePtr cached_image_; + virtual std::string const & name() const { return name_; } /// - mutable bool cache_filled_; + virtual std::string const inset2string(Buffer const &) const; /// - mutable int old_asc; + static void string2params(std::string const & data, + Buffer const & buffer, + InsetGraphicsParams &); + /// + static std::string const params2string(InsetGraphicsParams const &, + Buffer const &); +private: + /// + static std::string const name_; + /// + InsetGraphics & inset_; }; + +} // namespace lyx + #endif