スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ブログランキング・にほんブログ村へ

--.--.-- | スポンサー広告

JTdLnchデバッグ中

 最近、使ってくれている方が多いのか、バグレポートが増えているので対応中。
 いくつか修正できているのですが、まだ、取れていないバグがあるので、公開は見合わせてます。


Todayの壁紙が変更された場合に、JTdLnchの背景が追従できていない件

 対応しました。 Todayの画面更新イベントが発生するタイミングで、背景の再構成をすることで追従できました。
 壁紙とフレームを半透明で合成する処理が比較的重いということでメモリ上に合成イメージを置いていました。 Todayの画面更新イベントが頻繁に発生する度に再構成すると重いとおもっていたのですが、それほどイベントが発行されていないようです。 処理を変更して、再構成のカウントを取ってみたのですがそれほど負荷が上がらないようですので、この対応で行こうと。

 JNTrain、JWezも同様の修正をいれないといけませんね。


設定内容が正常に反映されていない

 今回発生している難解なバグの一つ。
 たまーーに、自分の環境でも発生しています。 が、エミュレータでは発生してないんですよね。

 設定画面の内容はiniファイルに書きこまれている(再度、設定画面を表示すると、設定した項目が反映されている)のでTodayプラグイン側が読み込めていないということなんだろうと思うんだけど…(読み込み失敗した場合、設定はデフォルトで動作する)

 プラグイン側が設定を読み込み失敗する原因が見当たらない。  というわけで、このバグが発現した場合、設定画面を表示してそのまま「設定」ボタンを押下してください。 解消できることがあります。(自分の環境では、発生する確率が低いので解消できているのかもしれませんが)

 ちなみに、アプリ登録した時に再現するという情報ですが、確かに確率は高くなるようですね。 ここらへんも調べたのですが、今のところバグは発見できずじまい。

以下、情報の整理
・アプリ登録を行ったあと、再現することが多い
・Todayプラグインの動作設定が、デフォルトに戻る


設定画面がrealVGAのリソースで表示され画面におさまりきらない
 これもかなり難解。 再現したことないんですよね。 自分の環境では。 でも、いただいたスクリーンショットでは確かにrealVGAの画面に。

 ロジックとしては、画面のサイズ取得して、縦横で小さいほうの値を採用(VGAなら、640と480なので480)、この値をNとすると、以下の式が成立する場合にrealVGAとしています。

 N / (dpi / 96) >= 440(ホントは480なんだろうけど余裕を持って440)

dpiは通常ならば192なのでVGA機だと計算結果は240、ということで実質QVGAの解像度になるというわけ。

以下、情報の整理
・VGAの端末で発現(エミュレータでは発現しない)
・縦画面にして表示するとrealVGAで表示される
・横画面にしてから表示すると正常に表示される

んー、横画面だとOKというとこにヒントが隠されているのか?


