Search
Categories
Articles
Rainmeter関連
ファイル置き場
お知り合いなど

スポンサーサイト

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

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

[Rainmeter-dev] 画像のアスペクト比維持 ほか

2009.08.29 | Rainmeter-dev

0 Comments

前々から誰かコード書くかなーと思って見守ってたissue12の「画像のアスペクト比維持」ですが、誰も手をつけてなさそうだったので、自分で書いて投稿してみました。
無事trunkに追加してもらえたようで、ありがとうございます。

Meter=IMAGEにPreserveAspectRatioという設定を追加しました。こいつに1を指定すると、画像を拡大/縮小する際に、画像のアスペクト比を維持して描画するようになります。0のときは今まで通り、Meterの指定サイズに拡大/縮小されます(デフォルト動作)。
また、Meterのサイズ指定はW/Hそれぞれ単独で指定することもできるようにしました(画像サイズ640x480でW=360とだけ指定した場合、画像サイズから計算してH=270になります)。

PreserveAspectRatio=1が効果を発揮するのは、MeterのW/H両方が指定されているときだけです。
表示したい画像サイズが640x360(16:9)で、Meterのサイズが640x480(4:3)の場合、画像のアスペクト比を維持するために、足りない縦120px分は上下に60pxずつ余白が入ります。同様に、横が足りない場合は左右に入ります。重要なのは、センタリングされて表示されるというところでしょうか。

***

RivaTunerPluginもいろいろと変更したので更新したいところ。
でも、こういう本体を別に起動させておかないといけないプラグインてのは敬遠されがちなのかな。SpeedFanPluginはSpeedFan本体がどんどん新しいハードウェアにも対応していってくれるし、便利だと思うんだけれど……なんてことをForumを見て思った。自前でプラグインを作ろうと思っても、仕様が公開されてなくてNDAだわ、ドライバ署名のためにお金が必要だわ、そもそも個人は相手にされないわで、いろいろと大変そう。

そういう面倒な部分をクリアしないと取れない情報が、本体を起動してないといけないとはいえ、共有メモリ経由で読めちゃう。ありがたいことです……。

スポンサーサイト

Refresh

2009.08.19 | Rainmeter-dev // Issue/互換性問題やバグ修正

0 Comments

kenz0さんの投稿されたIssue97はRefreshの中身が問題なのかなーと思い、ソースを見てみました。
(ダンプファイルってどうやって使うんだろう……こういう部分も勉強しないとなぁ)

!RainmeterRefreshがBANGされると、CMeterWindow::Refresh()が引数init = falseで呼ばれます。
中身はこんな感じ。

/*
** Refresh
**
** This deletes everything and rebuilds the config again.
**
*/
void CMeterWindow::Refresh(bool init)
{
    /* snip */
 
    if(!init)
    {
        // First destroy everything
        // WriteConfig(); //Not clear why this is needed and it messes up resolution changes
 
        KillTimer(m_Window, METERTIMER);    // Kill the timer
        KillTimer(m_Window, MOUSETIMER);    // Kill the timer
        KillTimer(m_Window, FADETIMER);    // Kill the timer
 
        std::list<CMeasure*>::iterator i = m_Measures.begin();
        for( ; i != m_Measures.end(); i++)
        {
            delete (*i);
        }
        m_Measures.clear();
 
        std::list<CMeter*>::iterator j = m_Meters.begin();
        for( ; j != m_Meters.end(); j++)
        {
            delete (*j);
        }
        m_Meters.clear();
 
        if(m_Background) delete m_Background;
        m_Background = NULL;
 
        m_BackgroundSize.cx = m_BackgroundSize.cy = 0;
 
        m_BackgroundName.erase();
    }
 
    //TODO: Should these be moved to a Reload command instead of hitting the disk on every refresh
    ReadConfig();    // Read the general settings 
    ReadSkin();
 
    InitializeMeters();
 
    /* snip */
}

Refresh(false)が呼ばれると、今まで使っていたMeasureとMeterをすべて削除し、作り直しています。
作り直すこと自体には別に問題ないですが、もしこれがUpdateタイマーでの更新タイミングで(IfEqualsActionなどから)呼び出されたものなら、呼び出し元Measureもdeleteしちゃうことになります。処理を終えても、呼び出し元がdeleteされちゃってるので、たぶんクラッシュします(?)。

同じように、前回書いた解像度変更のWM_SETTINGCHANGEまわりでクラッシュするというのも、Refresh(false)が過剰に呼び出され続けるタイミングで通常のUpdateタイマーでの更新が走ってクラッシュしてるのかなぁと想像(これはスレッドセーフではないということ? )。
(メッセージキューは1つしかないから、並行して実行することはなさそうだし、原因は別かな……)

これが原因と仮定して対策をするとして……IfなんとかActionから!RainmeterRefreshが呼び出された場合はどうすりゃいいんだろう……。deleteしちゃうようなものが呼ばれると構造上きつい気がする……。

