2000-02-29 02:19:17 +00:00
|
|
|
// -*- C++ -*-
|
|
|
|
/* This file is part of
|
|
|
|
* ======================================================
|
|
|
|
*
|
|
|
|
* LyX, The Document Processor
|
|
|
|
*
|
|
|
|
* Copyright 1995 Matthias Ettrich
|
|
|
|
* Copyright 1995-2000 the LyX Team.
|
|
|
|
*
|
|
|
|
* ====================================================== */
|
|
|
|
|
|
|
|
#ifndef INSET_GRAPHICS_H
|
|
|
|
#define INSET_GRAPHICS_H
|
|
|
|
|
|
|
|
#ifdef __GNUG__
|
|
|
|
#pragma interface
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include "insets/lyxinset.h"
|
|
|
|
#include "LaTeXFeatures.h"
|
|
|
|
#include "vspace.h"
|
|
|
|
#include "insets/BoundingBox.h"
|
|
|
|
|
2000-03-09 23:58:55 +00:00
|
|
|
struct FD_Graphics;
|
|
|
|
|
2000-02-29 02:19:17 +00:00
|
|
|
///
|
|
|
|
class InsetGraphics : public Inset {
|
|
|
|
public:
|
2000-03-09 23:58:55 +00:00
|
|
|
///
|
|
|
|
InsetGraphics();
|
2000-02-29 02:19:17 +00:00
|
|
|
///
|
|
|
|
int ascent(Painter &, LyXFont const &) const;
|
|
|
|
///
|
|
|
|
int descent(Painter &, LyXFont const &) const;
|
|
|
|
///
|
|
|
|
int width(Painter &, LyXFont const &) const;
|
|
|
|
///
|
2000-06-23 15:02:46 +00:00
|
|
|
void draw(BufferView *, LyXFont const &, int, float &, bool) const;
|
2000-02-29 02:19:17 +00:00
|
|
|
///
|
|
|
|
void Edit(BufferView *, int, int, unsigned int);
|
|
|
|
///
|
2000-03-08 13:52:57 +00:00
|
|
|
EDITABLE Editable() const;
|
2000-02-29 02:19:17 +00:00
|
|
|
///
|
2000-06-12 11:27:15 +00:00
|
|
|
void Write(Buffer const *, std::ostream &) const;
|
2000-02-29 02:19:17 +00:00
|
|
|
///
|
2000-06-12 11:27:15 +00:00
|
|
|
void Read(Buffer const *, LyXLex & lex);
|
2000-02-29 02:19:17 +00:00
|
|
|
/** returns the number of rows (\n's) of generated tex code.
|
2000-04-19 01:42:55 +00:00
|
|
|
fragile == true means, that the inset should take care about
|
2000-02-29 02:19:17 +00:00
|
|
|
fragile commands by adding a \protect before.
|
|
|
|
*/
|
2000-06-12 11:27:15 +00:00
|
|
|
int Latex(Buffer const *, std::ostream &, bool fragile, bool free_spc) const;
|
2000-03-06 02:42:40 +00:00
|
|
|
///
|
2000-06-12 11:27:15 +00:00
|
|
|
int Ascii(Buffer const *, std::ostream &) const;
|
2000-04-24 20:58:23 +00:00
|
|
|
///
|
2000-06-12 11:27:15 +00:00
|
|
|
int Linuxdoc(Buffer const *, std::ostream &) const;
|
2000-03-06 02:42:40 +00:00
|
|
|
///
|
2000-06-12 11:27:15 +00:00
|
|
|
int DocBook(Buffer const *, std::ostream &) const;
|
2000-03-09 23:58:55 +00:00
|
|
|
|
2000-02-29 02:19:17 +00:00
|
|
|
/// Updates needed features for this inset.
|
|
|
|
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;
|
2000-03-09 23:58:55 +00:00
|
|
|
/// Set the graphics file
|
|
|
|
void graphicsFile(string const & f) {
|
|
|
|
graphicsfile = f;
|
|
|
|
}
|
|
|
|
/// Get the graphics file
|
|
|
|
string const & graphicsFile() const {
|
|
|
|
return graphicsfile;
|
|
|
|
}
|
2000-02-29 02:19:17 +00:00
|
|
|
private:
|
2000-03-09 23:58:55 +00:00
|
|
|
///
|
|
|
|
FD_Graphics * form;
|
2000-02-29 02:19:17 +00:00
|
|
|
///
|
|
|
|
string graphicsfile;
|
|
|
|
///
|
|
|
|
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;
|
|
|
|
|
|
|
|
/** 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;
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|