lyx_mirror/src/insets/InsetGraphics.h
Richard Heck 451e926b84 Restore XHTML output for InsetGraphics.
To make this really good, we'd want to be able to rotate, crop, etc, the
images, as well as convert them to suitable output formats. This should
not be too difficult, since we do this sort of thing for display,
anyway. But I don't myself know how to do it. Anyone?


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@32295 a592a061-630c-0410-9148-cb99ea01b6c8
2009-12-03 19:52:46 +00:00

152 lines
4.5 KiB
C++

// -*- C++ -*-
/**
* \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 Voß
*
* Full author contact details are available in file CREDITS.
*/
#ifndef INSET_GRAPHICS_H
#define INSET_GRAPHICS_H
#include <set>
#include "Inset.h"
#include "InsetGraphicsParams.h"
namespace lyx {
class RenderGraphic;
class LaTeXFeatures;
/////////////////////////////////////////////////////////////////////////
//
// InsetGraphics
//
/////////////////////////////////////////////////////////////////////////
/// Used for images etc.
class InsetGraphics : public Inset
{
public:
///
InsetGraphics(Buffer * buf);
///
~InsetGraphics();
///
static void string2params(std::string const & data,
Buffer const & buffer,
InsetGraphicsParams &);
///
static std::string params2string(InsetGraphicsParams const &,
Buffer 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);
InsetGraphicsParams getParams() const { return params_;}
private:
///
InsetGraphics(InsetGraphics const &);
///
bool isLabeled() const { return true; }
void metrics(MetricsInfo &, Dimension &) const;
///
bool hasSettings() const { return true; }
///
void write(std::ostream &) const;
///
void read(Lexer & 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(odocstream &, OutputParams const &) const;
///
int plaintext(odocstream &, OutputParams const &) const;
///
int docbook(odocstream &, OutputParams const &) const;
///
docstring xhtml(XHTMLStream & os, OutputParams const &) 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, ...)
InsetCode lyxCode() const { return GRAPHICS_CODE; }
/// Get the inset parameters, used by the GUIndependent dialog.
InsetGraphicsParams const & params() const;
///
void draw(PainterInfo & pi, int x, int y) const;
///
bool showInsetDialog(BufferView * bv) const;
///
void editGraphics(InsetGraphicsParams const &) const;
///
bool getStatus(Cursor &, FuncRequest const &, FuncStatus &) const;
///
void addToToc(DocIterator const &);
///
docstring contextMenu(BufferView const & bv, int x, int y) const;
/// Force inset into LTR environment if surroundings are RTL?
bool forceLTR() const { return true; }
///
void doDispatch(Cursor & cur, FuncRequest & cmd);
///
Inset * clone() const;
/// Get the status message, depends on the image loading status.
std::string statusMessage() const;
/// Create the options for the latex command.
std::string createLatexOptions() const;
/// Create length values for docbook export.
docstring toDocbookLength(Length const & len) const;
/// Create the atributes for docbook export.
docstring createDocBookAttributes() const;
/// Convert the file if needed, and return the location of the file.
/// This version is for use with LaTeX-style output.
std::string prepareFile(OutputParams const &) const;
/// Convert the file if needed, and return the location of the file.
/// This version is for use with HTML-style output.
/// \return the new filename, relative to the location of the HTML file,
/// or an empty string on error.
std::string prepareHTMLFile(OutputParams const & runparams) const;
///
InsetGraphicsParams params_;
/// holds the entity name that defines the graphics location (SGML).
docstring const graphic_label;
/// The thing that actually draws the image on LyX's screen.
RenderGraphic * graphic_;
};
namespace graphics {
/// Saves the list of currently used groups in the document.
void getGraphicsGroups(Buffer const &, std::set<std::string> &);
/// how many members has the current group?
int countGroupMembers(Buffer const &, std::string const &);
/// Returns parameters of a given graphics group (except filename).
std::string getGroupParams(Buffer const &, std::string const &);
/** Synchronize all Graphics insets of the group.
Both groupId and params are taken from argument.
*/
void unifyGraphicsGroups(Buffer &, std::string const &);
InsetGraphics * getCurrentGraphicsInset(Cursor const &);
}
} // namespace lyx
#endif // INSET_GRAPHICS_H