2010年2月10日水曜日

メモ概論第一

どうも、第一印象があまり良くないと言われること山の如しのQです、こんちには。

英語が使えると10億人とコミュニケーションできるそうですが、コミュニケーションあんまりしたくない僕はどうしたらいいんですかね?(笑)
どっちかっていうと技術文書とかマニュアルとかの方が・・・

まあつまり最近日常言語、特に読むのが殆ど英語になりつつある。


1.XSetWindowAttributes
当然だがウィンドウには様々な属性がある。そこで、その属性を設定・変更したりするのに使うのがこの構造体。なんか凄い一杯あるが、とりあえず今回使ったのがウィンドウマネージャによる介入の防止。
上記構造体のメンバに
bool override_redirect
というのがあり、デフォルトはFalseだが、Trueにするとwindowをmapするときにウィンドウマネージャがデコレーションや位置のコントロールを行わなくなる。
例えば、

XSetWindowAttributes a;
a.override_redirect = True;
XChangeWindowAttributes(Display,
            Window,
            CWOverrideRedirect,
            &a);

こうするとWindowのoverride_redirectに関する属性のみ、&aに設定した内容に変更される。CWOverrideRedirectは変更対象の属性を示すマスク。複数種存在しそれらのORによるマスクにより複数の属性を一度に変更することも出来る。




2.XCopyAreaとPixmap
XCopyAreaという関数で、あるdrawableの内容を別のdrawableの内容にコピーする。
XCopyArea(display,
     src,
     dest,
     gc,
     src_x,
     src_y,
     width,
     height,
     dest_x,
     dest_y)
大体、名前見るとどういうことか分かるが、要するに、幅width,高さheight、左上の角の座標が(src_x,src_y)の長方形で囲まれたsrcのdrawableの内容を、destのdrawable上で左上の角を座標(dest_x,dest_y)とした同じ大きさの長方形で囲まれた領域にコピーする。この時この二つのdrawableは同じrootとdepthを持っていなければならない。
drawableにPixmapというものを使うこともできる。イメージとしてはviewableでないwindow、表示されることはない生のwindowって感じ。バッファに使えるので、あるwindowの内容を一時保存したり、影でこそこそ計算・描画しておいて一定のタイミングでのみ本当に表示するwindowにコピーとかに使うっぽい。





春がくる
出会いと別れ
引き連れて

0 件のコメント:

コメントを投稿