DSでかな漢字変換(3)
DSでかな漢字変換入力を行うプログラムですが、一気にエイヤとラインエディットできる日本語かな漢字変換入力プログラムを書き上げてしまいました。
とはいうものの、一通りの動作ができるだけで、細かなところは全然できていません。候補語もたくさんあるときには、選択できません。
一気にプログラムをいっぱい書いてしまったので、このブログで細かく紹介していくのがちょっと面倒になってしまっています。
ソースプログラムはNDS Program Roomにアップしました。興味がある方は見てみてください。
画面だけ紹介しておきます。
DSでかな漢字変換
少しはプログラム紹介
ラインエディタ部分が2ヶ所あります。かな漢字変換部とキーからの文字入力部です。1つにまとめるよりも分けたほうがプログラムが楽なので、こうしました。このラインエディタを使うために、下記の構造体を用意しました。
//ラインエディタ用構造体 typedef struct LineEditPara{ char *Text; //編集する文章 int *CurPosi; //カーソルの位置 int *MojiDispTop; //文字を表示する先頭位置 編集文字列が表示文字列よりも短ければMojiDispTop[0] = 0 int ChaMojiSu; //扱える文字数(半角換算) int CurColor; //カーソルの色 int ChaColor; //文字の色 int BacColor; //背景の色 int Lx; //編集エリアのX座標 int Ly; //編集エリアのY座標 int ChaDispNum; //表示可能な文字数(半角) int *OldDispCurPosi; //1つ前のカーソル位置 int *DispCurPosi; //表示文字列上でのカーソル位置(0〜chaDispNum) int *TextLen; //編集する文字列の長さ(最後)[nullの位置] int *MojiDispLast; //表示する文字列の最後の位置 } LineEditParam;
そして、KanaKanjiプログラムの中で、2つの構造体をセットしています。
//************************************************** // テキスト入力します // tlen:は入力可能なサイズ(半角換算) //************************************************** int TextInput( uint16* gamen, char *text, int tlen ) { LineEditParam mainText; LineEditParam kanaKan; char kanji[KANJI_TEXT_SIZE]; int ret; int postCurPos = 0; int postMojiDispTop = 0; int textlen; int mojiDispLast, oldDispCurPosi, dispCurPosi; int kpostCurPos = 0; int kpostMojiDispTop = 0; int ktextlen; int kmojiDispLast, koldDispCurPosi, kdispCurPosi; kanji[0] = 0; mainText.Text = text; //編集する文章 mainText.CurPosi = &postCurPos; //カーソルの位置 mainText.MojiDispTop = &postMojiDispTop; //文字を表示する先頭位置 編集文字列が表示文字列よりも短ければMojiDispTop[0] = 0 mainText.ChaMojiSu = tlen; //扱える文字数(半角換算) mainText.CurColor = RGB(31,0,0); //カーソルの色 mainText.ChaColor = RGB(0,0,0); //文字の色 mainText.BacColor = RGB(31,31,31); //背景の色 mainText.Lx = EDIT_AREA_X; //編集エリアのX座標 mainText.Ly = EDIT_AREA_Y; //編集エリアのY座・ mainText.ChaDispNum = 41; //表示可能な文字数(半角) mainText.OldDispCurPosi = &oldDispCurPosi; //1つ前のカーソル位置 mainText.DispCurPosi = &dispCurPosi; //表示文字列上でのカーソル位置(0〜chaDispNum) mainText.TextLen = &textlen; //編集する文字列の長さ(最後)[nullの位置] mainText.MojiDispLast = &mojiDispLast; //表示する文字列の最後の位置 kanaKan.Text = kanji; //編集する文章 kanaKan.CurPosi = &kpostCurPos; //カーソルの位置 kanaKan.MojiDispTop = &kpostMojiDispTop; //文字を表示する先頭位置 編集文字列が表示文字列よりも短ければMojiDispTop[0] = 0 kanaKan.ChaMojiSu = KANJI_TEXT_SIZE - 1; //扱える文字数(半角換算) kanaKan.CurColor = RGB(31,0,0); //カーソルの色 kanaKan.ChaColor = RGB(0,14,31); //文字の色 kanaKan.BacColor = RGB(31,31,31); //背景の色 kanaKan.Lx = EDIT_KANJI_AREA_X; //編集エリアのX座標 kanaKan.Ly = EDIT_KANJI_AREA_Y; //編集エリアのY座・ kanaKan.ChaDispNum = KANJI_DISP_SIZE; //表示可能な文字数(半角) kanaKan.OldDispCurPosi = &koldDispCurPosi; //1つ前のカーソル位置 kanaKan.DispCurPosi = &kdispCurPosi; //表示文字列上でのカーソル位置(0〜chaDispNum) kanaKan.TextLen = &ktextlen; //編集する文字列の長さ(最後)[nullの位置] kanaKan.MojiDispLast = &kmojiDispLast; //表示する文字列の最後の位置 KeyboardIni( gamen ); // キーボード表示準備をします ret = LeditKanaKan( mainText, kanaKan ); return( ret ); }
こんな感じです。
もう一つ、DSでツイッターにつぶやくだけのソフトTwitOnlyに、このプログラムを実装してみました。
ブログも毎日書かないと、当然、訪問者も減りますね。今年度からは、ぼちぼち書いていきたいと思います。そろそろ、Androidのソフトも作りたいと思っています。DSは卒業だ。
本当にやりたいことリスト
(ブログの終わりにやりたいことを書いておきたいと思います)
- 求職活動・・・このブログで興味を持った人一声かけてください。m(_ _)m
- Androidプログラム
- Web系のプログラム