X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fencoding.h;h=cce42157aa27003685985de4d6c0c1f354cd1f0a;hb=35204f8f33d7400a5fefeffea533fb4cb4097211;hp=d4c16709338776b8fcd4d60ac805e9f8af2f4b04;hpb=4b2a999762c83627476428e595d3c1e3704a3da0;p=lyx.git diff --git a/src/encoding.h b/src/encoding.h index d4c1670933..cce42157aa 100644 --- a/src/encoding.h +++ b/src/encoding.h @@ -1,115 +1,94 @@ // -*- C++ -*- -/* This file is part of - * ====================================================== - * - * LyX, The Document Processor - * - * Copyright 1995 Matthias Ettrich - * Copyright 1995-2000 The LyX Team. +/** + * \file encoding.h + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. * - * ====================================================== */ + * \author Lars Gullik Bjønnes + * \author Jean-Marc Lasgouttes + * + * Full author contact details are available in file CREDITS. + */ #ifndef ENCODING_H #define ENCODING_H -#ifdef __GNUG__ -#pragma interface -#endif +#include +#include -#include "LString.h" -#include "lyxrc.h" +#include "support/types.h" -typedef unsigned short int Uchar; +namespace lyx { +/// class Encoding { public: + /// + Encoding() {} + /// + Encoding(std::string const & n, std::string const & l, + std::string const & i) + : Name_(n), LatexName_(l), iconvName_(i) + { + } + /// + std::string const & name() const { return Name_; } + /// + std::string const & latexName() const { return LatexName_; } + /// + std::string const & iconvName() const { return iconvName_; } +private: + /// + std::string Name_; + /// + std::string LatexName_; + /// + std::string iconvName_; +}; + +class Encodings { +public: + /// + typedef std::map EncodingList; + /// + Encodings(); + /// + void read(std::string const & filename); + /// Get encoding from LyX name \p name + Encoding const * getFromLyXName(std::string const & name) const; + /// Get encoding from LaTeX name \p name + Encoding const * getFromLaTeXName(std::string const & name) const; + /// enum Letter_Form { + /// FORM_ISOLATED, + /// FORM_FINAL, + /// FORM_INITIAL, + /// FORM_MEDIAL }; /// - Encoding(string const & l, Uchar const * e) - : LatexName_(l) , encoding_table(e) {} - /// - string const & LatexName() const { - return LatexName_; - } - /// - Uchar ucs(unsigned char c) const { - return encoding_table[c]; - } + static bool isComposeChar_hebrew(char_type c); /// - static - bool IsComposeChar_hebrew(unsigned char c); + static bool isComposeChar_arabic(char_type c); /// - static - bool IsComposeChar_arabic(unsigned char c); + static bool is_arabic_special(char_type c); /// - static - bool is_arabic(unsigned char c); + static bool is_arabic(char_type c); /// - static - unsigned char TransformChar(unsigned char c, Letter_Form form); + static char_type transformChar(char_type c, Letter_Form form); + private: /// - string LatexName_; - /// - Uchar const * encoding_table; + EncodingList encodinglist; }; +extern Encodings encodings; -extern Encoding iso8859_1; -extern Encoding iso8859_2; -extern Encoding iso8859_3; -extern Encoding iso8859_4; -extern Encoding iso8859_6; -extern Encoding iso8859_7; -extern Encoding iso8859_9; -extern Encoding cp1255; -extern Encoding koi8; -extern Encoding symbol_encoding; - -inline -bool Encoding::IsComposeChar_hebrew(unsigned char c) -{ - return c <= 0xd2 && c >= 0xc0 && - c != 0xce && c != 0xd0; -} - - -inline -bool Encoding::IsComposeChar_arabic(unsigned char c) -{ - return c >= 0xeb && c <= 0xf2; -} - - -extern unsigned char arabic_table[][2]; -extern unsigned char arabic_table2[][4]; -unsigned char const arabic_start = 0xc1; - - -inline -bool Encoding::is_arabic(unsigned char c) -{ - return c >= arabic_start && arabic_table[c-arabic_start][0]; -} - - -inline -unsigned char Encoding::TransformChar(unsigned char c, Encoding::Letter_Form form) -{ - if (!is_arabic(c)) - return c; - - if (lyxrc.font_norm == "iso10646-1") - return arabic_table2[c-arabic_start][form]; - else - return arabic_table[c-arabic_start][form >> 1]; -} +} // namespace lyx #endif