summaryrefslogtreecommitdiffstats
path: root/tqtinterface/qt4/src/codecs/tqfontjpcodec.cpp
diff options
context:
space:
mode:
authorTimothy Pearson <kb9vqf@pearsoncomputing.net>2011-07-10 15:17:53 -0500
committerTimothy Pearson <kb9vqf@pearsoncomputing.net>2011-07-10 15:17:53 -0500
commitdda8474928bd7276e1fad8fb7a601e7c83ff2bc2 (patch)
tree7f83910598b33b12730035f086df20b5a53ab99c /tqtinterface/qt4/src/codecs/tqfontjpcodec.cpp
parent6260b6178868c03aab1644bf93b0ef043654bdb0 (diff)
downloadexperimental-dda8474928bd7276e1fad8fb7a601e7c83ff2bc2.tar.gz
experimental-dda8474928bd7276e1fad8fb7a601e7c83ff2bc2.zip
Added TQt4 HEAD
Diffstat (limited to 'tqtinterface/qt4/src/codecs/tqfontjpcodec.cpp')
-rw-r--r--tqtinterface/qt4/src/codecs/tqfontjpcodec.cpp223
1 files changed, 223 insertions, 0 deletions
diff --git a/tqtinterface/qt4/src/codecs/tqfontjpcodec.cpp b/tqtinterface/qt4/src/codecs/tqfontjpcodec.cpp
new file mode 100644
index 0000000..d095fb6
--- /dev/null
+++ b/tqtinterface/qt4/src/codecs/tqfontjpcodec.cpp
@@ -0,0 +1,223 @@
+/****************************************************************************
+**
+** Japanese Font utilities for X11
+**
+** Created : 20010130
+**
+** Copyright (C) 2010 Timothy Pearson and (C) 1992-2008 Trolltech ASA.
+**
+** This file is part of the tools module of the TQt GUI Toolkit.
+**
+** This file may be used under the terms of the GNU General
+** Public License versions 2.0 or 3.0 as published by the Free
+** Software Foundation and appearing in the files LICENSE.GPL2
+** and LICENSE.GPL3 included in the packaging of this file.
+** Alternatively you may (at your option) use any later version
+** of the GNU General Public License if such license has been
+** publicly approved by Trolltech ASA (or its successors, if any)
+** and the KDE Free TQt Foundation.
+**
+** 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.
+**
+** This file may be used under the terms of the Q Public License as
+** defined by Trolltech ASA and appearing in the file LICENSE.TQPL
+** included in the packaging of this file. Licensees holding valid TQt
+** Commercial licenses may use this file in accordance with the TQt
+** Commercial License Agreement provided with the Software.
+**
+** This file is provided "AS IS" with NO WARRANTY OF ANY KIND,
+** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted
+** herein.
+**
+**********************************************************************/
+
+#include "private/tqfontcodecs_p.h"
+
+#ifndef TQT_NO_CODECS
+#ifndef TQT_NO_BIG_CODECS
+#include "tqjpunicode.h"
+
+
+// JIS X 0201
+
+TQFontJis0201Codec::TQFontJis0201Codec()
+{
+}
+
+const char *TQFontJis0201Codec::name() const
+{
+ return "jisx0201*-0";
+}
+
+int TQFontJis0201Codec::mibEnum() const
+{
+ return 15;
+}
+
+unsigned short
+TQFontJis0201Codec::characterFromUnicode(const TQString &str, int pos) const
+{
+ const TQChar *c = str.tqunicode() + pos;
+ if ( c->tqunicode() < 0x80 )
+ return c->tqunicode();
+ if ( c->tqunicode() >= 0xff61 && c->tqunicode() <= 0xff9f )
+ return c->tqunicode() - 0xff61 + 0xa1;
+ return 0;
+}
+
+TQCString TQFontJis0201Codec::fromUnicode(const TQString& uc, int& lenInOut ) const
+{
+ TQCString rstring( lenInOut+1 );
+ uchar *rdata = (uchar *) rstring.data();
+ const TQChar *sdata = uc.tqunicode();
+ int i = 0;
+ for ( ; i < lenInOut; ++i, ++sdata, ++rdata ) {
+ if ( sdata->tqunicode() < 0x80 ) {
+ *rdata = (uchar) sdata->tqunicode();
+ } else if ( sdata->tqunicode() >= 0xff61 && sdata->tqunicode() <= 0xff9f ) {
+ *rdata = (uchar) (sdata->tqunicode() - 0xff61 + 0xa1);
+ } else {
+ *rdata = '?';
+ }
+ }
+ *rdata = 0u;
+ return rstring;
+}
+
+void TQFontJis0201Codec::fromUnicode(const TQChar *in, unsigned short *out, int length) const
+{
+ while (length--) {
+ if ( in->tqunicode() < 0x80 ) {
+ *out = (uchar) in->tqunicode();
+ } else if ( in->tqunicode() >= 0xff61 && in->tqunicode() <= 0xff9f ) {
+ *out = (uchar) (in->tqunicode() - 0xff61 + 0xa1);
+ } else {
+ *out = 0;
+ }
+
+ ++in;
+ ++out;
+ }
+}
+
+int TQFontJis0201Codec::heuristicNameMatch(const char* hint) const
+{
+ if ( tqstrncmp( hint, "jisx0201", 8 ) == 0 )
+ return 20;
+ return -1;
+
+}
+
+bool TQFontJis0201Codec::canEncode( TQChar ch ) const
+{
+ return ( ch.tqunicode() < 0x80 || ( ch.tqunicode() >= 0xff61 &&
+ ch.tqunicode() <= 0xff9f ) );
+}
+
+int TQFontJis0201Codec::heuristicContentMatch(const char *, int) const
+{
+ return 0;
+}
+
+
+// JIS X 0208
+
+int TQFontJis0208Codec::heuristicContentMatch(const char *, int) const
+{
+ return 0;
+}
+
+
+int TQFontJis0208Codec::heuristicNameMatch(const char *hint) const
+{
+ if ( tqstrncmp( hint, "jisx0208.", 9 ) == 0 )
+ return 20;
+ return -1;
+}
+
+TQFontJis0208Codec::TQFontJis0208Codec()
+{
+ convJP = TQJpUnicodeConv::newConverter(TQJpUnicodeConv::Default);
+}
+
+
+TQFontJis0208Codec::~TQFontJis0208Codec()
+{
+ delete convJP;
+ convJP = 0;
+}
+
+
+const char* TQFontJis0208Codec::name() const
+{
+ return "jisx0208*-0";
+}
+
+
+int TQFontJis0208Codec::mibEnum() const
+{
+ return 63;
+}
+
+
+TQString TQFontJis0208Codec::toUnicode(const char* /*chars*/, int /*len*/) const
+{
+ return TQString::null;
+}
+
+unsigned short TQFontJis0208Codec::characterFromUnicode(const TQString &str, int pos) const
+{
+ return convJP->tqunicodeToJisx0208((str.tqunicode() + pos)->tqunicode());
+}
+
+TQCString TQFontJis0208Codec::fromUnicode(const TQString& uc, int& lenInOut ) const
+{
+ TQCString result(lenInOut * 2 + 1);
+ uchar *rdata = (uchar *) result.data();
+ const TQChar *ucp = uc.tqunicode();
+
+ for ( int i = 0; i < lenInOut; i++ ) {
+ TQChar ch(*ucp++);
+ ch = convJP->tqunicodeToJisx0208(ch.tqunicode());
+
+ if ( ! ch.isNull() ) {
+ *rdata++ = ch.row();
+ *rdata++ = ch.cell();
+ } else {
+ //white square
+ *rdata++ = 0x22;
+ *rdata++ = 0x22;
+ }
+ }
+
+ lenInOut *= 2;
+
+ return result;
+}
+
+void TQFontJis0208Codec::fromUnicode(const TQChar *in, unsigned short *out, int length) const
+{
+ while (length--) {
+ *out++ = convJP->tqunicodeToJisx0208(in->tqunicode());
+ ++in;
+ }
+}
+
+
+bool TQFontJis0208Codec::canEncode( TQChar ch ) const
+{
+ return ( convJP->tqunicodeToJisx0208(ch.tqunicode()) != 0 );
+}
+
+
+
+
+#endif // TQT_NO_BIG_CODECS
+#endif // TQT_NO_CODECS