CSubFtrGetライブラリによるTsPatchのFeature情報の取得

NSBでSmallFont&TinyFont表示の実現

HPのTOPに戻る
NSBで使えるライブラリのTOPに戻る

このページの内容は事前にCSubFtrGetライブラリについての予備知識がある事を前提にしています。
CSubFtrGetライブラリについてはCSubFtrGetの使い方をご覧下さい


TsPatchは今関さんのHP、拝啓 PalmOS 様からダウンロードが可能です。
またTsPatchの詳しい解説については今関さんのHPまたは、TsPatchに付属のドキュメントを参照して下さい。

※注意TsPatchがOS5以上を対象に作られていますので、ここでの解説もOS5以上のデバイスが対象になります。
OS4のClieのハイレゾはSony独自仕様の為、この方法での対応は出来ません。



■TsPatchを使ってNSBからSmall&TinyFontを利用する

・デバイスでTsPatchが有効であるかを、チェックします。

確認方法は、Creator='TSph"のバージョン番号がセットされているかを調べます。

Dim Res as Integer
Dim parm as String

'---- バージョン番号の存在をチェック
parm="TSph"+"0"
Res=AppLaunch(0,"CSubFtrGet",32769,parm)
If Res=0 then
    Msgbox "TsPatch有効"
else
    MSgbox "TsPatch無効"
end if

・TsPatchが有効であった場合、実際にFontIDの取得を行います。
Dim tinyFontID as Integer
Dim tinyBoldFontID as Integer
Dim smallFontID as Integer
Dim smallBoldFontID as Integer

'---- TinyFontID取得
parm="TSph"+"10"
tinyFontID=AppLaunch(0, "CSubFtrGet", 32770, parm)

'---- TinyBoldFontID取得
parm="TSph"+"11"
tinyBoldFontID=AppLaunch(0, "CSubFtrGet", 32770, parm)

'---- SmallFontID取得
parm="TSph"+"12"
smallFontID=AppLaunch(0, "CSubFtrGet", 32770, parm)

'---- SmallBoldFontID取得
parm="TSph"+"17"
smallBoldFontID=AppLaunch(0, "CSubFtrGet", 32770, parm)

また、Small特殊文字FontIDを取得する事も可能です。
Dim smallSymbolFontID as Integer
Dim smallSymbol11FontID as Integer
Dim smallSymbol7FontID as Integer
Dim smallLEDFontID as Integer

'---- SmallSymbolFontID取得
parm="TSph"+"13"
tinyFontID=AppLaunch(0, "CSubFtrGet", 32770, parm)

'---- SmallSymbol11FontID取得
parm="TSph"+"14"
tinyBoldFontID=AppLaunch(0, "CSubFtrGet", 32770, parm)

'---- SmallSymbol7ID取得
parm="TSph"+"15"
smallFontID=AppLaunch(0, "CSubFtrGet", 32770, parm)

'---- SmallLEDFontID取得
parm="TSph"+"16"
smallBoldFontID=AppLaunch(0, "CSubFtrGet", 32770, parm)

後は取得したIDでNSBSystemLibのFieldSetFontを利用すればSmall&TinyFontが利用可能となります。


■例1(FieldObjectの使用フォントを変更)

TsPatchが有効かを調べて有効の時にはFieldxxxxの使用フォントを
NSBSystemLibのFieldSetFontを使ってSmallFontに変更しています。

Dim Res as Integer
Dim parm as String
Dim tinyFontID as Integer
Dim tinyBoldFontID as Integer
Dim smallBoldFontID as Integer
Dim smallFontID as Integer

Dim FieldObjID as Integer

'---- バージョン番号の存在をチェック
parm="TSph"+"0"
Res=AppLaunch(0,"CSubFtrGet",32769,parm)
If Res=0 then
    '---- TinyFontID取得
    parm="TSph"+"10"
    tinyFontID=AppLaunch(0, "CSubFtrGet", 32770, parm)
    '---- TinyBoldFontID取得
    parm="TSph"+"11"
    tinyBoldFontID=AppLaunch(0, "CSubFtrGet", 32770, parm)
    '---- SmallFontID取得
    parm="TSph"+"12"
    smallFontID=AppLaunch(0, "CSubFtrGet", 32770, parm)
    '---- SmallBoldFontID取得
    parm="TSph"+"17"
    smallBoldFontID=AppLaunch(0, "CSubFtrGet", 32770, parm)
