⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kcharsetsdata.h

📁 一种效率高
💻 H
字号:
/* This file is part of the KDE libraries    Copyright (C) 1997 Jacek Konieczny (jajcus@zeus.polsl.gliwice.pl)    $Id: kcharsetsdata.h,v 1.1 2003/09/08 19:42:04 jasonk Exp $    This library is free software; you can redistribute it and/or    modify it under the terms of the GNU Library General Public    License as published by the Free Software Foundation; either    version 2 of the License, or (at your option) any later version.    This library is distributed in the hope that it will be useful,    but WITHOUT ANY WARRANTY; without even the implied warranty of    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU    Library General Public License for more details.    You should have received a copy of the GNU Library General Public License    along with this library; see the file COPYING.LIB.  If not, write to    the Free Software Foundation, Inc., 59 Temple Place - Suite 330,    Boston, MA 02111-1307, USA.	*/#ifndef _CHARSETSDATA_H#define _CHARSETSDATA_H//#define KCH_DEBUG#ifdef HAVE_CONFIG_H#include <config.h>#endif#include <qfont.h>#include <qdict.h>#include <qlist.h>#include <qintdict.h>#include <kcharsets.h>/*** Charset internal structure.* @internal*/struct KCharsetEntry{  char *name;  QFont::CharSet qtCharset;  const unsigned *toUnicode;  bool registered;  QIntDict<unsigned> * toUnicodeDict;  QString *good_family;  /* it must be pointer so charset entries can be compiled-in */};class KCharsetsData;class KCharsetConverterData{friend class KCharsets;   static KCharsetsData *kcharsetsData;   bool inAmps,outAmps;   bool unicodeIn,unicodeOut;   enum{   	NoConversion, 	ToUnicode,     	FromUnicode,     	UnicodeUnicode,	EightToEight,	Optimal   }conversionType;   enum Encoding{        none,        UTF7,	UTF8   }inputEnc,outputEnc;   int inBits;   int outBits;      QIntDict<unsigned> *convToUniDict;   QIntDict<unsigned> *convFromUniDict;   const unsigned *convTable;      const KCharsetEntry * input;   const KCharsetEntry * output;   bool isOK;   KCharsetConversionResult *tempResult;   void setInputSettings();   void setOutputSettings();   bool getToUnicodeTable();   bool createFromUnicodeDict();   bool decodeUTF7(const char*,unsigned int &code,int &extrachars);   bool decodeUTF8(const char*,unsigned int &code,int &extrachars);   bool encodeUTF7(unsigned int code,QString &result);   bool encodeUTF8(unsigned int code,QString &result);   bool createFromUnicodeTable();   const char * convert(const char *str,KCharsetConversionResult &r                       ,unsigned *pUnicode);   bool initialize(const KCharsetEntry* inputCharset,                   const KCharsetEntry * outputCharset);public:   KCharsetConverterData(const KCharsetEntry * inputCharset                         ,const KCharsetEntry * outputCharset                         ,int flags);   KCharsetConverterData(const KCharsetEntry * inputCharset                         ,int flags);   ~KCharsetConverterData();   void convert(const char *str,KCharsetConversionResult &r);   void convert(const char *str){     convert(str,*tempResult);   }   void convert(const char *str,QList<KCharsetConversionResult> &r);   const KCharsetConversionResult & convert(unsigned code);   const KCharsetConversionResult & convertTag(const char *tag,int &len);   const char * outputCharset()const;   bool ok()const{ return isOK; }private:  // Disallow assignment and copy-construction  KCharsetConverterData( const KCharsetConverterData& ) {};  KCharsetConverterData& operator= ( const KCharsetConverterData& ) { return *this; }};/*** Charset support structure.* @internal*/struct KCharTags{  const char *tag;  unsigned code;};#define CHAR_TAGS_COUNT (nrOfTags) class KSimpleConfig;/*** Charset support structure.* @internal*/struct KDispCharEntry{  KCharsetEntry *charset;  unsigned code;};    class KCharsetsData{  static KCharsetEntry charsets[];  QDict<KCharsetEntry> aliases;  QDict<KCharsetEntry> i18nCharsets;  QIntDict<KDispCharEntry> *displayableCharsDict;  const KCharsetEntry * defaultCh;  KSimpleConfig *config;  void scanDirectory(const char *path);  void createDictFromi18n(KCharsetEntry *e);  KCharsetEntry * varCharsetEntry(const char *name);  KCharsetConversionResult *tempResult;public:  static const KCharTags tags[];  static const unsigned int nrOfTags;  KCharsetsData();  ~KCharsetsData();  const char *faceForCharset(const KCharsetEntry *charset);  QString charsetFace(const KCharsetEntry *charset,const QString &face);  bool charsetOfFace(const KCharsetEntry *charset,const QString &face);  const KCharsetEntry * charsetOfFace(const QString &face);  const KCharsetEntry * charsetEntry(const char *name){    return varCharsetEntry(name);  }  const KCharsetEntry * charsetEntry(int index);  const KCharsetEntry * charsetEntry(QFont::CharSet);  const KCharsetEntry * defaultCharset()const                 { return defaultCh; }  bool setDefaultCharset(const KCharsetEntry *charset);  const unsigned *getToUnicodeTable(const  KCharsetEntry *charset);  QIntDict<unsigned> *getToUnicodeDict(const KCharsetEntry *charset);  const KCharsetEntry * conversionHint(const KCharsetEntry *charset);  bool getFontList(QStrList *lst,QString xcharsetlist);  bool isDisplayableHack(KCharsetEntry *charset);  bool isDisplayable(KCharsetEntry * charset);  unsigned decodeAmp(const char *seq,int &len);  void convert(unsigned code,KCharsetConversionResult & r);  KCharsetConversionResult & convert(unsigned code){     convert(code,*tempResult);     return *tempResult;  }  void convertTag(const char *tag,KCharsetConversionResult & r,int &l);  KCharsetConversionResult & convertTag(const char *tag,int &l){    convertTag(tag,*tempResult,l);    return *tempResult;  }  QString fromX(QString name);  QString toX(QString name);  const QIntDict<KDispCharEntry> * getDisplayableDict();private:  // Disallow assignment and copy-construction  KCharsetsData( const KCharsetsData& ) {};  KCharsetsData& operator= ( const KCharsetsData& ) { return *this; }};#ifdef KCH_DEBUGvoid kchdebug(const char *msg,...);#else /* KCH_DEBUG */inline void kchdebug(const char *,...){}#endif /* KCH_DEBUG */#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -