diff --git a/scim-wnn/src/wnnconversion.cpp b/scim-wnn/src/wnnconversion.cpp index d569a16..4c1f15d 100644 --- a/scim-wnn/src/wnnconversion.cpp +++ b/scim-wnn/src/wnnconversion.cpp @@ -166,20 +166,18 @@ String y; m_iconv.convert(y,yomiText); strtows(ws,(unsigned char*)y.data()); - bunsetu = jl_fi_ren_conv(wnn,ws,0,-1,WNN_NO_USE); + bunsetu = jl_fi_ren_conv(wnn,ws,0,-1,WNN_USE_ZENGO); if (bunsetu == -1) return(-1); - bunList.resize(bunsetu); - yomiList.resize(bunsetu); for(unsigned int i = 0;i < bunsetu;i ++) { WideString w; - wnn_get_area(wnn,i,i + 1,ws,1); + jl_get_kanji(wnn,i,i + 1,ws); wstostr((unsigned char*)c,ws); m_iconv.convert(w,c,strlen(c)); - bunList[i] = w; - wnn_get_area(wnn,i,i + 1,ws,0); + bunList.push_back(w); + jl_get_yomi(wnn,i,i + 1,ws); wstostr((unsigned char*)c,ws); m_iconv.convert(w,c,strlen(c)); - yomiList[i] = w; + yomiList.push_back(w); } createText(); return(bunsetu); @@ -204,18 +202,17 @@ bunsetu = jl_fi_nobi_conv(wnn,pos,yomiList[pos].length() + w,-1,h,WNN_SHO); convList.kouho.clear(); bunList.clear(); - bunList.resize(bunsetu); - yomiList.resize(bunsetu); + yomiList.clear(); for(unsigned int i = 0;i < bunsetu;i ++) { WideString w; - wnn_get_area(wnn,i,i + 1,ws,1); + jl_get_kanji(wnn,i,i + 1,ws); wstostr((unsigned char*)c,ws); m_iconv.convert(w,c,strlen(c)); - bunList[i] = w; - wnn_get_area(wnn,i,i + 1,ws,0); + bunList.push_back(w); + jl_get_yomi(wnn,i,i + 1,ws); wstostr((unsigned char*)c,ws); m_iconv.convert(w,c,strlen(c)); - yomiList[i] = w; + yomiList.push_back(w); } createText(); return(true); @@ -297,20 +294,28 @@ if (p == -1) p = pos; if ((p >= bunsetu) || (p < 0)) return(convList); pos = p; - wnn_get_area(wnn,pos,pos + 1,k,0); + jl_get_yomi(wnn,pos,pos + 1,k); wstostr((unsigned char*)buf,k); m_iconv.convert(u,buf,strlen(buf)); convList.Yomi = u; - convList.pos = jl_zenkouho(wnn,pos,WNN_USE_ZENGO,WNN_UNIQ); + // bunsetu connection control + int conn = WNN_USE_ZENGO; + if (bunsetu == 1) conn = WNN_NO_USE; + else if (pos == 0) conn = WNN_USE_ATO; + else if (pos == (bunsetu - 1)) conn = WNN_USE_MAE; + // @todo be implement to ikeiji conversion using "jl_zenikeiji_dai()". + // @todo be implement to rensou conversion using "jl_zenassoc_dai()". + // @todo jl_zenkouho should change to jl_zenkouho_dai. + //convList.pos = jl_zenkouho_dai(wnn,pos,pos + 1,WNN_USE_ZENGO,WNN_UNIQ); + convList.pos = jl_zenkouho(wnn,pos,conn,WNN_UNIQ); convList.count = jl_zenkouho_suu(wnn); - convList.kouho.resize(convList.count); for (unsigned int i = 0;i < convList.count; i ++) { jl_get_zenkouho_kanji(wnn,i,k); wstostr((unsigned char*)buf,k); m_iconv.convert(u,buf,strlen(buf)); - convList.kouho[i] = u; + convList.kouho.push_back(u); } select(convList.pos); createText(); diff --git a/scim-wnn/src/wnnproto.h b/scim-wnn/src/wnnproto.h index 4dfc1a6..3b60af0 100644 --- a/scim-wnn/src/wnnproto.h +++ b/scim-wnn/src/wnnproto.h @@ -36,26 +36,35 @@ - #ifdef HAVE_LIBWNN7 - #define HAVE_LIBWNN6 - #endif + /* conversion */ int jl_fi_ren_conv(struct wnn_buf*,w_char*,int,int,int); int jl_optimize_fi(struct wnn_buf*,int,int); int jl_fi_nobi_conv(struct wnn_buf*,int,int,int,int,int); int jl_zenkouho_suu(struct wnn_buf*); - - /* �Ѵ��˴ؤ��뤽�� */ - int wnn_get_area(struct wnn_buf*,int,int,w_char*,int); - int jl_zenkouho(struct wnn_buf*,int,int,int); - void jl_get_zenkouho_kanji(struct wnn_buf*,int ,w_char *); - int jl_set_jikouho(struct wnn_buf*,int); int jl_kill(struct wnn_buf*,int,int); + int jl_zenkouho(struct wnn_buf*,int,int,int); + int jl_zenkouho_dai(struct wnn_buf*,int,int,int,int); + int jl_set_jikouho(struct wnn_buf*,int); + #ifdef HAVE_LIBWNN7 + /* wnn6sdk is not having it.*/ + int jl_zenikeiji_dai(struct wnn_buf*,int,int,int,int); + int jl_zenassoc_dai(struct wnn_buf*,int,int,int,int); + int wnn_get_area(struct wnn_buf*,int,int,w_char*,int,int); + void jl_get_zenkouho_kanji(struct wnn_buf*,int ,w_char *,int); + #define jl_get_zenkouho_kanji(a,b,c) jl_get_zenkouho_kanji(a,b,c,512) + #define jl_get_kanji(buf,bun1,bun2,area) wnn_get_area(buf,bun1,bun2,area,1,512) + #define jl_get_yomi(buf,bun1,bun2,area) wnn_get_area(buf,bun1,bun2,area,0,512) + #else + int wnn_get_area(struct wnn_buf*,int,int,w_char*,int); + void jl_get_zenkouho_kanji(struct wnn_buf*,int ,w_char *); + #define jl_get_kanji(buf,bun1,bun2,area) wnn_get_area(buf,bun1,bun2,area,1) + #define jl_get_yomi(buf,bun1,bun2,area) wnn_get_area(buf,bun1,bun2,area,0) + #endif - /* FreeWnn */ #define WNN_NO_USE 0 #define WNN_USE_MAE 1 @@ -72,8 +81,6 @@ #define WNN_SHO 0 #define WNN_DAI 1 - #define jl_get_kanji(buf,bun1,bun2,area) wnn_get_area(buf,bun1,bun2,area,1) - #define jl_get_yomi(buf,bun1,bun2,area) wnn_get_area(buf,bun1,bun2,area,0) }