Xlib

XDrawLine

XDrawLineで直線を描画する。Manpage of XDrawLine グラフィックスを描画する青と赤の直線を引く。青と赤の直線が交差するように引く。青と赤の直線が交差青と赤の直線が交差した。Sample/xlib/XDrawLine/XDrawLine/src/XDrawLine at master · bg1bgst333/Sa…

XSetForeground

XSetForegroundで描画色を設定する。X11 グラフィックスを描画する今回は青で点を描画した後に、赤に設定し直して点を描画する。青と赤のピクセル値を取得。青で5点描画してから、赤に切り替えて5点描画。青と赤の点青と赤の点が描画された。Sample/xlib/XSe…

XDrawPoint

XDrawPointは、点を描画する関数。Manpage of XDrawPoint グラフィックスを描画するウィンドウを白に戻して、描画要求イベントを処理しないといけないので、ExposureMaskを追加。XSetForegroundで、青のピクセル値がセットされたscreen_in_out.pixelをセット…

XCreateGC

線や矩形などの図形を描画するには、まずXCreateGCでグラフィックスコンテキスを生成する必要がある。Manpage of XCreateGC http://refspecs.linuxbase.org/LSB_4.0.0/LSB-Desktop-generic/LSB-Desktop-generic/libx11-ddefs.html グラフィックスを描画する…

XAllocColor

RGB値(red, green, blueそれぞれの成分)をセットして、XAllocColorに渡すと、ピクセル値がセットされる。Manpage of XAllocColor 黒、白以外の色を使う Window Programming 4-1今回、青のピクセル値をウィンドウに指定したいが、注意しないといけないのは、X…

XAllocNamedColor

