📄 qbig5codec.cpp
字号:
/******************************************************************************** Copyright (C) 1992-2007 Trolltech ASA. All rights reserved.**** This file is part of the plugins of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file. Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://trolltech.com/products/qt/licenses/licensing/opensource/**** If you are unsure which license is appropriate for your use, please** review the following information:** http://trolltech.com/products/qt/licenses/licensing/licensingoverview** or contact the sales department at sales@trolltech.com.**** In addition, as a special exception, Trolltech gives you certain** additional rights. These rights are described in the Trolltech GPL** Exception version 1.0, which can be found at** http://www.trolltech.com/products/qt/gplexception/ and in the file** GPL_EXCEPTION.txt in this package.**** In addition, as a special exception, Trolltech, as the sole copyright** holder for Qt Designer, grants users of the Qt/Eclipse Integration** plug-in the right for the Qt/Eclipse Integration to link to** functionality provided by Qt Designer and its related libraries.**** Trolltech reserves all rights not expressly granted herein.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#include "qbig5codec.h"#ifndef QT_NO_TEXTCODECstatic int qt_Big5hkscsToUnicode(const uchar *s, uint *pwc);static int qt_UnicodeToBig5hkscs(uint wc, uchar *r);#define InRange(c, lower, upper) (((c) >= (lower)) && ((c) <= (upper)))#define IsLatin(c) ((c) < 0x80)#define IsFirstByte(c) (InRange((c), 0x81, 0xFE))#define IsSecondByteRange1(c) (InRange((c), 0x40, 0x7E))#define IsSecondByteRange2(c) (InRange((c), 0xA1, 0xFE))#define IsSecondByte(c) (IsSecondByteRange1(c) || IsSecondByteRange2(c))#define QValidChar(u) ((u) ? QChar((ushort)(u)) : QChar(QChar::ReplacementCharacter))int QBig5Codec::_mibEnum(){ return 2026;}QByteArray QBig5Codec::_name(){ return "Big5";}struct B5Map { ushort x; ushort y;};struct B5Index { const B5Map * table; ushort tableSize;};// Big 5 to Unicode maping tables.// Tables are in sorted order on X(all table together) & Y(individually)static const B5Map b5_8140_to_uc_map[] = { /* 0x8140 - 0x8DFE */ {0x8140,0xeeb8}, {0x8141,0xeeb9}, {0x8142,0xeeba}, {0x8143,0xeebb}, {0x8144,0xeebc}, {0x8145,0xeebd}, {0x8146,0xeebe}, {0x8147,0xeebf}, {0x8148,0xeec0}, {0x8149,0xeec1}, {0x814a,0xeec2}, {0x814b,0xeec3}, {0x814c,0xeec4}, {0x814d,0xeec5}, {0x814e,0xeec6}, {0x814f,0xeec7}, {0x8150,0xeec8}, {0x8151,0xeec9}, {0x8152,0xeeca}, {0x8153,0xeecb}, {0x8154,0xeecc}, {0x8155,0xeecd}, {0x8156,0xeece}, {0x8157,0xeecf}, {0x8158,0xeed0}, {0x8159,0xeed1}, {0x815a,0xeed2}, {0x815b,0xeed3}, {0x815c,0xeed4}, {0x815d,0xeed5}, {0x815e,0xeed6}, {0x815f,0xeed7}, {0x8160,0xeed8}, {0x8161,0xeed9}, {0x8162,0xeeda}, {0x8163,0xeedb}, {0x8164,0xeedc}, {0x8165,0xeedd}, {0x8166,0xeede}, {0x8167,0xeedf}, {0x8168,0xeee0}, {0x8169,0xeee1}, {0x816a,0xeee2}, {0x816b,0xeee3}, {0x816c,0xeee4}, {0x816d,0xeee5}, {0x816e,0xeee6}, {0x816f,0xeee7}, {0x8170,0xeee8}, {0x8171,0xeee9}, {0x8172,0xeeea}, {0x8173,0xeeeb}, {0x8174,0xeeec}, {0x8175,0xeeed}, {0x8176,0xeeee}, {0x8177,0xeeef}, {0x8178,0xeef0}, {0x8179,0xeef1}, {0x817a,0xeef2}, {0x817b,0xeef3}, {0x817c,0xeef4}, {0x817d,0xeef5}, {0x817e,0xeef6}, {0x81a1,0xeef7}, {0x81a2,0xeef8}, {0x81a3,0xeef9}, {0x81a4,0xeefa}, {0x81a5,0xeefb}, {0x81a6,0xeefc}, {0x81a7,0xeefd}, {0x81a8,0xeefe}, {0x81a9,0xeeff}, {0x81aa,0xef00}, {0x81ab,0xef01}, {0x81ac,0xef02}, {0x81ad,0xef03}, {0x81ae,0xef04}, {0x81af,0xef05}, {0x81b0,0xef06}, {0x81b1,0xef07}, {0x81b2,0xef08}, {0x81b3,0xef09}, {0x81b4,0xef0a}, {0x81b5,0xef0b}, {0x81b6,0xef0c}, {0x81b7,0xef0d}, {0x81b8,0xef0e}, {0x81b9,0xef0f}, {0x81ba,0xef10}, {0x81bb,0xef11}, {0x81bc,0xef12}, {0x81bd,0xef13}, {0x81be,0xef14}, {0x81bf,0xef15}, {0x81c0,0xef16}, {0x81c1,0xef17}, {0x81c2,0xef18}, {0x81c3,0xef19}, {0x81c4,0xef1a}, {0x81c5,0xef1b}, {0x81c6,0xef1c}, {0x81c7,0xef1d}, {0x81c8,0xef1e}, {0x81c9,0xef1f}, {0x81ca,0xef20}, {0x81cb,0xef21}, {0x81cc,0xef22}, {0x81cd,0xef23}, {0x81ce,0xef24}, {0x81cf,0xef25}, {0x81d0,0xef26}, {0x81d1,0xef27}, {0x81d2,0xef28}, {0x81d3,0xef29}, {0x81d4,0xef2a}, {0x81d5,0xef2b}, {0x81d6,0xef2c}, {0x81d7,0xef2d}, {0x81d8,0xef2e}, {0x81d9,0xef2f}, {0x81da,0xef30}, {0x81db,0xef31}, {0x81dc,0xef32}, {0x81dd,0xef33}, {0x81de,0xef34}, {0x81df,0xef35}, {0x81e0,0xef36}, {0x81e1,0xef37}, {0x81e2,0xef38}, {0x81e3,0xef39}, {0x81e4,0xef3a}, {0x81e5,0xef3b}, {0x81e6,0xef3c}, {0x81e7,0xef3d}, {0x81e8,0xef3e}, {0x81e9,0xef3f}, {0x81ea,0xef40}, {0x81eb,0xef41}, {0x81ec,0xef42}, {0x81ed,0xef43}, {0x81ee,0xef44}, {0x81ef,0xef45}, {0x81f0,0xef46}, {0x81f1,0xef47}, {0x81f2,0xef48}, {0x81f3,0xef49}, {0x81f4,0xef4a}, {0x81f5,0xef4b}, {0x81f6,0xef4c}, {0x81f7,0xef4d}, {0x81f8,0xef4e}, {0x81f9,0xef4f}, {0x81fa,0xef50}, {0x81fb,0xef51}, {0x81fc,0xef52}, {0x81fd,0xef53}, {0x81fe,0xef54}, {0x8240,0xef55}, {0x8241,0xef56}, {0x8242,0xef57}, {0x8243,0xef58}, {0x8244,0xef59}, {0x8245,0xef5a}, {0x8246,0xef5b}, {0x8247,0xef5c}, {0x8248,0xef5d}, {0x8249,0xef5e}, {0x824a,0xef5f}, {0x824b,0xef60}, {0x824c,0xef61}, {0x824d,0xef62}, {0x824e,0xef63}, {0x824f,0xef64}, {0x8250,0xef65}, {0x8251,0xef66}, {0x8252,0xef67}, {0x8253,0xef68}, {0x8254,0xef69}, {0x8255,0xef6a}, {0x8256,0xef6b}, {0x8257,0xef6c}, {0x8258,0xef6d}, {0x8259,0xef6e}, {0x825a,0xef6f}, {0x825b,0xef70}, {0x825c,0xef71}, {0x825d,0xef72}, {0x825e,0xef73}, {0x825f,0xef74}, {0x8260,0xef75}, {0x8261,0xef76}, {0x8262,0xef77}, {0x8263,0xef78}, {0x8264,0xef79}, {0x8265,0xef7a}, {0x8266,0xef7b}, {0x8267,0xef7c}, {0x8268,0xef7d}, {0x8269,0xef7e}, {0x826a,0xef7f}, {0x826b,0xef80}, {0x826c,0xef81}, {0x826d,0xef82}, {0x826e,0xef83}, {0x826f,0xef84}, {0x8270,0xef85}, {0x8271,0xef86}, {0x8272,0xef87}, {0x8273,0xef88}, {0x8274,0xef89}, {0x8275,0xef8a}, {0x8276,0xef8b}, {0x8277,0xef8c}, {0x8278,0xef8d}, {0x8279,0xef8e}, {0x827a,0xef8f}, {0x827b,0xef90}, {0x827c,0xef91}, {0x827d,0xef92}, {0x827e,0xef93}, {0x82a1,0xef94}, {0x82a2,0xef95}, {0x82a3,0xef96}, {0x82a4,0xef97}, {0x82a5,0xef98}, {0x82a6,0xef99}, {0x82a7,0xef9a}, {0x82a8,0xef9b}, {0x82a9,0xef9c}, {0x82aa,0xef9d}, {0x82ab,0xef9e}, {0x82ac,0xef9f}, {0x82ad,0xefa0}, {0x82ae,0xefa1}, {0x82af,0xefa2}, {0x82b0,0xefa3}, {0x82b1,0xefa4}, {0x82b2,0xefa5}, {0x82b3,0xefa6}, {0x82b4,0xefa7}, {0x82b5,0xefa8}, {0x82b6,0xefa9}, {0x82b7,0xefaa}, {0x82b8,0xefab}, {0x82b9,0xefac}, {0x82ba,0xefad}, {0x82bb,0xefae}, {0x82bc,0xefaf}, {0x82bd,0xefb0}, {0x82be,0xefb1}, {0x82bf,0xefb2}, {0x82c0,0xefb3}, {0x82c1,0xefb4}, {0x82c2,0xefb5}, {0x82c3,0xefb6}, {0x82c4,0xefb7}, {0x82c5,0xefb8}, {0x82c6,0xefb9}, {0x82c7,0xefba}, {0x82c8,0xefbb}, {0x82c9,0xefbc}, {0x82ca,0xefbd}, {0x82cb,0xefbe}, {0x82cc,0xefbf}, {0x82cd,0xefc0}, {0x82ce,0xefc1}, {0x82cf,0xefc2}, {0x82d0,0xefc3}, {0x82d1,0xefc4}, {0x82d2,0xefc5}, {0x82d3,0xefc6}, {0x82d4,0xefc7}, {0x82d5,0xefc8}, {0x82d6,0xefc9}, {0x82d7,0xefca}, {0x82d8,0xefcb}, {0x82d9,0xefcc}, {0x82da,0xefcd}, {0x82db,0xefce}, {0x82dc,0xefcf}, {0x82dd,0xefd0}, {0x82de,0xefd1}, {0x82df,0xefd2}, {0x82e0,0xefd3}, {0x82e1,0xefd4}, {0x82e2,0xefd5}, {0x82e3,0xefd6}, {0x82e4,0xefd7}, {0x82e5,0xefd8}, {0x82e6,0xefd9}, {0x82e7,0xefda}, {0x82e8,0xefdb}, {0x82e9,0xefdc}, {0x82ea,0xefdd}, {0x82eb,0xefde}, {0x82ec,0xefdf}, {0x82ed,0xefe0}, {0x82ee,0xefe1}, {0x82ef,0xefe2}, {0x82f0,0xefe3}, {0x82f1,0xefe4}, {0x82f2,0xefe5}, {0x82f3,0xefe6}, {0x82f4,0xefe7}, {0x82f5,0xefe8}, {0x82f6,0xefe9}, {0x82f7,0xefea}, {0x82f8,0xefeb}, {0x82f9,0xefec}, {0x82fa,0xefed}, {0x82fb,0xefee}, {0x82fc,0xefef}, {0x82fd,0xeff0}, {0x82fe,0xeff1}, {0x8340,0xeff2}, {0x8341,0xeff3}, {0x8342,0xeff4}, {0x8343,0xeff5}, {0x8344,0xeff6}, {0x8345,0xeff7}, {0x8346,0xeff8}, {0x8347,0xeff9}, {0x8348,0xeffa}, {0x8349,0xeffb}, {0x834a,0xeffc}, {0x834b,0xeffd}, {0x834c,0xeffe}, {0x834d,0xefff}, {0x834e,0xf000}, {0x834f,0xf001}, {0x8350,0xf002}, {0x8351,0xf003}, {0x8352,0xf004}, {0x8353,0xf005}, {0x8354,0xf006}, {0x8355,0xf007}, {0x8356,0xf008}, {0x8357,0xf009}, {0x8358,0xf00a}, {0x8359,0xf00b}, {0x835a,0xf00c}, {0x835b,0xf00d}, {0x835c,0xf00e}, {0x835d,0xf00f}, {0x835e,0xf010}, {0x835f,0xf011}, {0x8360,0xf012}, {0x8361,0xf013}, {0x8362,0xf014}, {0x8363,0xf015}, {0x8364,0xf016}, {0x8365,0xf017}, {0x8366,0xf018}, {0x8367,0xf019}, {0x8368,0xf01a}, {0x8369,0xf01b}, {0x836a,0xf01c}, {0x836b,0xf01d}, {0x836c,0xf01e}, {0x836d,0xf01f}, {0x836e,0xf020}, {0x836f,0xf021}, {0x8370,0xf022}, {0x8371,0xf023}, {0x8372,0xf024}, {0x8373,0xf025}, {0x8374,0xf026}, {0x8375,0xf027}, {0x8376,0xf028}, {0x8377,0xf029}, {0x8378,0xf02a}, {0x8379,0xf02b}, {0x837a,0xf02c}, {0x837b,0xf02d}, {0x837c,0xf02e}, {0x837d,0xf02f}, {0x837e,0xf030}, {0x83a1,0xf031}, {0x83a2,0xf032}, {0x83a3,0xf033},
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -