X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsetlatexaccent.h;h=33446bd11a227e1b1b330ac48ceeb5a3e46ecf1e;hb=e28331ed63062dea10d0a21b9ec12034b4b17b9a;hp=1c216479621e99add47b8322d963a6253c3c33e7;hpb=27de1486ca34aaad446adb798d71a77d6f6304da;p=lyx.git diff --git a/src/insets/insetlatexaccent.h b/src/insets/insetlatexaccent.h index 1c21647962..33446bd11a 100644 --- a/src/insets/insetlatexaccent.h +++ b/src/insets/insetlatexaccent.h @@ -1,78 +1,74 @@ // -*- C++ -*- -/* This file is part of* - * ====================================================== +/** + * \file insetlatexaccent.h + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. * - * LyX, The Document Processor - * - * Copyright (C) 1995 Matthias Ettrich + * \author Lars Gullik Bjønnes * - *======================================================*/ + * Full author contact details are available in file CREDITS. + */ -#ifndef _INSET_LATEX_ACCENT_H -#define _INSET_LATEX_ACCENT_H +#ifndef INSET_LATEX_ACCENT_H +#define INSET_LATEX_ACCENT_H -#ifdef __GNUG__ -#pragma interface -#endif +#include "inset.h" +#include "support/types.h" + + +namespace lyx { + +class Dimension; -#include "lyxinset.h" -#include "LString.h" -#include "lyxlex.h" /** Insertion of accents - + Proper handling of accented characters. This is class is supposed to handle all LaTeX accents, it is also possible that the class will change a bit so that it also can handle other special characters (e.g. Hstroke) Initiated by Ivan Schreter, later modified by Lgb. */ -class InsetLatexAccent: public Inset { +class InsetLatexAccent : public InsetOld { public: /// - InsetLatexAccent(); - /// - InsetLatexAccent(LString const & string); - /// - InsetLatexAccent(InsetLatexAccent const&); - /// - ~InsetLatexAccent(); - /// - int Ascent(LyXFont const &font) const; - /// - int Descent(LyXFont const &font) const; - /// - int Width(LyXFont const &font) const; - /// - bool DisplayISO8859_9(LyXFont font, LyXScreen &scr, - int baseline, float &x); - /// - void Draw(LyXFont font, LyXScreen &scr, int baseline, float &x); + InsetLatexAccent(); /// - void Write(FILE *file); + explicit InsetLatexAccent(std::string const & str); /// - void Read(LyXLex &lex); + bool metrics(MetricsInfo &, Dimension &) const; /// - int Latex(FILE *file, signed char fragile); + void draw(PainterInfo & pi, int x, int y) const; /// - int Latex(LString &file, signed char fragile); + bool displayISO8859_9(PainterInfo & pi, int x, int y) const; /// - int Linuxdoc(LString &file); + void write(Buffer const &, std::ostream &) const; /// - int DocBook(LString &file); + void read(Buffer const &, LyXLex & lex); /// - bool Deletable() const; + int latex(Buffer const &, odocstream &, + OutputParams const &) const; /// - bool DirectWrite() const; + int plaintext(Buffer const &, odocstream &, + OutputParams const &) const; /// - Inset* Clone(); + int docbook(Buffer const &, odocstream &, + OutputParams const &) const; + /// the string that is passed to the TOC + virtual int textString(Buffer const &, odocstream &, + OutputParams const &) const; /// - Inset::Code LyxCode()const; + bool directWrite() const; /// - bool IsEqual(Inset* other); + InsetBase::Code lyxCode()const; /// - inline bool CanDisplay(); -private: + inline bool canDisplay(); + // should this inset be handled like a normal charater + bool isChar() const { return true; } + + /// is this equivalent to a letter? + virtual bool isLetter() const { return candisp; } + /// all the accent types enum ACCENT_TYPES{ /// @@ -112,36 +108,45 @@ private: /// DOT_LESS_I, /// - DOT_LESS_J, // 18 + DOT_LESS_J, // 18 /// - lSLASH, + lSLASH, /// - LSLASH + LSLASH }; - +private: + friend std::ostream & operator<<(std::ostream &, ACCENT_TYPES); + + virtual std::auto_ptr doClone() const; + /// Check if we know the modifier and can display it ok on screen. void checkContents(); /// - LString contents; + void drawAccent(PainterInfo const & pi, int x, int y, char_type accent) const; + /// + std::string contents; /// can display as proper char bool candisp; /// modifier type ACCENT_TYPES modtype; - - /// remove dot from 'i' and 'j' or transform l,L into lslash,LSLaSH + + /// remove dot from 'i' and 'j' or transform l, L into lslash, LSLaSH bool remdot; /// add something to ascent - accent at the top bool plusasc; /// add something to descent - underlined char bool plusdesc; /// international char - char ic; + mutable char ic; }; -bool InsetLatexAccent::CanDisplay() + +bool InsetLatexAccent::canDisplay() { return candisp; } -#endif +} // namespace lyx + +#endif