X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsetgraphics.h;h=ac380bffc46564d9f8b3fb5dd26c4139161a7f67;hb=4a5b7a5952ad2381fcdf4830511293e184c7c5a1;hp=daf926c07925ccf3dee8c5794f814f0bf1469898;hpb=77e706c44175f3cf71473a42d5db890c77b3b7b3;p=lyx.git diff --git a/src/insets/insetgraphics.h b/src/insets/insetgraphics.h index daf926c079..ac380bffc4 100644 --- a/src/insets/insetgraphics.h +++ b/src/insets/insetgraphics.h @@ -5,170 +5,122 @@ * LyX, The Document Processor * * Copyright 1995 Matthias Ettrich - * Copyright 1995-2000 the LyX Team. + * Copyright 1995-2001 the LyX Team. * + * \author Baruch Even + * \author Herbert Voss * ====================================================== */ #ifndef INSET_GRAPHICS_H #define INSET_GRAPHICS_H + #ifdef __GNUG__ #pragma interface -#endif +#endif + +#include "insets/inset.h" +#include "insets/insetgraphicsParams.h" +#include "graphics/GraphicsCacheItem.h" +#include -#include "insets/lyxinset.h" #include "LaTeXFeatures.h" -#include "vspace.h" -#include "insets/BoundingBox.h" -struct FD_Graphics; +// We need a signal here to hide an active dialog when we are deleted. +#include "sigc++/signal_system.h" + +class Dialogs; +class LyXImage; /// -class InsetGraphics : public Inset { +class InsetGraphics : public Inset, public SigC::Object { public: /// InsetGraphics(); /// - int ascent(Painter &, LyXFont const &) const; + InsetGraphics(InsetGraphics const &, bool same_id = false); + /// + ~InsetGraphics(); + /// + int ascent(BufferView *, LyXFont const &) const; /// - int descent(Painter &, LyXFont const &) const; + int descent(BufferView *, LyXFont const &) const; /// - int width(Painter &, LyXFont const &) const; + int width(BufferView *, LyXFont const &) const; /// - void draw(Painter &, LyXFont const &, - int baseline, float & x) const; + bool display() const { return true; } /// - void Edit(BufferView *, int, int, unsigned int); + void draw(BufferView *, LyXFont const &, int, float &, bool) const; /// - EDITABLE Editable() const; + void edit(BufferView *, int, int, unsigned int); /// - void Write(std::ostream &) const; + void edit(BufferView * bv, bool front = true); /// - void Read(LyXLex & lex); + EDITABLE editable() const; + /// + void write(Buffer const *, std::ostream &) const; + /// + void read(Buffer const *, LyXLex & lex); + /** returns the number of rows (\n's) of generated tex code. - fragile != 0 means, that the inset should take care about - fragile commands by adding a \protect before. + #fragile == true# means, that the inset should take care about + fragile commands by adding a #\protect# before. */ - int Latex(std::ostream &, signed char fragile, bool free_spc) const; + int latex(Buffer const *, std::ostream &, + bool fragile, bool free_spc) const; /// - int Linuxdoc(std::ostream &) const; + int ascii(Buffer const *, std::ostream &, int linelen) const; /// - int DocBook(std::ostream &) const; + int linuxdoc(Buffer const *, std::ostream &) const; + /// + int docbook(Buffer const *, std::ostream &) const; - /// Updates needed features for this inset. - void Validate(LaTeXFeatures & features) const; + /** Tell LyX what the latex features you need i.e. what latex packages + you need to be included. + */ + void validate(LaTeXFeatures & features) const; /// returns LyX code associated with the inset. Used for TOC, ...) - Inset::Code LyxCode() const { return Inset::GRAPHICS_CODE; } - - /// - Inset * Clone() const; - /// Set the graphics file - void graphicsFile(string const & f) { - graphicsfile = f; - } - /// Get the graphics file - string const & graphicsFile() const { - return graphicsfile; - } -private: - /// - FD_Graphics * form; - /// - string graphicsfile; + Inset::Code lyxCode() const { return Inset::GRAPHICS_CODE; } + /// - Pixmap pixmap; - - // We need variables to store the size of the boundingbox and - // to store a pointer to the pixmap in.. The question is if - // these should be in a "pixmap" class. - // We also need to have variables about rotation and scaling, - // width and height. in effect all the paramters that - // \includegrapichs can handle. (the graphix.sty package) - - /** The "bounding box" of the graphics image. Its value field - must contain four dimensions, separated by spaces. */ - BoundingBox bb; - /** The bounding box above is used for display and file both. - But we need this variable below to know if we shall use the - bounding box in the LaTex command or not. (i.e. if the user - has manually set the bb.) */ - bool use_bb; + virtual Inset * clone(Buffer const &, bool same_id = false) const; + + /** 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); + + /// Get the inset parameters, used by the GUIndependent dialog. + InsetGraphicsParams getParams() const; + + /** This signal is connected by our dialog and called when the inset + is deleted. + */ + SigC::Signal0 hideDialog; + +private: + /// Read the inset native format + void readInsetGraphics(Buffer const * buf, LyXLex & lex); + /// Read the FigInset file format + void readFigInset(Buffer const * buf, LyXLex & lex); - /** When a graphics file is parsed we first check for BoundingBox - and then for HiResBoundingBox, and set hiresbb depending on this. - This key makes LaTeX search for %%HiResBoundingBox comments - instead of the normal %%BoundingBox. Some applications use - this to specify more precise bounding boxes, becase the cumbers - can normally only have integer values. It is a Boolean, either - "true" or "false". */ - bool hiresbb; - /** This key takes four arguments (like bb), but in this case the - origin is taken with respect to the bounding box specified in - the file. So to view a 20 bp square at the lower left-hand corner - of the picture, specify viewport=0 0 20 20. */ - BoundingBox viewport; - /** Similar to the viewport key, but the four dimensions correspond - to the amount of space to be trimmed (cut off) at the left-hand - side, bottom, right-hand side and top of the included graphics. */ - BoundingBox trim; - /// Natural height of figure - LyXLength natheight; - /// Natural width of figure. - LyXLength natwidth; - /// Rotation angle (in degrees, counterclockwise). - float angle; - /// This is the different origins that the graphicx package support. - enum Origin { - DEFAULT, - LEFTTOP, - LEFTCENTER, - LEFTBASELINE, - LEFTBOTTOM, - CENTERTOP, - CENTER, - CENTERBASELINE, - CENTERBOTTOM, - RIGHTTOP, - RIGHTCENTER, - RIGHTBASELINE, - RIGHTBOTTOM, - REFERENCE_POINT = LEFTBASELINE - }; - /** Origin for rotation, similar to the origin parameter of - the \rotatebox command described on p.46 and Fig. 2.2 on p.46. */ - Origin origin; - /// Required width (the width of the image is scaled to that value). - LyXLength g_width; - /// Required height (the height of the image is scaled to that value). - LyXLength g_height; - /** Required total height (the total height of the image is scaled - to that value). This key should be used instead of height if - images are rotated over 90 degrees, since the height can - disappear (and become the depth) and LaTeX will have difficulties - satisfying the user's request. */ - LyXLength totalheight; - /** Boolean variable that can have the values "true" and "false" - (se above for defaults). When true, specifying both width and - height parameters does not distort the picture, but the image - is scaled so that neither of the width of height exceeds the - given dimensions. */ - bool keepaspectratio; - /// Scale factor - float scale; - /** Clip the graphic to the bounding box. It is a Boolean, either - "true" or "false". */ - bool clip; - /// Locally switch to draft mode. A Boolean valued key, like clip. - bool draft; - /// The graphics type. - string type; - ///x The file extension of the file containing the image data. - string ext; - /// The file extension of the file "read" by LaTeX. - string read; - /// Any command to be applied to the file. - string command; + /// Update the inset after parameter change. + void updateInset() const; + /// Get the status message, depends on the image loading status. + string const statusMessage() const; + /// Create the options for the latex command. + string const createLatexOptions() const; + /// Convert the file if needed, and return the location of the file. + string const prepareFile(Buffer const * buf) const; + /// The graphics cache handle. + mutable boost::shared_ptr cacheHandle; + /// is the pixmap initialized? + mutable bool imageLoaded; + /// the parameters + InsetGraphicsParams params; + /// holds the entity name that defines the graphics location (SGML). + string const graphic_label; }; -#endif +#endif