BREW プログラミング入門(4)
|
|
つまり、char型にShift_JISエンコード文字列を指定してSTREXPAND() を呼び出すと、Shift_JISのうちASCIIコードの文字は、そのコードがAECHAR文字として格納され、マルチバイト文字は2バイトコードがAECHAR文字として格納されます。
下の図を見ると、AECHAR文字列がどのようなエンコードをもつか、一目瞭然でしょう。
※半角カタカナは、127を超えるコードをもつにも関わらず、ASCII文字と同じように拡大されるようです(BREWエミュレータで確認)。したがって、「BREW APIリファレンス」の STREXPAND() の説明は誤っているようです
文字列の描画とフォント
BREWで文字列を描画する関数は IDISPLAY_DrawText() です。この関数は、指定されたフォントで、指定された四角形内に、文字列を描画します。中央揃え、右寄せ、などもできます。
ただひとつ、文字列の折り返し描画ができないのが不便な点です。後で、文字列の折り返し描画を行うアプレットを作成してみることにします。IDISPLAY_DrawText() の関数プロトタイプは以下のようになります。
|
文字列を描画するには、フォントを指定する必要があります。フォントは AEEFont型の定数で指定します。BREW SDK 2.1では以下の定数が用意されています。
|
もちろん、携帯電話端末でサポートされていなければ、AEE_FONT_BOLD を指定したからといって必ずしも太いフォントになるわけではありませんし、AEE_FONT_LARGE が必ず AEE_FONT_NORMAL より大きいサイズになるという保証はありません。実際の表示は携帯電話端末の仕様に依存します。
携帯電話の仕様に依存しない描画を行うには、それぞれのフォントのサイズを取得する必要があります。そのためには IDISPLAY_GetFontMetrics() 関数を使用します。
|
フォントのアセントとかディセントについてご存知ない方は、「BREW APIリファレンス」の AEEFontInfo の項目に解説がありますので、ご参照ください。とりあえず、フォントの高さは「アセント+ディセント」の値である、という理解で十分でしょう。
BREWのフォントには「フォントの幅」という情報はありませんが、特定のフォントで特定の文字列を描画したときの横幅を計算することはできます。これを計算するには、IDISPLAY_MeasureText() または IDISPLAY_MeasureTextEx() 関数を使います。この関数の詳細は「BREW APIリファレンス」をご参照ください。
※「BREW APIリファレンス」には、フォントに関係する IFont という。インターフェイスについて記述がありますが、BREWアプリの開発者がこのインターフェイスを使用することはないと思われますので、知る必要はありません。
今回のサンプルアプリ
それでは、今回学んだ知識を元にして、四角形の中に長い文字列を改行しながら表示するアプレットを作成してみましょう(クリックで別ウィンドウにソースコード表示)。
※今回の記事のソースコードは、ソフィア・クレイドル のサイトからダウンロードできます。
著者紹介 倉谷智尋:ソフィア・クレイドル研究開発部チーフサイエンティスト。ソフィア・クレイドルは、2002年2月京都市にて、無限の可能性を秘めたソフトウェア職人たちが楽しく集い、自ずと自己実現が達成される場になることを目指して創業。在籍スタッフの平均年齢は20代前半と若いが、その大半がプログラミング歴10年以上とそのプロフェッショナリティは極めて濃い集団である。 これまでにBREW用アプリケーションフレームワーク、ケータイJavaプログラム圧縮技術、ケータイJavaブラウザ技術、ケータイメッセンジャー技術などを総合的に研究開発し、「高品質な共通プラットフォーム」の実現を目指してきた。 ご感想、ご質問はこちら(zdnet-contact@s-cradle.com)まで。 |
[倉谷智尋, ITmedia]
Copyright © ITmedia, Inc. All Rights Reserved.
前のページ | 2/2 | 最初のページ
最新CPU搭載パソコンはドスパラで!!
第3世代インテルCoreプロセッサー搭載PC ドスパラはスピード出荷でお届けします!!
最新スペック搭載ゲームパソコン
高性能でゲームが快適なのは
ドスパラゲームパソコンガレリア!