FT800 EVEのサンプルデモがほぼ動いたので、今度はFT800の機能を理解しながら、自分でプログラムを書き始めることにしようと思います。まずは
この表示を行うための中心部分のコードは、こんな感じです。
サンプルプログラムに用意されていたAPIを使って書きましたが、FT800がサポートするテキスト・ウィジェットを呼び出すためのコマンドパラメータを生成して、それをFT800にSPI経由で送り込むことで描画をおこないます。いくつかポイントを列挙しておくと、
日本語を表示するには、漢字フォントのデータをダウンロードしてユーザ定義フォントを作成し、それを使ってテキスト描画を行う必要があります。直接SJISやUTF-8のエンコーディグで文字列を描画することはできないので、これを実現するためのライブラリ関数を自作する必要があります。
Hello Worldの代わりに、
Hello Eve!と表示してみました。
この表示を行うための中心部分のコードは、こんな感じです。
/* Text widget test */ void do_Text(Ft_Gpu_Hal_Context_t *phost) { int font, ypos; char buffer[40]; Ft_Gpu_CoCmd_Dlstart(phost); Ft_App_WrCoCmd_Buffer(phost,CLEAR_COLOR_RGB(0,0,0)); /* Black background */ Ft_App_WrCoCmd_Buffer(phost,CLEAR(1,1,1)); Ft_App_WrCoCmd_Buffer(phost,COLOR_RGB(255,255,255)); /* Text color is white */ ypos = 10; for (font = 20; font <= 25; font++) { snprintf(buffer, sizeof(buffer), "%d: Hello Eve!", font); Ft_Gpu_CoCmd_Text(phost, 0, ypos, font, 0, buffer); ypos += 30; } ypos = 10; for (font = 26; font <= 31; font++) { snprintf(buffer, sizeof(buffer), "%d: Hello Eve!", font); Ft_Gpu_CoCmd_Text(phost, FT_DispWidth/2, ypos, font, 0, buffer); ypos += 30; } Ft_App_WrCoCmd_Buffer(phost,DISPLAY()); Ft_Gpu_CoCmd_Swap(phost); /* Download the commands into fifo */ Ft_App_Flush_Co_Buffer(phost); Ft_Gpu_Hal_WaitCmdfifo_empty(phost); }
サンプルプログラムに用意されていたAPIを使って書きましたが、FT800がサポートするテキスト・ウィジェットを呼び出すためのコマンドパラメータを生成して、それをFT800にSPI経由で送り込むことで描画をおこないます。いくつかポイントを列挙しておくと、
- FT800は内蔵フォントを持っており、フォント番号を指定してテキスト描画できる。内蔵フォントには16から31番の番号が割り当てられている。
- フォント番号を変えるとサイズは変わるが、書体は同一。
- 26~31番のフォントはアンチエイリアスがかかっているようだ。
- フォントのメトリック情報も持っているので、FT800のROMにアクセスして読み出すことができる。これを利用すれば、表示されるテキストの幅や高さを調べることも可能。
- フォント番号0~14はユーザ定義フォント用の番号。フォントデータをダウンロードして、ユーザ定義フォントを作成することができる。
日本語を表示するには、漢字フォントのデータをダウンロードしてユーザ定義フォントを作成し、それを使ってテキスト描画を行う必要があります。直接SJISやUTF-8のエンコーディグで文字列を描画することはできないので、これを実現するためのライブラリ関数を自作する必要があります。