]> git.lyx.org Git - lyx.git/blob - src/encoding.h
Alfredo's second patch
[lyx.git] / src / encoding.h
1 // -*- C++ -*-
2 /* This file is part of
3  * ======================================================
4  *
5  *           LyX, The Document Processor
6  *
7  *           Copyright 1995 Matthias Ettrich
8  *           Copyright 1995-2001 The LyX Team.
9  *
10  * ====================================================== */
11
12 #ifndef ENCODING_H
13 #define ENCODING_H
14
15 #include "LString.h"
16 #include "lyxrc.h"
17
18 ///
19 typedef unsigned short int Uchar;
20
21 ///
22 class Encoding {
23 public:
24         ///
25         Encoding() {}
26         ///
27         Encoding(string const & n, string const & l, Uchar const * e)
28                 : Name_(n), LatexName_(l) {
29                 for (int i = 0; i < 256; ++i)
30                         encoding_table[i] = e[i];
31         }
32         ///
33         string const & Name() const {
34                 return Name_;
35         }
36         ///
37         string const & LatexName() const {
38                 return LatexName_;
39         }
40         ///
41         Uchar ucs(unsigned char c) const {
42                 return encoding_table[c];
43         }
44 private:
45         ///
46         string Name_;
47         ///
48         string LatexName_;
49         ///
50         Uchar encoding_table[256];
51 };
52
53 extern Encoding symbol_encoding;
54
55 class Encodings {
56 public:
57         ///
58         typedef std::map<string, Encoding> EncodingList;
59         ///
60         Encodings();
61         ///
62         void read(string const & filename);
63         ///
64         Encoding const * getEncoding(string const & encoding) const;
65         ///
66         Encoding const * symbol_encoding() {
67                 return &symbol_encoding_;
68         }
69
70         ///
71         enum Letter_Form {
72                 ///
73                 FORM_ISOLATED,
74                 ///
75                 FORM_FINAL,
76                 ///
77                 FORM_INITIAL,
78                 ///
79                 FORM_MEDIAL
80         };
81         ///
82         static
83         bool IsComposeChar_hebrew(unsigned char c);
84         ///
85         static
86         bool IsComposeChar_arabic(unsigned char c);
87         ///
88         static
89         bool is_arabic_special(unsigned char c);
90         ///
91         static
92         bool is_arabic(unsigned char c);
93         ///
94         static
95         unsigned char TransformChar(unsigned char c, Letter_Form form);
96
97 private:
98         ///
99         EncodingList encodinglist;
100         ///
101         Encoding symbol_encoding_;
102 };
103
104 extern Encodings encodings;
105
106 #endif