[MoE] Color Thor - 2

2009.08.09 | Game

0 Comments

前回の赤っぽいのに続き、今回は紫っぽいのに挑戦。
色が薄いから、染めるとカラートールの地の色のほうが強く出ちゃって汚くなるかなぁと思いきや……、1回目の挑戦は予想していたよりも薄~くなりすぎてボツ。そこからRGBを若干暗めに絞って色を決めて、前回同様逆引きシミュレータを使って……という手順でやりました。
今回は避難所にうpされていた染色シミュレータも少し使ってみました。結構面白いですね、これ。

ターゲットとする色は、61% 54% 80%。前回のター・メリア縛りのあった赤よりは断然楽な、ミー・チチン縛りでした。
29% 22% 48%を作って、そこから強力な漂白を2回やるとできあがり。

ミー・チチン■(22% 25% 48%)、ミー・チチン■(35% 22% 48%)
強力な漂白を 2 回行う

ミー・チチン■(19% 22% 51%)、ミー・チチン■(29% 22% 51%)、
ミー・チチン■(35% 22% 48%)、ミー・チチン■(35% 22% 48%)
強力な漂白を 2 回行う

ミー・チチン■(19% 22% 51%)、ミー・チチン■(35% 22% 48%)、
ミー・チチン■(35% 22% 48%)、ミー・チチン■(35% 22% 48%)
強力な漂白を 2 回行う

ミー・チチン■(19% 29% 45%)、ミー・チチン■(29% 22% 51%)、
ミー・チチン■(35% 22% 48%)、ミー・チチン■(35% 22% 48%)
強力な漂白を 2 回行う

ミー・チチン■(19% 29% 45%)、ミー・チチン■(35% 22% 48%)、
ミー・チチン■(35% 22% 48%)、ミー・チチン■(35% 22% 48%)
強力な漂白を 2 回行う

花びら→液集めは、「欲しい色だけなぜか出ない病」にかかって少し時間がかかったものの、やっぱりター・メリア相手にするよりはらくらく。
ミー・チチンには元々29% 22% 51%の花びらもあって、結構ポロポロとでやすいので、そっちを使ってもいいかなぁ……。でも3%分青が強くなると変わっちゃうかなぁ。

染色して漂白も終えた状態でこんな感じ。シェーダON、ネオク山室外で曇り空。

61% 54% 80%

個人的にはミスリルトールの色って結構好きだから、他キャラで使おうかなw
赤いのはどーにも着づらい。

染色過程(漂白前、漂白1回目)で出来上がったものも一応……。

29% 22% 48% / 45% 38% 64%

29% 22% 48% (または29% 22% 51%)だと若干濃い目。これはこれで。
1回漂白後もなかなか良い感じ。

今回の染色をするうえで一番時間かかったのって、液集めよりはカラートール集めだったというオチ。
募集して依頼するのも手だけれど、露店を巡って見つけるのもこれはこれで楽しいのだ。とはいえ、結果的にほぼ全ての部位が同じ人作になるんだけれど……w

Rainmeter 1.0 RC

2009.08.04 | Rainmeter

2 Comments

暫く更新が止まっていたRainmeter本家が、久しぶりに更新ラッシュになってました。
具体的な更新内容はK'confさんが詳しく纏められています。

それにしても、まさか0.15ではなく一気に1.0になるとは……。Vista/7対応も含まれているし、大きなアップデートだからですかね。
個人的には、まずは0.14のバグを修正したものを正式版として出して欲しかったです。「とりあえずこれ使っとけ!」っていう決定的なバイナリがなかったので。

自分用にリソースを削ったりカスタマイズして使っていたものも、0.14ベースにRoundLineのアンチエイリアス改善と、個人的に気になった部分のバグ修正(過去に記事にしたもの)を加えたもので、新機能追加(マルチモニタ関連のアップデートとか)は外してました。とはいえ、新機能で便利そうなものも増えてきたし、修正もある程度入っただろうし、自分用カスタマイズにこだわりもなくなってきてざっくり削除したので……、一気に反映させて使ってみました。

使用感は特に変わらず。
気になったところとしては、今までは個別Meterに存在したAntiAliasの設定がMeterに移って、全Meterで反映されるようになったのはいいと思うけれど、なぜに補完方法がBicubic……。
Bicubicは画像によっては縮小が汚くなるのよねぇ……。モアレと呼ぶのかジャギーというのか。若干ボケるけどBilinearか、設定で補完方法を指定できるようになるといいな。

(※過剰Refreshの話はこっちに統合しました)

大きく気になったのはそれくらいですかね。
自分も主にバグ修正の面で直接コード修正とかに関われるといいんですが、やはり英語でのやりとりができないと厳しそうなのがネックですねぇ……。

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