home *** CD-ROM | disk | FTP | other *** search
/ Dream 52 / Amiga_Dream_52.iso / Linux / Divers / lyx-0.13.2.tar.gz / lyx-0.13.2.tar / lyx-0.13.2 / src / insetlatexaccent.h < prev    next >
C/C++ Source or Header  |  1998-04-23  |  3KB  |  144 lines

  1. // -*- C++ -*-
  2. /* This file is part of*
  3.  * ======================================================
  4.  *
  5.  *           LyX, The Document Processor
  6.  *      
  7.  *        Copyright (C) 1995 Matthias Ettrich
  8.  *
  9.  *======================================================*/
  10.  
  11. #ifndef _INSET_LATEX_ACCENT_H
  12. #define _INSET_LATEX_ACCENT_H
  13.  
  14. #ifdef __GNUG__
  15. #pragma interface
  16. #endif
  17.  
  18. #include "lyxinset.h"
  19. #include "LString.h"
  20. #include "lyxlex.h"
  21.  
  22. /** Insertion of accents
  23.   
  24.   Proper handling of accented characters.
  25.   This is class is supposed to handle all LaTeX accents, it
  26.   is also possible that the class will change a bit so that
  27.   it also can handle other special characters (e.g. Hstroke)
  28.   Initiated by Ivan Schreter, later modified by Lgb.
  29.   */
  30. class InsetLatexAccent: public Inset {
  31. public:
  32.     ///
  33.     InsetLatexAccent(); 
  34.     ///
  35.     InsetLatexAccent(LString const & string);
  36.     ///
  37.     InsetLatexAccent(InsetLatexAccent const&);
  38.     ///
  39.     ~InsetLatexAccent();
  40.     ///
  41.     int Ascent(LyXFont const &font) const;
  42.     ///
  43.     int Descent(LyXFont const &font) const;
  44.     ///
  45.     int Width(LyXFont const &font) const;
  46.     ///
  47.     bool DisplayISO8859_9(LyXFont font, LyXScreen &scr,
  48.                   int baseline, float &x);
  49.     ///
  50.     void Draw(LyXFont font, LyXScreen &scr, int baseline, float &x);
  51.     ///
  52.     void Write(FILE *file);
  53.     ///
  54.     void Read(LyXLex &lex);
  55.     ///
  56.     int Latex(FILE *file, signed char fragile);
  57.     ///
  58.     int Latex(LString &file, signed char fragile);
  59.     ///
  60.     bool Deletable() const;
  61.     ///
  62.     bool DirectWrite() const;
  63.     ///
  64.     Inset* Clone();
  65.     ///
  66.     Inset::Code LyxCode()const;
  67.     ///
  68.     bool IsEqual(Inset* other);
  69.     ///
  70.     inline bool CanDisplay();
  71. private:
  72.     /// all the accent types
  73.     enum ACCENT_TYPES{
  74.         ///
  75.         ACUTE, // 0
  76.         ///
  77.         GRAVE,
  78.         ///
  79.         MACRON,
  80.         ///
  81.         TILDE,
  82.         ///
  83.         UNDERBAR,
  84.         ///
  85.         CEDILLA, // 5
  86.         ///
  87.         UNDERDOT,
  88.         ///
  89.         CIRCLE,
  90.         ///
  91.         TIE,
  92.         ///
  93.         BREVE,
  94.         ///
  95.         CARON, // 10
  96.         ///
  97.         SPECIAL_CARON,
  98.         ///
  99.         HUNGARIAN_UMLAUT,
  100.         ///
  101.         UMLAUT,
  102.         ///
  103.         DOT,
  104.         ///
  105.         CIRCUMFLEX, // 15
  106.         ///
  107.         OGONEK,
  108.         ///
  109.         DOT_LESS_I,
  110.         ///
  111.          DOT_LESS_J, // 18
  112.         ///
  113.          lSLASH,
  114.         ///
  115.          LSLASH
  116.     };
  117.     
  118.     /// Check if we know the modifier and can display it ok on screen.
  119.     void checkContents();
  120.     ///
  121.     LString contents;
  122.     /// can display as proper char
  123.     bool  candisp;
  124.     /// modifier type
  125.     ACCENT_TYPES  modtype;
  126.     
  127.     /// remove dot from 'i' and 'j' or transform l,L into lslash,LSLaSH
  128.     bool  remdot;
  129.     /// add something to ascent - accent at the top
  130.     bool  plusasc;
  131.     /// add something to descent - underlined char
  132.     bool  plusdesc;
  133.     /// international char
  134.     char  ic;    
  135. };
  136.  
  137. bool InsetLatexAccent::CanDisplay()
  138. {
  139.     return candisp;
  140. }
  141.  
  142. #endif
  143.  
  144.