!![[OS5対応について|BBS-雑談掲示板/19]] - よういち (2006年12月18日 16時02分30秒) 現在、PalmGOneという棋譜エディタをメンテナンスしているのですが、諸事情により(金欠)OS5なpalmを所有していません。 ハイレゾではない表示ではいろいろ表示に制限があるため、ハイレゾ対応機種はできるだけハイレゾ表示させたいのですが、現在クリエのハイレゾのみ対応している状態です。 そろそろOS5のハイレゾに対応するべきだと考えております。 しかし、私の開発環境はかなり変則的な状態になっておりまして、Handspringの開発環境にCLIEのSDKを組み込んだ状態になっております。 リソースコンパイラはpalm-RCを使っています。 #多分こんな環境で開発してる人は他にいないと思われます。 OS5の開発環境を新たに構築するのか、OS3.5→OS4→CLIEに変更した時のように移行すべきか悩んでおります。 OS5のハイレゾ関連について CLIEのハイレゾ対応を異なり、ローレゾモードがないとのことなのですが、ローレゾからハイレゾへの改造のやり方が見えてきません。 ローレゾの座標のままで描画している部分を全てハイレゾに変えないといけないのでしょうか?   !!!コメント ::Re: - 陰郎 (2006年12月18日 21時34分22秒) ::: えぇと、どのような回答を欲しているのかがイマイチ見えませんが、想像で書きます。単純にハイレゾ(これ自体がOS5の用語ではないですが)の画像を表示したいだけなら、複数の解像度の画像でビットマップファミリを定義するだけで事足ります。それだけでなく、もっと細かいことをしたいのであれば、Palm OS Programmer's Companion の「High-Density Displays」という部分を検索して読んでみるとよいでしょう。あるいは、Palm OS API Reference の「High-Density Display Feature Set」という部分も参考になります。また、「ローレゾモードがないとのことなのですが」という点については、WinSetCoordinateSystem という Palm OS API を挙げておきます。Palm OS API Reference を読んでみてください。 ::Re: - よういち (2006年12月18日 22時03分28秒) ::: アドバイスありがとうございます。 ::: 文字表示以外は何とかなりました。 ::: あとは、小さい数字の表示対応ぐらいで、どうにか動くものに ::: なりそうです。 ::: これはWinSetScalingModeで良いのかな。 ::: ::: あと、シミュレータで終了時にエラーで落ちるのが気になりますが・・・ ::Re: - 陰郎 (2006年12月18日 23時32分02秒) ::: すみません、WinSetScalingMode というのは Palm OS API ですか? 手元の API Reference には載っていないようなのですが、陰郎のが古いのかな? ちなみに、どこで見たのか記憶が曖昧なのですが、小さな(いわゆる Small/Tiny )フォントを、通常の Normal/Large フォントを(なんと力技で)縮小表示することで実現しているコードを見た記憶があります。そのため、他に方法がないという認識でいました。もしよい方法を見つけたら、是非記事にして開発情報に載せてくださいね。 ::Re: - よういち (2006年12月19日 12時00分43秒) :::  windows.h内にいるようなので Palm OS APIだと思います。 :::  とりあえず、想定どおりの動作を確認しました。 :::  WinSetScalingMode(kTextScalingOff); :::  で、WinDrawCharsでの出力が勝手に伸張されないようです。 ::: ::: こんなやり方で実装してみました。 ::: sony の場合 ::: UInt16 oldFnt = HRFntSetFont(refNum,0); ::: HRWinDrawChars(refNum,chars,strlen(chars),x,y); ::: HRFntSetFont(refNum,oldFnt); ::: ::: OS5の場合 ::: UInt16 oldCoor = WinGetCoordinateSystem(); ::: UInt16 oldScale =WinGetScalingMode(); ::: //以前のモードの保管 ::: WinSetCoordinateSystem(kCoordinatesDouble); ::: WinSetScalingMode(kTextScalingOff); ::: UInt16 oldFnt = FntSetFont(0);//とっても小さいフォント ::: WinDrawChars(chars,strlen(chars),x,y); ::: //元に戻す ::: FntSetFont(oldFnt); ::: WinSetScalingMode(oldScale); ::: WinSetCoordinateSystem(oldCoor); ::: ::: シミュレータで想定どおり表示されることは確認しました。 ::: あと、bitmapの表示でも ::: WinSetScalingMode(kBitmapScalingOff); ::: で、勝手に伸張されないようでした。 ::: リソースをPalm-RCで作成している所為か、普通に表示すると ::: 勝手に拡大表示されてしまって困ったのでした。 ::: 説明は、 ::: http://www.palmos.com/dev/support/docs/palmos/PalmOSReference/Window.html#1016731 ::: ですが、ろくに読んでないです。 ::Re: - 陰郎 (2006年12月19日 23時24分39秒) ::: なるほど、1.5x Display Feature Set というのが要求されるのですね。手元の環境は CodeWarrior9 なのですが、やっぱり window.h 内にはありませんでした。比較的新しい API なのでしょうか。ちょっと心配なのですが、1.5x Display Feature Set をサポートしていなければ、OS 5 でも動かないデバイスがあるということになるのでは... ::Re: - よういち (2006年12月20日 08時40分14秒) ::: はう、実装プログラムのウィンドウマネージャのバージョンチェックが正しくないや(^^;ハイデンシティ対応は4からだけど、1.5x Display Feature Set は5からですね。 *コメントスパムが来ますので、コメント欄をコメントアウトしました。コメントを追加したい方は、コメント欄の復活させるか、または直接編集してください。- 陰郎 (2007年02月07日 00時59分00秒) //{{comment multi}}