●アルファ値を持った画像ファイルの表示
 これはバグじゃないんだけど、対応できたのでメモ。
 PNG等にて、画像のピクセルごとに透過情報を持つことができる画像があるのですが、これで表示すると画像のふちがきれいに合成できるので対応。 実はJWezで実装しようと思っている機能なのですが、自分のもっているソフトではアルファ値を埋め込んだ画像を作れないので、放置中でした。

 ちなみに、処理的には決して軽くはないと思うので、あまりJTdLnch向きではないかも。 JWezはほとんど再描画させない仕様なので、十分実用できるんですけどね。

 JTdLnchに組み込んでみましたが…、あれ? 設定したのが48x48の透過情報付PNGだったからか、逆に軽くなった? 結局64x64に拡大して描画するから、元画像のサイズは関係ないと思ったんだけど、それほど重くないのかな? 謎だ。 パフォーマンスについては要調査かな。

 ・・・・・・

 今週は、タスクの処理を組み込もうと思ってたのだけれども、バグが気になって新機能の追加は手をつけませんでした。 と言いつつ、透過情報付PNGの描画とか入れてますが。  これは前からちょっと別件で手をいれていたとこなので、JTdLnchでテストするのに都合がよかったからなんですけれどね。

 某掲示板で、JWezの天気アイコンを透過PNGで作っているという人がうpしてくれるという話があったので、早めに対応しないとまずそうというのもあったんですね。 実現できない(ことはないんだけど、別のアプリでできていることなので)場合、早めに断りいれとかにゃというのもあったし。
 まぁ、PNGのロードには前から対応していたので、描画方法をAlphaBrend()APIに置き換えるだけと思いきや…、全体が半透明に表示されて…、いやな汗をかいたっス。
 結局、従来のロード方法である、SHLoadImageFile()APIでは、アルファ値の情報がロードされていないよう(ちゃんと調べたわけではないので間違っているかも)なので、IImagingFactoryを使用する方向で。 これがなかなか資料がなくて… 日本語での解説がほとんどない。  これでダメなら、「できません」宣言いれとかにゃと思ってました。(自分でゴリゴリと半透明合成すればできないこともないんだけど、そこまでするのもなんだし)

 自分は、以下のような感じで処理を組みました。

  // interface 取得
  IImagingFactory* pImageFactory= NULL;
  CoCreateInstance( CLSID_ImagingFactory, NULL, CLSCTX_INPROC_SERVER,
                                          IID_IImagingFactory, (LPVOID*)&pImageFactory );
  // ファイル読み込み
  IImage* pImage= NULL;
  pImageFactory->CreateImageFromFile(  [ファイル名], &pImage );

  ImageInfo imgInfo;
  pImage->GetImageInfo( &imgInfo );

  // ビットマップとDCの作成
  Info.bAlpha  = ( imgInfo.PixelFormat & PIXFMTFLAG_ALPHA)? TRUE: FALSE;
  Info.hBmpDC  = CreateCompatibleDC(NULL);
  Info.hBmp  = CreateBitmap( imgInfo.Width, imgInfo.Height, 1, (Info.bAlpha)? 32 :24, NULL);
  Info.nSrcSize = max( imgInfo.Width, imgInfo.Height);
  SelectObject( Info.hBmpDC, Info.hBmp);
  RECT rcBitMap = { 0, 0, imgInfo.Width, imgInfo.Height};
  pImage->Draw( Info.hBmpDC, &rcBitMap, NULL);

  pImage->Release();
  pImageFactory->Release();



んー、とりあえず動くようになったんだけれども、こういう作法でいいのか…。 ちょっと自信がなかったり。 あと、この方法ならば、*.icoファイルも読み込みできるようにできるはずだったんだけれども、ダメでした。 やっぱりどっかおかしいのか…

テーマ:フリーソフト - ジャンル:コンピュータ

ブログランキング・にほんブログ村へ

2009.06.22 | Comments(2) | Trackback(0) | JTdLnch

コメント

とても参考になりました。

お久しぶりです。ZORACです。

PNGの読み込みをしたくなって、『じゅんたろーさんのところで実験してたのを読んだなあ』と記憶を頼りに探しに来ました。
ぴったりなサンプルが載せられていて、大変参考になりました。
自分は結果としてHBITMAPではなく、生のピクセル列が欲しかったのですが、このサンプルのおかげでほんのちょっと手順を追加するだけで実現できました。
ありがとうございます。

2010-04-06 火 21:08:09 | URL | ZORAC #Hble4PXk [ 編集]

Re: とても参考になりました。

>ZORACさん

どーも、お久しぶりです。
ここで公開しているサンプルコードがお役に立ったようでなによりです。

自分もいろんなBlogのサンプルコードを参考にやってきたので、すこしでも還元できてようでなによりです。
では、ZORACさんも開発頑張ってください。

2010-04-06 火 23:36:03 | URL | じゅんたろー #- [ 編集]

コメントの投稿


秘密にする

«  | HOME |  »

FC2Ad

09 | 2017/10 [GO]| 11
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -

最近の記事一覧 カテゴリ一覧 コメント一覧 トラックバック一覧 プロフィール リンク一覧
[カテゴリ]
WEBコンサルティング・ホームページ制作のバンブーウエイブ

ブログ内検索

ブロとも申請フォーム

この人とブロともになる

カスタム検索

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。