4 * This file is part of LyX, the document processor.
5 * Licence details can be found in the file COPYING.
7 * \author Lars Gullik Bjønnes
9 * Full author contact details are available in file CREDITS.
12 #ifndef INSETCAPTION_H
13 #define INSETCAPTION_H
15 #include "InsetText.h"
21 class InsetCaption
: public InsetText
{
24 InsetCaption(Buffer
const &);
26 std::string
const & type() const { return type_
; }
27 /// return the mandatory argument (LaTeX format) only
28 int getArgument(odocstream
& os
, OutputParams
const &) const;
29 /// return the optional argument(s) only
30 int getOptArg(odocstream
& os
, OutputParams
const &) const;
31 /// return the caption text
32 int getCaptionAsPlaintext(odocstream
& os
, OutputParams
const &) const;
33 /// return the caption text as HTML
34 docstring
getCaptionAsHTML(odocstream
& os
, OutputParams
const &) const;
37 void write(std::ostream
& os
) const;
39 void read(Lexer
& lex
);
41 DisplayType
display() const { return AlignCenter
; }
43 bool neverIndent() const { return true; }
45 InsetCode
lyxCode() const { return CAPTION_CODE
; }
47 docstring
editMessage() const;
49 void cursorPos(BufferView
const & bv
,
50 CursorSlice
const & sl
, bool boundary
, int & x
, int & y
) const;
52 bool descendable() const { return true; }
54 void metrics(MetricsInfo
& mi
, Dimension
& dim
) const;
56 void draw(PainterInfo
& pi
, int x
, int y
) const;
58 void edit(Cursor
& cur
, bool front
, EntryDirection entry_from
);
60 Inset
* editXY(Cursor
& cur
, int x
, int y
);
62 bool insetAllowed(InsetCode code
) const;
64 bool getStatus(Cursor
& cur
, FuncRequest
const & cmd
, FuncStatus
&) const;
65 // Update the counters of this inset and of its contents
66 void updateLabels(ParIterator
const &);
68 int latex(odocstream
& os
, OutputParams
const &) const;
70 int plaintext(odocstream
& os
, OutputParams
const & runparams
) const;
72 int docbook(odocstream
& os
, OutputParams
const & runparams
) const;
73 /// This does nothing here. Instead, it is handled inside the float.
74 docstring
xhtml(odocstream
& os
, OutputParams
const & runparams
) const;
76 void setCustomLabel(docstring
const & label
);
78 void addToToc(DocIterator
const &);
80 virtual bool forcePlainLayout(idx_type
= 0) const { return true; }
81 /// Captions don't accept alignment, spacing, etc.
82 virtual bool allowParagraphCustomization(idx_type
= 0) const { return false; }
84 Inset
* clone() const { return new InsetCaption(*this); }
87 mutable docstring full_label_
;
89 mutable int labelwidth_
;
93 docstring custom_label_
;