XAllocNamedColorを使うと、色の名前から、色情報を取得し、それをウィンドウの色などに指定できる。Manpage of XAllocColor 黒、白以外の色を使うこれまで勘違いしてたが、白にしても、赤にしても、16進数ですべての色成分を表すのはピクセル値(例えば、赤…

DefaultColormap

DefaultScreenで取得したデフォルトスクリーン番号を使って、DefaultColormapでカラーマップを取得する。X11 黒、白以外の色を使う X11::Xlib::Colormap - XID wrapper for Colormap - metacpan.orgColormapもWindowと同じXIDの模様。実行default_colormapは…

DefaultScreen

カラーマップで黒や白以外の色も指定したいが、まずはDefaultScreenでデフォルトスクリーン番号を取得しにいく。X11 黒、白以外の色を使うDefaultRootWindowだと一気にルートウィンドウまで取得してしまったが、こちらはデフォルトスクリーン番号を取得する…

XSetCloseDownMode

より正しい終了のさせ方としては、XSetCloseDownModeで、Xサーバとの切断で、すべてのリソースを破棄するようにした方がいい。Manpage of XSetCloseDownMode X Window System(X11)のプログラムを正常に終了させる方法 - QiitaXSetCloseDownModeでDestroyAll…

XDestroyWindow

これまで、XCloseDisplayでXサーバとのセッションを切断して、そのままプログラム終了という形で書いてきたが、正しいウィンドウの閉じ方、終了の仕方ではないので、XDestroyWindowでウィンドウを閉じる。Manpage of XDestroyWindow X Window System(X11)の…

XInternAtom

XInternAtomで、アトムを取得したり、生成できるManpage of XInternAtom Xlib ウィンドウの閉じるボタンが押された時の処理を書くWM_DELETE_WINDOWプロパティと同様に、WM_PROTOCOLSプロパティもアトムを取得できる。 (ただ、XWindowのこのプロパティの構造…

XSetWMProtocols

閉じるボタンでウィンドウを閉じる処理は、ウィンドウマネージャとのやり取りでもちょっと特殊で、WM_PROTOCOLSプロパティというものに、条件となるイベントのプロパティWM_DELETE_WINDOWを設定する必要がある。Manpage of XSetWMProtocols ウィンドウマネー…

XSetWMProperties

ウィンドウにタイトルを付けるにはウィンドウマネージャとやりとりしないといけない。 XSetWMPropertiesでタイトルのテキストプロパティをセットする。Manpage of XSetWMProperties ウィンドウマネージャとのやりとりこれらを用意して、このようにセット。タ…

XSelectInput

XSelectInputでイベントマスクをセットする時に"|"を使うと、複数のイベントを拾える。X11今回は、マウスを離した時のイベントも拾う。ButtonPressMaskに加えて、ButtonReleaseMaskも指定。 ButtonReleaseの時は、"ButtonRelease!!"と出力するだけ。最初はこ…

XNextEvent

ウィンドウのイベントはXNextEventで取得する。Manpage of XNextEvent Xlib イベント X Window System(X11)のプログラムを正常に終了させる方法 - QiitaWindowsのウィンドウメッセージと違うのは、取得したいイベントのマスクを事前にXSelectInputでセットし…

XCloseDisplay

これまでXOpenDisplayでXサーバと接続してたけど、結構クローズしてないサンプルが多くて、X11プログラミング Xlib 編 (1)これいいのかなあとおもってたけど、一応XCloseDisplayでクローズ(Xサーバとの接続を終了(切断))する。Manpage of XOpenDisplay一…

DefaultRootWindow

これまで、RootWindow(d, 0)という感じで、0番スクリーンを指定してきたが、デフォルトスクリーンが0番なら、DefaultRootWindowでデフォルトスクリーンのルートウィンドウが取れるので、0を指定しなくてもいい。たいてい、デフォルトスクリーンは0。(前回の…

RootWindow

Windowsで言うところのトップレベルウィンドウ(一番親のウィンドウ)を作る時は、XCreateSimpleWindowなどに、ルートウィンドウのWindow(実態はXID==unsigned long)を渡す。 で、RootWindowマクロで指定のディスプレイの指定のスクリーンのWindowが返る。X11 …

XBlackPixel

XBlackPixelで、指定のディスプレイとスクリーンにおける、黒のRGB値を取得できる。X11 Manpage of AllPlanes第8引数のborderをwhiteに、第9引数のbackgroundをblackにする。背景は黒だがボーダーの白が出ない。背景は黒になったが、ボーダーの白が出ない。 …

XWhitePixel

XWhitePixelで、指定のディスプレイとスクリーンにおける、白のRGB値を取得できる。X11 Manpage of AllPlanes (WhitePixelしかないが、効果は同じ。)これでウィンドウを白にする。XCreateSimpleWindowの第8、第9引数をXWhitePixelで取得したwhiteにすると、…

XFlush

XFlushは、イベントキューの出力バッファをフラッシュする。Manpage of XFlushウィンドウの表示要求は、イベントキューに貯められる。 このままでは処理されないので、フラッシュすることで、ウィンドウが表示される。XFlushの後に、sleepで10秒待つ。 その…

XMapWindow

ウィンドウを表示するには、Xサーバに対して、ウィンドウの表示要求を送る必要がある。 ウィンドウをマップする(マッピング)と言う。Manpage of XMapWindowXMapWindowで指定のウィンドウをマップする。ここでは、戻り値型がわからないのだが、X Window Syste…

XCreateSimpleWindow

ウィンドウの生成には、XCreateSimpleWindowを使う。Manpage of XCreateWindowXCreateWindowもあるが、まずはよりシンプルなXCreateSimpleWindowにする。第2引数は親ウィンドウ(の番号)を指定するのだが、自分が親ウィンドウの場合は、RootWindowマクロで、…

XOpenDisplay

UNIX系OSで使われているウィンドウシステム「X Window System」(現在はX11とも言う)X Window Systemこれを表示するには、Xlibを使う。X11まずは、その仕組み上、Xサーバに接続する必要がある。Manpage of XOpenDisplayXOpenDisplayで接続する。まずは、Xlib…