1 /* 2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. 3 * 4 * Copyright (c) 2007 Sun Microsystems, Inc. All Rights Reserved. 5 * 6 * The contents of this file are subject to the terms of either the GNU Lesser 7 * General Public License Version 2.1 only ("LGPL") or the Common Development and 8 * Distribution License ("CDDL")(collectively, the "License"). You may not use this 9 * file except in compliance with the License. You can obtain a copy of the CDDL at 10 * http://www.opensource.org/licenses/cddl1.php and a copy of the LGPLv2.1 at 11 * http://www.opensource.org/licenses/lgpl-license.php. See the License for the 12 * specific language governing permissions and limitations under the License. When 13 * distributing the software, include this License Header Notice in each file and 14 * include the full text of the License in the License file as well as the 15 * following notice: 16 * 17 * NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE 18 * (CDDL) 19 * For Covered Software in this distribution, this License shall be governed by the 20 * laws of the State of California (excluding conflict-of-law provisions). 21 * Any litigation relating to this License shall be subject to the jurisdiction of 22 * the Federal Courts of the Northern District of California and the state courts 23 * of the State of California, with venue lying in Santa Clara County, California. 24 * 25 * Contributor(s): 26 * 27 * If you wish your version of this file to be governed by only the CDDL or only 28 * the LGPL Version 2.1, indicate your decision by adding "[Contributor]" elects to 29 * include this software in this distribution under the [CDDL or LGPL Version 2.1] 30 * license." If you don't indicate a single choice of license, a recipient has the 31 * option to distribute your version of this file under either the CDDL or the LGPL 32 * Version 2.1, or to extend the choice of license to its licensees as provided 33 * above. However, if you add LGPL Version 2.1 code and therefore, elected the LGPL 34 * Version 2 license, then the option applies only if the new code is made subject 35 * to such option by the copyright holder. 36 */ 37 38 #ifdef HAVE_CONFIG_H 39 #include <config.h> 40 #endif 41 42 #include <stdio.h> 43 #include <locale.h> 44 #include <iconv.h> 45 46 #include <gtk/gtk.h> 47 #include <gdk/gdk.h> 48 #include <gdk/gdkx.h> 49 #include <X11/Xlib.h> 50 51 #include "imi_data.h" 52 #include "imi_context.h" 53 54 #include "imi_view_modern.h" 55 #include "imi_gtkwin.h" 56 #include "ic_history.h" 57 58 int main(int argc, char* argv[]) 59 { 60 #ifdef DEBUG 61 printf("sizef 'long double' %d, size 'of double' %d, size of 'float' %d \n", sizeof(long double), sizeof(double), sizeof(float)); 62 63 double test_array[] = { 3.0, 2.0, 1.5, 1.0, 0.5, 0.25, 0.0, -0.0, -0.25, -0.5, -1.0, -2.0, -3.0 }; 64 char valbuf[256]; 65 66 for (int i=0, sz=sizeof(test_array)/sizeof(double); i < sz; ++i) { 67 TLongExpFloat lef(test_array[i]); 68 lef.toString(valbuf); 69 printf("value %lf ==> %s\n", test_array[i], valbuf); 70 } 71 fflush(stdout); 72 #endif 73 74 setlocale(LC_ALL, "zh_CN.UTF-8"); 75 gtk_init(&argc, &argv); 76 77 int vt = CIMIViewFactory::SVT_CLASSIC; 78 bool bgbk = true; 79 80 for (int i=1; i < argc; ++i) { 81 if (strcmp(argv[i], "-modern") == 0) 82 vt = CIMIViewFactory::SVT_MODERN; 83 else if (strcmp(argv[i], "-nogbk") == 0) 84 bgbk = false; 85 } 86 87 iconv_t ich = (iconv_t)(-1); 88 CIMIData* pdata = NULL; 89 CIMIContext *pic = NULL; 90 CIMIView *pv = NULL; 91 CGTKWinHandler *pwh = NULL; 92 CBigramHistory *phist = NULL; 93 94 try { 95 CSunpinyinOptions pref; 96 iconv_t ich = iconv_open("UTF-8", TWCHAR_ICONV_NAME); 97 CBigramHistory::initClass(); 98 phist = new CBigramHistory(); 99 100 pdata = new CIMIData(); 101 pdata->loadResource("data/lm_sc.t3g", "data/pydict_sc.bin"); 102 103 pic = new CIMIContext(); 104 pic->setHistoryMemory(phist); 105 pic->setCoreData(pdata); 106 pic->setNonCompleteSyllable(true); 107 pic->clear(); 108 109 pv = CIMIViewFactory::createView(vt); 110 pref.m_GBK = bgbk; 111 pv->setPreference(&pref); 112 pv->attachIC(pic); 113 114 /* FIXME: we should add the candidate window size to preferences */ 115 pv->s_CandiWindowSize = 10; 116 117 pwh = new CGTKWinHandler(pv); 118 pv->attachWinHandler(pwh); 119 120 pwh->createWindows(); 121 gtk_main(); 122 123 delete pwh; 124 delete pic; 125 delete pv; 126 delete pdata; 127 delete phist; 128 129 iconv_close(ich); 130 } catch (...) { 131 fprintf(stderr, "error, unknown exception!\n"); 132 fflush(stderr); 133 return 1; 134 } 135 136 return 0; 137 } 138