예제 #1
0
static void
transliterator_m17n_class_init (TransliteratorM17nClass *klass)
{
  TranslitTransliteratorClass *transliterator_class = TRANSLIT_TRANSLITERATOR_CLASS (klass);
  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
  GParamSpec *pspec;

  transliterator_class->transliterate = transliterator_m17n_real_transliterate;

  gobject_class->finalize = transliterator_m17n_finalize;

  M17N_INIT ();
  utf8_converter = mconv_buffer_converter (Mcoding_utf_8, NULL, 0);
}
예제 #2
0
int m17n_ccx_string(M17nCCX *m17n,const char *istr,int len,char *ostr,int siz){
	const unsigned char *uistr = (const unsigned char*)istr;
	const unsigned char *uostr = (const unsigned char*)ostr;
	int rcode = -1;
	int ecode;
	int oleng = 1;

	m17n->m_mtext = 0;
	m17n->m_dec = mconv_buffer_converter(m17n->m_icode,uistr,len);
	if( m17n->m_dec == 0 ){
		m17n_ccx_freeconv(m17n);
		return -1;
	}
	m17n->m_enc = mconv_buffer_converter(m17n->m_ocode,uostr,siz-1);
	if( m17n->m_enc == 0 ){
		m17n_ccx_freeconv(m17n);
		return -2;
	}
	LAP("converter-set");

	m17n->m_mtext = mtext();
	m17n->m_dec->lenient = 1;
	mconv_decode(m17n->m_dec,m17n->m_mtext);
	LAP("decoded");
	m17n->m_enc->lenient = 1;
	m17n->m_enc->last_block = 1;
	ecode = mconv_encode(m17n->m_enc,m17n->m_mtext);

	oleng = m17n->m_enc->nbytes;
	ostr[oleng] = 0;
	rcode = oleng;

	LAP("encoded");
	m17n_ccx_freeconv(m17n);
	LAP("filter-done");
	return rcode;
}
예제 #3
0
파일: m17nlib.c 프로젝트: NgoHuy/uim
static uim_lisp
init_m17nlib()
{
  MPlist *imlist, *elm;

  M17N_INIT();
  nr_input_methods = 0;
  nr_input_contexts = 0;
  im_array = NULL;
  ic_array = NULL;

  imlist = mdatabase_list(msymbol("input-method"), Mnil, Mnil, Mnil);

  if (!imlist) {
    /* maybe user forgot to install m17n-db */
    return uim_scm_f();
  }

  for (elm = imlist; mplist_key(elm) != Mnil; elm = mplist_next(elm)) {
    MDatabase *mdb;
    MSymbol *tag, lang, imname;
    uim_bool is_complete_im;

    mdb = mplist_value(elm);
    tag = mdatabase_tag(mdb);
    lang = tag[1];
    imname = tag[2];
    is_complete_im = (lang != Mnil && imname != Mnil);  /* [uim-ja 30] */

    if (is_complete_im) {
      /* pass NULL as IM to enable lazy instantiation */
      pushback_input_method(NULL, msymbol_name(lang), msymbol_name(imname));
    }
  }
#if 0
  register_callbacks();
#endif
  m17n_object_unref(imlist);
  converter = mconv_buffer_converter(msymbol("utf8"), NULL, 0);

  if (!converter)
    return uim_scm_f();

  m17nlib_ok = 1;

  return uim_scm_t();
}
예제 #4
0
MPlist *
init (MPlist *args)
{
  MInputContext *ic = mplist_value (args);
  TableContext *context;

  fflush (stderr);
  if (! initialized++)
    {
      init_phrase_dict ();
      Mtable = msymbol (" table");
      Mibus = msymbol ("ibus");
      Mscim = msymbol ("scim");
    }

  context = calloc (sizeof (TableContext), 1);
  context->ic = ic;
  context->converter = mconv_buffer_converter (Mcoding_utf_8, NULL, 0);

  if (context)
    mplist_push (ic->plist, Mtable, context);
  return NULL;
}
예제 #5
0
파일: nimf-m17n.c 프로젝트: cogniti/nimf
static void
nimf_m17n_open_im (NimfM17n *m17n)
{
  g_debug (G_STRLOC ": %s", G_STRFUNC);

  gchar **strv;

  m17n->preedit = g_strdup ("");
  m17n->preedit_attrs[0] = nimf_preedit_attr_new (NIMF_PREEDIT_ATTR_UNDERLINE, 0, 0);
  m17n->preedit_attrs[0]->type = NIMF_PREEDIT_ATTR_UNDERLINE;
  m17n->preedit_attrs[0]->start_index = 0;
  m17n->preedit_attrs[0]->end_index   = 0;
  m17n->preedit_attrs[1] = NULL;

  M17N_INIT();

  strv = g_strsplit (m17n->method, ":", 2);

  if (g_strv_length (strv) > 1)
  {
    m17n->im = minput_open_im (msymbol (strv[0]), msymbol (strv[1]), NULL);

    if (m17n->im)
    {
      mplist_put (m17n->im->driver.callback_list,
                  Minput_get_surrounding_text, on_get_surrounding_text);
      mplist_put (m17n->im->driver.callback_list,
                  Minput_delete_surrounding_text, on_delete_surrounding_text);
      m17n->ic = minput_create_ic (m17n->im, m17n);
      m17n->converter = mconv_buffer_converter (Mcoding_utf_8, NULL, 0);
    }
  }

  g_strfreev (strv);

  g_return_if_fail (m17n->im != NULL);
}