どうも、第一印象があまり良くないと言われること山の如しの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 件のコメント:
コメントを投稿