else
    tinyFontID=0
    tinyBoldFontID=0
    SmallFontID=0
    SmallBoldFontID=0
end if

'---- TsPatchが有効であったらFiledxxxxの使用FontをSmallFontに変更する。
If Res=0 then
	'---- FieldObjectのID
    FieldObjID=xxxx
	'---- Fieldxxxxの使用FontをSmallFontに変更
    NSL.FieldSetFont FieldObjID,SmallFontID
	'---- Fontを変更した後はFieldObjectをRedraw
    Fileldxxxx.Redraw
End if


■例2(DrawCharsで描画するフォントを変更)

CSubFtrGetで取得したFontIDを使い、DrawCharsで描画するフォントを変更しています。

Dim OldFontID as Integer
Dim FontID as Integer
Dim Res as Integer
Dim parm as String
Dim tinyFontID as Integer
Dim tinyBoldFontID as Integer
Dim smallBoldFontID as Integer
Dim smallFontID as Integer

Dim FieldObjID as Integer

'---- バージョン番号の存在をチェック
parm="TSph"+"0"
Res=AppLaunch(0,"CSubFtrGet",32769,parm)
If Res=0 then
    '---- TinyFontID取得
    parm="TSph"+"10"
    tinyFontID=AppLaunch(0, "CSubFtrGet", 32770, parm)
    '---- TinyBoldFontID取得
    parm="TSph"+"11"
    tinyBoldFontID=AppLaunch(0, "CSubFtrGet", 32770, parm)
    '---- SmallFontID取得
    parm="TSph"+"12"
    smallFontID=AppLaunch(0, "CSubFtrGet", 32770, parm)
    '---- SmallBoldFontID取得
    parm="TSph"+"17"
    smallBoldFontID=AppLaunch(0, "CSubFtrGet", 32770, parm)
else
    tinyFontID=0
    tinyBoldFontID=0
    SmallFontID=0
    SmallBoldFontID=0
end if

'---- TsPatchが有効であったらFiledxxxxの使用FontをSmallFontに変更する。
If Res=0 then
    FontID=SmallFontID
    '---- 描画するFontをSmallFontに変更
    OldFontId = NSL.FontSetFont(FontID)
    DrawChars "Testデータ" ,20 ,20
    FontID=oldFontID
    '---- 描画に利用するFontを元に戻す
    OldFontID = NSL.FontSetFont(FontID)
End if

このようにDrawCharsで描画する文字についても、SmallFontの利用が可能になります。


■サンプルプログラム

簡単なサンプルプログラムを作成してみました。
ダウンロードして解凍するとTsPatch以外のファイルは全て用意されています。

CSubFtrGetライブラリとサンプルプログラム(約59KB)のダウンロード

・ご注意
このパッケージ内のプログラムを使用した、または、使用しなかったことによる
全ての損害について作者はその責を負いませんし、
また不具合等に対処する義務も一切負わない事をここで明らかにしておきます。

CSubFtrGet_Sample.prj
 サンプルのNSBのソースです。
CSubFtrGet_Sample.prc
 上記サンプルをコンパイルしたものです。
NSBRuntime.prc
 NSBのランタイムです。
NSBSystemLib.prc
 NSBのシステムライブラリです。
CSubFtrGet.prc
 FtrGet APIをNSBで実現するライブラリです。

・実行結果

PEG-TG50の実機上でサンプルを実行した結果です。
StandardFont使用

StandardBoldFont使用

LargeFont使用

LargeBoldFont使用

TinyFont使用

TinyBoldFont使用

SmallFont使用

SmallBoldFont使用



■ご注意とお願い

今回のドキュメントは、短い時間で書き上げましたのでもしかしたら記述ミス等があるかも知れません。
その時には、申し訳ありませんがご連絡を頂けるとありがたいです。


■感謝の言葉

最後に、直接FontIDの指定した使い方の誤りを指摘してくださったHiroさん
そしてCSubFtrGetライブラリを作成しNSBユーザーが自由に使う事を快諾して下さった今関さん
ライブラリの管理ツールLibManを公開して下さっているいなあもさん

本当にありがとうございます。


2003/11/18 作成

- Page End -