Xlibに関する質問ー01ー
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGXlib入門
ttp://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/XLIB/index.html
xlibマニュアル
ttp://tronche.com/gui/x/xlib/
ttp://www.the-labs.com/X11/XLib-Manual/index.html
0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNG\. /::::::::::::::::::::::::::::::iVi:::::::::::::::::::::::ヽ/
ヽ/::::::::::::::::::::::::::::::::| |::::::::::::::::::::::::::|
l:::::::::::::::::::::i:|:::::::|:| |/|'l:::::::: i:::::::::|、
|::::::::::ト:从|'l:|:_::::|'! / `ー '|:::::::/::ヽ
N::人::| , ─、` ,─ 、 |へ':::::::| >>1
/:::::::r‐l 〈 i.::::| |.::::i 〉 | 〉〉::::::| おまいが、質問したいだけなんだろ?
|::::::::l〈ヽr 、 ̄  ̄ |ノ::::::::::ト、
|::::::::ヽ | | ' /::l::|:::::::::ト、\
|'i;:::::::/| | 匸) / Tー、::::;N| ├、
/ ̄/ | ト r‐、 イ〉 ヽ  ̄ | |
/ | | └ ⌒ヽ/ / | | /
/ ヽ | -'⌒ヽ〉 / | /
0004デフォルトの名無しさん
NGNG00061 ◆ZXkirJaN32
NGNGfor(){
〜(処理)〜
}
と、処理をしているときにイベント(マウスクリック等)を拾いたいのです。
VBの「events」みたいな働きをするのってありますか?
もしくは、関数かなにかを周期的にCALLさせながら、イベントを拾うみたいなことって
できるでしょうか?
0007デフォルトの名無しさん
NGNGキューから取り出さないなら XPeekEvent()。
関連する関数として、 XPending(), XEventsQueued() などがある。
0008デフォルトの名無しさん
NGNGXIfEvent()、 XCheckIfEvent() もしくはXPeekIfEvent()を使用する。
XIfEvent()は目的のイベントがなければブロックする。
XCheckIfEvent()はノンブロッキング。
XPeekIfEvent()はイベントをキューから取り出さない。
0010デフォルトの名無しさん
NGNGこれを select することで event を待つ方法もある。
(もちろん他のファイル記述子も一緒に使える)
0011デフォルトの名無しさん
NGNG0012デフォルトの名無しさん
NGNGソケットの向こう側にあるイベントとこちら側のキューにたまっているイベントがあることだ。
キューにあるイベントをすべて処理したからといって、もうイベントが残っていないとはいえない。
0013デフォルトの名無しさん
NGNGXtは死滅したと思ってた。 まだ現役なのかなぁ?
EclipseのMotif版はXtか?
0014デフォルトの名無しさん
NGNGttp://xjman.dsl.gr.jp/
0015デフォルトの名無しさん
NGNGMotifはXtじゃないだろ?たしか。
0016デフォルトの名無しさん
NGNG0017デフォルトの名無しさん
NGNG0018デフォルトの名無しさん
NGNG0019山崎 渉
NGNG│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
0020デフォルトの名無しさん
NGNG0021デフォルトの名無しさん
NGNG0022デフォルトの名無しさん
NGNG0023デフォルトの名無しさん
NGNG0024デフォルトの名無しさん
NGNG0025デフォルトの名無しさん
NGNGそこまでわかっているのなら、ぐぐればすぐわかるのに。
int XGrabKeyboard(display, grab_window, owner_events, pointer_mode, keyboard_mode, time)
Display *display;
Window grab_window;
Bool owner_events;
int pointer_mode, keyboard_mode;
Time time;
002625
NGNGICCCMも読んどけよ。
0027デフォルトの名無しさん
NGNG昔そんなの鼻高々に一生懸命やってる奴いたよ!
今はみんな失業者だよ!
そんな過去の遺物もういらねーよ!
0028デフォルトの名無しさん
NGNGgtkなりQtなり
Xlib が 見 え な く な る ぐ ら い
囲った方がいい
0029デフォルトの名無しさん
NGNG003024
NGNG御親切にどうも。
英語は頭が理解する前に目が潰れるので聞いてしまいたい、
display = XOpenDisplay( NULL );
window = DefaultRootWindow( display );
XGrabKey( display, keycode, mode, window, True, GrabModeAsync, GrabModeAsync );
XSelectInput( display, window, KeyPressMask | KeyReleaseMask );
XNextEvent( display, &event );
なにが悪いのだ。
>27
>28
趣味やし、プログラマになる気はないし。
0031デフォルトの名無しさん
NGNG0032デフォルトの名無しさん
NGNG0033デフォルトの名無しさん
NGNG私にとっては、Xlibで十分とは言えないが、あとアテナ・ウィジットが
あれば問題ない。Xtもこのスレで良いのか?
0034デフォルトの名無しさん
NGNGタイマーイベントでnonblockのacceptをポーリングしかない?
listenしているところにconnectがきたというイベントを
XtAddInput()することはできないのでしょうか?
0035デフォルトの名無しさん
NGNGへ? XtAppAddInput でできるっしょ。
XtAddInputでもいいけどさ。
0036デフォルトの名無しさん
NGNG間違えた。XtAppAddInputでいいんだけど、
filenoには何を指定すればいいんですか?
socket fdで試してみたけどぜんぜん反応してくれなかったんですが・・・
0037デフォルトの名無しさん
NGNGlisten(s, backlog) してから XtAppAddInput()すればいいんだけど...
0038デフォルトの名無しさん
NGNGやっぱりsocket,bind,listenしたsockfdをみればいいんですね・・・
なんか間違ってたかもしれないので、もう一度やってみまつ。
今試せる環境がないので・・・
ありがとうございました。
0039デフォルトの名無しさん
NGNG0040デフォルトの名無しさん
NGNGおいおい、ここはxlibのスレだぜ?GUIのスレだ。
グラフィカル・ユーザ・インタフェースのスレだ。
そういうのはネットワーク関係のスレで話しな。
0041デフォルトの名無しさん
NGNG0042デフォルトの名無しさん
NGNG0043デフォルトの名無しさん
NGNGGtk+で画面やボタンを作ってから、window,displayをXlibのクラスに渡して
Xlibのクラス側で表示したいのですが、うまくいきません。
windowは、(Window)window;でキャストしますが
displayは、GTK→Xlibに渡す際にどのようにすればよいのでしょうか?
----------------------------------------------------------------
VIEW *view;
int main(){
GtkWIdget *window;
〜
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_show(window);
〜
//初期設定
view->window = window;
view->display = display; // <-?
・・・
//描画する部分
drawing_area = create_drawing_area();
gtk_box_pack_start(GTK_BOX(vbox), drawing_area, TRUE, TRUE, TRUE);
gtk_widget_show(drawing_area);
〜
gtk_main();
return;
----------------------------------------------------------------
0044デフォルトの名無しさん
NGNG0045デフォルトの名無しさん
NGNGXlibプログラミングでsocketは必要です。
0046デフォルトの名無しさん
NGNG0047●のテストカキコ中
NGNG0048デフォルトの名無しさん
NGNG0049デフォルトの名無しさん
NGNGなんだとゴルァ Д
0050デフォルトの名無しさん
NGNGXで描画するときはピクセル値を指定しないといけませんよね?
RGBデータを1ドットづつXAllocColorで変換したんですけど時間がかかりすぎます。
どうすればよいでしょうか?
0051デフォルトの名無しさん
NGNG0052デフォルトの名無しさん
NGNGXImage はどう?
005350
NGNGすいません、よくわからないのですが
RGBデータから直接Ximageを作れるということですか?
今のところRGBからPixel値に変換したデータからXimageを作って
XPutImgeで出力しようと思っています。
0054デフォルトの名無しさん
NGNGXAllocColor 要らない。
0056デフォルトの名無しさん
NGNG0057デフォルトの名無しさん
NGNG0058デフォルトの名無しさん
NGNG0059デフォルトの名無しさん
NGNG0060デフォルトの名無しさん
NGNGそれはおそらく Xlib とは関係ありませんが
netpbm でも参考にしたらどうでしょう。
0061デフォルトの名無しさん
NGNG多謝。
0062デフォルトの名無しさん
NGNG0063デフォルトの名無しさん
NGNG0064デフォルトの名無しさん
NGNG0065デフォルトの名無しさん
NGNG0066デフォルトの名無しさん
NGNG0067デフォルトの名無しさん
NGNG0068デフォルトの名無しさん
NGNG0069デフォルトの名無しさん
NGNG使おうとして学習中。JavaやVBになれた軟弱な
脳みそにはなかなかツライ。
0070デフォルトの名無しさん
NGNGなので(Gtk+ も入ってたり入ってなかったり)、スタティックリンクして使える
ツールキットを探してたんだけど、日本語が通ってまともなライブラリって無いです
ね。っつー事で Xaw + Xt で行こうかなと思ってます。
他になんか良いのがあったら教えて下さい。
0071デフォルトの名無しさん
NGNG0072デフォルトの名無しさん
NGNG0073デフォルトの名無しさん
NGNGまぁそれも一つの(唯一の?)手だけど、そこまでやるのはしんどいです。
0074Uボート
NGNG0075デフォルトの名無しさん
NGNG0076デフォルトの名無しさん
NGNGttp://xjman.dsl.gr.jp/X11R6/X11/
ttp://x68000.startshop.co.jp/~68user/xprogram/
ttp://www.wizplanet.com/platown/cha/X-prog/index.html
ttp://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/XLIB/index.html
0077デフォルトの名無しさん
NGNGttp://www.wakhok.ac.jp/~tatsuo/sen96/index.html
ttp://www.wakhok.ac.jp/~tatsuo/sen95/index.html
ttp://brain.eecs.kumamoto-u.ac.jp/~kubo/xprog.html
ttp://www1.u-netsurf.ne.jp/~ozawa/prog/prog.html
ttp://www.wakhok.ac.jp/JJ/JJ.html
0078デフォルトの名無しさん
NGNG例えばメニューウィジェットを作る時は、メニューの項目分のウィンドウを作っているの
でしょうか?
0079デフォルトの名無しさん
NGNGttp://www.coolbrain.net/xlib.html
ttp://home.catv.ne.jp/pp/ginoue/im/index.html
ttp://yamaguch.sytes.net/~tora/memo/iconv.html
ttp://www.students.miyakyo-u.ac.jp/pub/doc/unix/chap12.html
ttp://www1.linkclub.or.jp/~zhidao/zlab/computing/xlib.html
ttp://www7.bpe.es.osaka-u.ac.jp/~rtanaka/lessenA2003.htm
ttp://www.akaisi.co.jp/linux/x11/x11_1.htm
ttp://www.ie.u-ryukyu.ac.jp/~j00023/Xwindow/
ttp://www.elec.nara-k.ac.jp/~doi/jisyu/xprg/
ttp://web.yl.is.s.u-tokyo.ac.jp/~shin/xwin/index.html
0080デフォルトの名無しさん
NGNGXt 使わないで Xlib 直接触ってるから速いぜっていう toolkit は多いけど、大きすぎて
読むのが大変。タブビューとかスクロールリストとか、手ごろなサンプル無いかな。
0081デフォルトの名無しさん
NGNGそういう感じっぽいね。(w
なんか、Xlibで作られた、ボタンとかリストみると
いかにも手作りって感じがイカス。
008278
NGNG作ってませんでした。やっぱオーバヘッドが大きいのかな。
考え方は面白いと思うんですけどね。シンプルだし。
0083デフォルトの名無しさん
NGNG移動、縮小、拡大、閉じる・・・
を実装させてさらにマルチにするとなると中々大変。
途中であきらめました。
0084デフォルトの名無しさん
NGNG0085デフォルトの名無しさん
NGNG0086デフォルトの名無しさん
NGNGプルグラマの真理が分かっていないな。
0087デフォルトの名無しさん
NGNG0088デフォルトの名無しさん
NGNG008982
NGNGXaw を使ったアプリも当然ながら、子ウィンドウを作ってますね。Motif も Xt を使って
いるので同じですよね。Gtk+ や FLTK も調べてみます。
>>10 さんの通り、普通はpoll or select して X のイベントを取って来てるみたいですね。
手探りながら、簡単なウィジェットセットなら生 Xlib だけで作れそうな気がしてきました。
0090デフォルトの名無しさん
NGNG0091デフォルトの名無しさん
NGNG0092デフォルトの名無しさん
NGNG0093デフォルトの名無しさん
NGNG0094デフォルトの名無しさん
NGNG0095デフォルトの名無しさん
NGNG0096デフォルトの名無しさん
NGNG漏れはこれしか見つからなかったけど。
3rd.pdf: スクリーンセーバーの自作
ttp://ayapin.film.s.dendai.ac.jp/~matuda/TeX/PDF/
0097デフォルトの名無しさん
NGNG0098デフォルトの名無しさん
NGNG環境用意するのが手間がかかるから
あんまり触る人いないのかなあ。
0099デフォルトの名無しさん
NGNG0100デフォルトの名無しさん
NGNG#include "gd.h"
gif とか、jpg png 作る奴ね。
0101デフォルトの名無しさん
NGNG0102デフォルトの名無しさん
NGNG0103デフォルトの名無しさん
NGNG0104デフォルトの名無しさん
NGNG0105デフォルトの名無しさん
NGNG0106デフォルトの名無しさん
NGNG( ・x・)Ф 沈度417/727
0107デフォルトの名無しさん
NGNG∩∩ ┯
( ・x・)Ф 沈度428/727
0108デフォルトの名無しさん
NGNG0109デフォルトの名無しさん
NGNG0110デフォルトの名無しさん
NGNG0111デフォルトの名無しさん
NGNG13時間半くらいフライングです
0112デフォルトの名無しさん
NGNGε===(・Д・) happy new year
ズザー
0113デフォルトの名無しさん
NGNG∩∩ ┯
( ・x・)Ф 沈度464/727
0114デフォルトの名無しさん
NGNG0115デフォルトの名無しさん
NGNG0116デフォルトの名無しさん
NGNG0117デフォルトの名無しさん
NGNG0118デフォルトの名無しさん
NGNG0119デフォルトの名無しさん
NGNG0120デフォルトの名無しさん
NGNG0121デフォルトの名無しさん
NGNG0122デフォルトの名無しさん
NGNG∩∩ ┯
( ・x・)Ф 沈度582/727
0123デフォルトの名無しさん
NGNGwindow maneger て本とにただの一クライアントなんでしょうか?
マネージャとしてなんか手順を取らないでいいんでしょうか?
勝手に他のクライアントのイベントを盗み見るようなことでやってるんでしょうか?
0124デフォルトの名無しさん
NGNG0125デフォルトの名無しさん
NGNGhttp://www.freedesktop.org/Standards/wm-spec
0126デフォルトの名無しさん
NGNGttp://cairographics.org/
基本 C みたいですが、Haskell, OCaml, Mono, Ruby, Python, etc. のバインディング有り。
ライセンスが MIT license なのが嬉しいな。
0127デフォルトの名無しさん
NGNGttp://cairographics.org/
基本 C みたいですが、Haskell, OCaml, Mono, Ruby, Python, etc. のバインディング有り。
ライセンスが MIT license なのが嬉しいな。
0128デフォルトの名無しさん
NGNGXtAppAddInput()にわたすfdは
socket()、bind()、listen()したfd渡せばいいんだよね。
PF_UNIXを指定した場合、
XtInputReadMaskを受けた後、すぐにXtInputExceptMaskを
どうしても受けてしまう。。。
X11R5ではそんなことなかったのに。今はR6です。
0129デフォルトの名無しさん
NGNGttp://phe.phyas.aichi-edu.ac.jp/~cyamauch/eggx_procall/
0131デフォルトの名無しさん
NGNG今は必要ないのかなぁ?
0132デフォルトの名無しさん
NGNGデスクトップの任意のウィンドウに表示している文字列を取得することって出来ますか?
よくWindowsの英和辞書ソフトなんかで、マウスカーソルを適当なウィンドウの単語に
もってくと、ポップアップで辞書の内容が表示されるソフトがありますが、あんな感じの
ソフトを仕事でつくることになってしまいますた。。。
よろしくお願いします。
0133デフォルトの名無しさん
NGNG質問のレベルから見てお前には荷が重過ぎる仕事だキケー!
辞表の書き方なら教えてやってもいいキケー!
0134デフォルトの名無しさん
NGNGうるせぇんだよボケが
その口調がおもしろいとでも思ってるのか?
0136デフォルトの名無しさん
NGNGxtermなんかはコピペできるでない?
0137デフォルトの名無しさん
NGNGクライアント側でレンダリングしてるのまで含めると統一的な方法は無いと思う。
セレクションつかえばその辺の問題は無いけど一旦カーソルで選択する必要が
あってマウスカーソルをあわせるだけってわけにはいかないはず。
ぶっちゃけ言ってることそのままやるのは相当大変。
0138デフォルトの名無しさん
NGNGですが、文字を書くにはどうすればいいんでしょうか?
おそらく座標とバッファを渡せば実現できる関数が存在する(MFCの
pDC->textOut() みたいな)と思うんですが・・・。
>>1 にあるサイトのどのヘンにかいてあるとか、教えていただけないでしょうか。
0139デフォルトの名無しさん
NGNGXDrawString() とか XDrawText() っつーそのまんまなAPIがあります。
0140デフォルトの名無しさん
NGNG0141デフォルトの名無しさん
05/01/24 13:40:02XtRealizeWidget(top);
こんな感じでXtでウィンドウを表示したのですが、
ターミナル(プロンプト?)からウィンドウにフォーカスが移動しません
マウスでウィンドウタイトルクリックしてもアクティブになりません
助けて
0142デフォルトの名無しさん
05/01/24 14:31:37XlibならXさえ入ってればportableだし。
0143デフォルトの名無しさん
05/01/24 14:33:230144デフォルトの名無しさん
05/01/24 14:34:040145デフォルトの名無しさん
05/01/24 17:42:25どの質問に答えればいいの?
0146デフォルトの名無しさん
05/01/26 12:22:21twm や fvwm なら無問題 (ぉ
Xt 使ってるなら、XWMHints の input はデフォルトで
True になった筈だよねえ、確か?
0147デフォルトの名無しさん
05/01/28 18:40:47Defaultなんたらで返る値って、そのアプリ専用なのかWindow System 全体
で共用されてるものなのかどっちなんでそかね?
0148デフォルトの名無しさん
05/01/29 01:51:06安全でしょ。
たとえば DefaultScreen() なんて、環境変数 $DISPLAY や
コマンドラインの --display オプションの設定で変わるもの
だし。
個別にみると、まあいろいろ
0149デフォルトの名無しさん
05/02/06 17:07:22別に取り込んだ画像でなくても、ウインドウから直接でも結構です
検索したら xwdsaveと言うものをみつけました
動作は全くこれで構わないのですが、これはフォートランのものでした
このような物はないでしょうか?
すいませんが教えていただけると幸です
よろしくおねがいします
0150デフォルトの名無しさん
05/02/06 21:26:06一応UNIX板の方にも書きもまさせていただきます
0151デフォルトの名無しさん
05/02/07 22:12:02いいよな。
0152デフォルトの名無しさん
05/02/08 20:11:480153デフォルトの名無しさん
05/02/10 11:22:490154デフォルトの名無しさん
05/02/11 15:08:580155デフォルトの名無しさん
05/02/12 23:00:280156デフォルトの名無しさん
2005/03/29(火) 13:50:04gtkなんかでいうところのテキストウィジェットみたいな
ことがしたいんですけど、サンプルかなんかあったら教えてください。
0157デフォルトの名無しさん
2005/03/29(火) 21:21:42http://www.coolbrain.net/xlib/xim3.html
http://home.catv.ne.jp/pp/ginoue/im/index.html
http://xjman.dsl.gr.jp/X11R6/X11/CH13.html
http://www.linuxgazette.com/issue78/tougher.html
0158デフォルトの名無しさん
2005/03/30(水) 20:24:220159デフォルトの名無しさん
2005/05/11(水) 09:27:140160デフォルトの名無しさん
2005/06/13(月) 21:24:540161デフォルトの名無しさん
2005/06/13(月) 21:58:480162デフォルトの名無しさん
2005/06/14(火) 20:14:20ないですよね。
失礼しました。
0163デフォルトの名無しさん
2005/06/14(火) 21:29:51>>161
ありがとうございます。
基本的には解決したのですがまだちょっと問題があります。
具体的には、kterm上からtelnetにて他のホストに入った場合にそのホストでの環境変数WINDOWIDがセットされていません。
いろいろ知らべてみたのですが、ウインドウタイトルから該当WINDOWIDを調べる方法しか見つかりませんでした。
この方法だと同一タイトルのウインドウが複数ある環境だとうまく動かないので、なにかほかの方法ありませんかねー。
0164デフォルトの名無しさん
2005/06/14(火) 22:05:18いったいなんのためのIDだろう
0165デフォルトの名無しさん
2005/06/14(火) 23:16:34説明不足でした。
同一タイトルのウインドウが複数あるとすべてのウインドウIDを拾ってしまい必要なIDが特定できない
です。
0166デフォルトの名無しさん
2005/07/09(土) 11:03:56http://pc8.2ch.net/test/read.cgi/tech/1060005170/l50
0167166
2005/07/09(土) 11:05:090168デフォルトの名無しさん
2005/08/15(月) 19:26:22方法を教えてください。お願いします。
0169デフォルトの名無しさん
2005/09/27(火) 07:28:13できる。
gdk-pixbuf ってライブラリを使うのが定番かな。
0170デフォルトの名無しさん
2005/10/01(土) 00:57:47Xlibでウインドウを作りそこに文字を"XmbDrawImageString"で表示しているのですが
マウスで文字をドラッグしたりしても選択されません(すいませんどういえばいいのか分かりません
(kterm等でドラッグしたら文字が反転しバッファに貯められマウスの中ボタンでペーストされる動作
(が行いたいのです
どうすれば選択できるようになるのでしょうか?
0171デフォルトの名無しさん
2005/10/01(土) 01:22:02ペーストしたりするためのプログラムを書けば、Xlib のレベルでもできる…
が、とっても苦労するので、そういうことをしてくれるライブラリ(toolkit のたぐい) を使うのが普通。
今時のはやりは、たぶん gtk かな。
Qt でもいいが、ライセンスが GPL なので、商用ソフトには使いづらい。
古きを尋ねるなら Motif (Lesstif) あたり。
たとえば、gtk なら下記のプログラムで、だいたいやりたいことはできる。
#include <gtk/gtk.h>
int
main(int argc, char **argv)
{
GtkWidget *top, *text;
gtk_set_locale();
gtk_init(&argc, &argv);
top = gtk_window_new(GTK_WINDOW_TOPLEVEL);
text = gtk_text_new(NULL, NULL);
gtk_text_set_editable(GTK_TEXT(text), 1);
gtk_container_add(GTK_CONTAINER(top), text);
gtk_widget_show(text);
gtk_widget_show(top);
gtk_main();
return (0);
}
コンパイルは
gcc `gtk-config --cflags` hoge.c.c `gtk-config --libs`
のようにする。
0172170
2005/10/01(土) 01:41:16ありがとうございます
gtkやQt, Motifも入っていないので、すいませんができればXlibで行いたいです
XtもC++ができないため使えません
KtermもXlibで行っていると思っているのですがこれは違うのでしょうか?
0173デフォルトの名無しさん
2005/10/01(土) 02:21:10ネットに繋がってれば、ダウンロードしてインストールするだけ
なんだから、インストールすれば? 一から自分で書くと、週単位、
下手すると月単位の時間がかかるよ。
> XtもC++ができないため使えません
Xt 使うのに C++ は要らない。Cだけで十分。
gtk も Motif も Cで OK
> KtermもXlibで行っていると思っているのですが
kterm は Xt 使ってる。
でも日本語copy&pasteまわりはXlibも使ってゴリゴリ書いてるね。
結構大変だよ。charproc.c だけで 5000行を越えている。
0174170
2005/10/01(土) 02:30:15わざわざありがとうございます
> ネットに繋がってれば、ダウンロードしてインストールするだけ
インストールするのは簡単なんですけど、インストールできないのではなくインストールしていないのです
このマシンのスペックは
CPU: Pentium MMX 120MHz @ 60x1 60MHz
Mem: 16MB EDO
HDD: 340MB
なため、なかなか現実的ではありません
0175デフォルトの名無しさん
2005/10/01(土) 03:10:02だが、上のgtkのサンプルプログラムの常駐メモリは2.7MB程度
だったから(NetBSD/i386で測定)、全く使えないほど遅くはない
だろう。gtk1 のバイナリパッケージなら、展開してもディスク
使用量は6MBいかないようだし。
Motif も比べてみたが、gtk よりむしろメモリを必要とするようだ。
どうしてもXlibでのやり方を知りたかったら、gtkのソースを読んでみたら?
0176デフォルトの名無しさん
2005/10/01(土) 03:23:3816MBしかないのに2.7MBはつらいんじゃ?
実際にはファイル開いて読んだりイベント待ったりいろいろするから
テキスト表示させるにも5MB弱程度食うと思う
そうなると1/3食うことになるからな
X入れて日本語入力できる環境だと10MB弱程度はメモリ消費してると思うし
大惨事だと思う
一応質問ならageとけ
0177デフォルトの名無しさん
2005/10/01(土) 03:37:44今時のツールキット使って 2.7MB はまあ仕方ないと思うよ。
メモリの足りないマシンだと、2.7MB のうちかなりの部分がpage
outされるだろうから、アクティブに必要とする部分はたぶんもっと
小さいと思うし。
とりあえずgtk1を試してみて、重くて耐えられなかったら考え直すっ
てのがいいんじゃない?
0178デフォルトの名無しさん
2005/10/01(土) 03:41:34関係ないけどメニュー削ればメモリ半分にならない?
0179デフォルトの名無しさん
2005/10/01(土) 03:43:30あるのは gtk_text のウィンドウだけ。
0180178
2005/10/01(土) 03:45:30ktermのこと
0181デフォルトの名無しさん
2005/10/01(土) 03:54:19よく見るとメモリ1MBくらいしかくってないktermもいるから、
たぶんそれくらいにはなるね。
0182デフォルトの名無しさん
2005/10/01(土) 17:02:17いつの話だよ
0183デフォルトの名無しさん
2005/10/01(土) 17:59:35ttp://doc.trolltech.com/4.0/gpl.html
TrollTech に金を払った場合にはGPL以外のライセンスも
選択できるけどね。
ttp://doc.trolltech.com/4.0/commercialeditions.html
> only if you have purchased a commercial edition of Qt
もしかして、ライセンスも確認せずに Qt 使ってるのか?
0184デフォルトの名無しさん
2005/10/02(日) 11:50:33「いつの話だよ」は、「いまどきならGPLな商用ソフトもありだろう」ってことじゃないのかな。
「GPLな商用ソフト」が通用するのは限られた分野だとおもうけど。
0185デフォルトの名無しさん
2005/10/02(日) 12:06:23どちらが多いと思う? 公開せずに作るって方が圧倒的に
多数じゃないかなあ?
だから使えないとは書かずに使いづらいって書いたわけで。
公開前提で作る企業がゼロだというつもりはない。実際に
ゼロではないしね。
0186デフォルトの名無しさん
2005/10/02(日) 14:13:420187デフォルトの名無しさん
2005/10/03(月) 00:54:060188デフォルトの名無しさん
2005/10/03(月) 01:19:14なにか覚えるとするとGtkがいいんですかね?
自分的にはGtkのアプリを使うときよく落ちるっていう感じがするんですけど
OpenMotifとかのほうがいいですかね?
でもそれだと入れてない人もいるし・・・
Motif ってでもGtkとかに比べるとかなり軽量ですよね?
0189デフォルトの名無しさん
2005/10/03(月) 12:31:08>>175 で比べた内容に限ると、gtk1 は Motif と同じくらいか、
若干Motif よりも軽量だった。従って、その推論とは逆の結果。
やってみるまでは、俺も Motif の方が軽いんじゃないかと思って
たんだけどね。
なお、gtk2 は gtk1 よりも 6割くらい使用メモリが増えてたので、
Motif よりも重かった。
0190デフォルトの名無しさん
2005/10/03(月) 22:10:22お前らは何がいいの?
0191デフォルトの名無しさん
2005/11/06(日) 16:23:04ライセンス払ってまで純正motif使う価値はあんまりない。
0192デフォルトの名無しさん
2005/11/13(日) 02:05:140193linux初心者
2005/11/20(日) 23:28:57xlibを用いたCについて勉強中です。
Xlibの標準ヘッダーファイルを入手して所定の場所に置きたいのですが、
どのパッケージをインストールすればいいのでしょうか。
共有ライブラリはあるのですが、ヘッダーファイルがどこにも見当たりません。
一番最初にdebianをインストールした時には、ヘッダーファイルはあったのですが、
再インストールした際、ヘッダーファイルがインストールされなかったようなのです。
どうか、ヒントだけでもよろしくお願いします。
0194デフォルトの名無しさん
2005/11/21(月) 11:36:220196デフォルトの名無しさん
2005/12/08(木) 00:45:3001が全角だし左右のバーも長音記号「ー」になってるのが
すごく気になる
0197デフォルトの名無しさん
2005/12/17(土) 15:18:41「ー」はどう見ても間違いなので気になる。
0198デフォルトの名無しさん
2006/01/17(火) 15:41:220199デフォルトの名無しさん
2006/01/18(水) 20:15:030200デフォルトの名無しさん
2006/02/24(金) 10:48:450201デフォルトの名無しさん
2006/04/09(日) 05:09:30↑ここの一番下みたいに XImage を自分で作るのって普通なんでしょうか?
だとしたら、XCreateImage() がある意味ってあまり無いのかな。
0202201
2006/04/10(月) 22:43:14問題無さそうですね。
0203デフォルトの名無しさん
2006/05/11(木) 13:37:07WindowsでいうとSetWindowLong() / GetWindowLong()でthisポインタを設定/取得する感じです。
XLibではどうすればいいでしょうか?
struct MyWindow {
Window window;
int extraData1; // ウィンドウに関連付けたい各種データ
int extraData2;
};
static const int WNDCNT = 16;
int main(int argc, char** argv) {
Display* display = XOpenDisplay("localhost:0.0"); MyWindow wnds[WNDCNT];
for (int i = 0; i < WNDCNT; ++i) {
wnds[i].window = XCreateSimpleWindow(...); wnds[i].extraData1 = rand(); wnds[i].extraData2 = rand();
XMapWindow(display, wnds[i]);
XSelectInput(display, window, KeyPressMask | KeyReleaseMask etc);
// Windowsならここで SetWindowLong(wnds[i].window, GWL_USERDATA, &(wnds[i])) して MyWindowへのポインタを登録できる
}
while (1) {
XEvent event; XNextEvent(display, &event);
switch (event.type) {
case KeyPress:
// Windowsならここで GetWindowLong(event.window, GWL_USERDATA) して MyWindowへのポインタを取得できる
break;
case KeyRelease:
// Windowsならここで GetWindowLong(event.window, GWL_USERDATA) して MyWindowへのポインタを取得できる
break;
}
}
}
0204デフォルトの名無しさん
2006/05/11(木) 14:09:33Windowは単なるIDだから(ファイルハンドルみたいなもん)、
こんくらいしかないんじゃね?
struct MyWindow *
Window2MyWindow(Window w)
{
int i;
for (i=0;i<WNDCNT;i++)
if (wnds[i].window == w)
return &wnds[i];
return (struct MyWindow *)NULL;
}
0205デフォルトの名無しさん
2006/05/11(木) 19:49:550206デフォルトの名無しさん
2006/05/12(金) 15:24:56>>203の用途だと、すげーオーバーヘッドありそうだな…
0207デフォルトの名無しさん
2006/05/12(金) 23:16:20そうか?プロパティ使った設計は至極真っ当だと思うけど。
0208デフォルトの名無しさん
2006/05/13(土) 08:16:10XGetWindowPropertyて毎回パケット投げてサーバに問い合わせるんだぞ?
回線によっちゃ、キーの反応がすごく悪いアプリケーションになる気がするけどなぁ。
0209デフォルトの名無しさん
2006/05/13(土) 14:57:00プロセス間でやりとりするようなデータを置くならともかく
プロセス内で閉じてるんであれば
ウィンドウIDとそれに関連するデータはひとつのオブジェクトと
するのが「まっとう」なのでは?
0210デフォルトの名無しさん
2006/05/13(土) 16:47:120211デフォルトの名無しさん
2006/05/14(日) 11:43:520212デフォルトの名無しさん
2006/05/15(月) 19:02:050213デフォルトの名無しさん
2006/05/15(月) 19:25:01好き好んで生Xlib使ってる人は少ないんじゃないですかねえ。
0214デフォルトの名無しさん
2006/05/15(月) 20:35:500215212
2006/05/16(火) 03:09:01確かに始めに作るのは大変だけど昔に作った部分の使いまわし使いまわしで
マウスとかでのコピーでも全然大変じゃないよ
なんでそれにこだわるか聞かれてないけど説明すると
自分の環境にはGtkとかQt, Motifは邪魔だから入れてないし
XをインストールしたときにKtermとかはすんなり入るのに、例えばGtk使うアプリがあったら
それまでコンパイルがするのがまんどくさい。
自分はほとんどKtermしか使わないからっていうのもあるけど。
だから、自分もXlibとかしか使わないのを作ってその環境でも普通に使えるのを作ってる
実際作ってみるとそういう環境の人がかなりいるのが分かってうれしいよ
0216デフォルトの名無しさん
2006/05/17(水) 15:54:47自分もそうおもいます。
一度 Qt をかじったこともありますが、あれよあれよと言う間に バージョンが
あがって、以前に作ったものがコンパイルできなくなったので嫌になりました。
0217207
2006/05/17(水) 16:17:55PropertyNotifyイベントをハンドルして値を再取得する作りを想定しているが、
そりゃ、あまりにも頻繁に更新されるデータにプロパティを使うのは適さない
だろう。
0218デフォルトの名無しさん
2006/05/18(木) 06:16:560219デフォルトの名無しさん
2006/05/31(水) 20:18:370220デフォルトの名無しさん
2006/05/31(水) 20:55:25つ[xwd]
つ[xv]
つ[imageMagick]
0221デフォルトの名無しさん
2006/06/01(木) 00:06:41ありがとうございます
0222デフォルトの名無しさん
2006/06/04(日) 01:49:14そういうことって出来ないですかね?
XCreateSimpleWindowだとtwmで、マウスで位置を決めるか適当に配置かしか選べません。
0223デフォルトの名無しさん
2006/06/04(日) 02:32:29XFree86やX.orgは、バージョンアップしても動くのでしょうか?
0224デフォルトの名無しさん
2006/06/04(日) 04:08:30WindowManagerによらず場所を決めたいのなら、
WindowManagerの支援を全て切り捨ててWindowを作るしか。
その代わり、枠もつかなきゃシステムメニューもタイトルバーもつかないが。
それがいやだったら、表示後移動するって方法で逃げるくらいかな。
0225デフォルトの名無しさん
2006/06/04(日) 04:10:05XSetStandardPropertiesのhintに座標つっこんでおく。
0226デフォルトの名無しさん
2006/06/04(日) 04:21:53どういうこと?
0227デフォルトの名無しさん
2006/06/04(日) 04:24:420228222
2006/06/04(日) 05:23:38ありがとうございます。
一応確かめたところ、twmではhintsにいれたところ固定でウインドウが出力されました。
XSetStandardPropertiesじたい知りませんでしたし、調べているうちにいろいろな物があることを知り
自分ももっといろいろと知れたらと思うのですが、皆さんはどのようにXlibを勉強したのでしょうか?
0229222
2006/06/04(日) 06:02:01twmではできましたけど、BlackBoxじゃできないようになりました・・。
BlackBoxはXCreateSimpleWindowには従うし・・。 orz
他にはないですかね・・
0230デフォルトの名無しさん
2006/06/04(日) 10:15:58/ || :ヽ
┌|(⌒ヽ :|| ..:⌒: |┐ / ̄ ̄ ̄ ̄ ̄ ̄ ̄
|::|::ヽ.__:):||(___ノ ::|::| │
|:|: .. :|| .. |:| │
:|: .. || ..|| < 日本語でおk
:\ [_ ̄] /::| │
:: |\|_|_|_|_/:::| \________
__| | / / :|___
0231デフォルトの名無しさん
2006/06/04(日) 16:44:46そういう関数名はなんですか?
0232デフォルトの名無しさん
2006/06/04(日) 18:20:58あれ、そんじゃ blackbox て一般的な X11 のアプリで -geometry で座標指定しても効かないの?
それとも XSetWMHints でもっと細かく指定しなきゃならんのかな。initial_stateあたりとか。
>>228
ソース読むくらいかなぁ。X11だとマニュアルから当たるよりは
同じようなことを実現してるプログラムのソース見たほうが早いことはあるね。
0233231
2006/06/04(日) 18:42:57クリックされたら色を変えたいんですけど
XSetBackgroundを変えて再マップしても変わりません
どなたかサンプル的なコードをお願いします
0234デフォルトの名無しさん
2006/06/04(日) 19:27:32XLib直に使ってるの?
XSetBackground()はGCの関数だからGCの基本的な使い方を知る必要があるわけだけど大丈夫?
さもなくばXSetWindowBackground()かなぁ。こっちは使ったことないからよく判らんが。
#Toolkitを使ってたらToolkitが色変えちゃう気もするしねぇ……
0235デフォルトの名無しさん
2006/06/04(日) 19:45:10XClearWindowあたり(かな)で、ちゃんと描画しなきゃダメ。
0236デフォルトの名無しさん
2006/06/04(日) 19:48:43いいえ。
はい。
生半可な知識乙。
0237デフォルトの名無しさん
2006/06/24(土) 12:51:48お勧めの画像変換ライブラリとかってありますか?
PerlのImageMagickで変換すると遅くて遅くて・・。
0238デフォルトの名無しさん
2006/06/24(土) 15:40:36>PerlのImageMagickで変換すると遅くて遅くて
PerlにはImageMagickはありません。
ImageMagickには画像変換関数もあれば画像変換ツールもありますが、どちらも処理速度は(ほぼ)同じです。
#当然と言えば当然。
ついでに言えば、画像変換の処理速度の問題はXlibにはなんら関係がありません。
#まぁ、Xlib自体が遅いがな。
0239デフォルトの名無しさん
2006/06/25(日) 00:18:08gdk-pixbufってGtk+じゃないのか?
0240デフォルトの名無しさん
2006/06/26(月) 18:13:150241デフォルトの名無しさん
2006/06/26(月) 18:17:17PutPixel()
ただし、かなり遅いので必要なら別途別の手段を講じること。
#演算が遅いのではなくプロトコルそのものが遅いので、XImageを使うなりなんなり。
0242デフォルトの名無しさん
2006/06/28(水) 03:38:080243デフォルトの名無しさん
2006/06/28(水) 05:17:31よしんばXPutPixel()だったとしたらXImageへの描画だし。
0244デフォルトの名無しさん
2006/07/13(木) 01:17:140245デフォルトの名無しさん
2006/07/13(木) 17:21:05そういうプログラムをつくろうと思っていたのですが、なかなかうまくいきません。
XDrawPointだと表示する色をしていできないようなのですが、座標と色を指定して置くことはできないんでしょうか?
0246デフォルトの名無しさん
2006/07/13(木) 17:24:22できます。GCについて勉強してください。
0248デフォルトの名無しさん
2006/07/15(土) 13:51:37無茶苦茶時間がかかります。
VGAサイズのjpegファイルを表示するのに30秒位かかります。
他に方法はありますか?
0249デフォルトの名無しさん
2006/07/15(土) 13:56:49XDrawPoint()で一点ずつ描くのを諦める。
0250デフォルトの名無しさん
2006/07/15(土) 14:45:00そりゃ1ピクセル毎に描画命令送ってんだから遅いだろうよ。
そういうのは普通ローカルにXImage作ってそこに直接描いて最後にXサーバに送る。
0251デフォルトの名無しさん
2006/07/15(土) 16:19:140252デフォルトの名無しさん
2006/07/15(土) 17:44:04スタックを上げるの意味がわからない
0253デフォルトの名無しさん
2006/07/15(土) 18:18:09XMapWindowはウィンドウを表示状態にする。(非表示状態にするにはXUnmapWindow)
XRaiseWindowは重なって裏に回っているウィンドウを手前に表示する。
スタックてのはとりあえず単なるウィンドウの重なり具合と思っとけばよろしい。
0254デフォルトの名無しさん
2006/07/15(土) 18:22:30XMapWindowとXMapRaisedだぞ
だぞ
0255デフォルトの名無しさん
2006/07/15(土) 18:23:06XMapRaised はほぼ XMapWindow + XRaiseWindow かな。
0256デフォルトの名無しさん
2006/07/15(土) 21:21:21XImage全く意味がわからない
0257デフォルトの名無しさん
2006/07/15(土) 21:29:460258デフォルトの名無しさん
2006/07/15(土) 21:36:30しってますか?
0259デフォルトの名無しさん
2006/07/15(土) 22:39:37ほとんど理解してないですけど‥‥
でも実行してみると表示は一瞬ですけど、表示するまでに
30秒ぐらいまたないといけないんで同じです…
こんなものなのですかね?
それとも私の書き方が間違ってるとか‥
0260デフォルトの名無しさん
2006/07/15(土) 22:48:57Xlibは特に理由もなく直接叩くレイヤーじゃない。
0261デフォルトの名無しさん
2006/07/15(土) 22:54:30なんで作ってるかっていうと、Pentium 120MHzのマシンがあるんですけど
それにもGtkとかQt, Motif等のライブラリは一切インストールしてないんで
(コンパイルしようにもどれだけ時間がかかるかわからない…
それでも使えるビュアーがあれば便利だと思って作ってます。
たしかにXV使えば見れることは見れるんですけど、操作が今一なんで‥
0262デフォルトの名無しさん
2006/07/16(日) 00:09:25協力したいけどプログラミングの知識がない・・・。
とりあえず期待しとく。
0263デフォルトの名無しさん
2006/07/16(日) 00:23:570264デフォルトの名無しさん
2006/07/16(日) 01:13:12わかることはgrepかけてみると、XPutPixelを使ってないということくらいです…
どうやってるのか調べようと思っても、チンプンカンプンです。
プログラミングはほとんどやらないので、無謀だったのかな…。
ちなみに、私が書いたコードはこれです。
何か改善の余地があるところでもあれば教えていただけるとうれしいです。
http://wopr.iobb.net/file/main.c
0265デフォルトの名無しさん
2006/07/16(日) 01:23:31XAllocNamedColorはサーバに聞きにいく。
visualからrgbのmaskとshiftもってきて、自分でrgbからpixel値作って
XImageのバッファ直接弄るのがいちばん速いけど、各種depthとか対応しなきゃならないし
そこまでやる気なさそうなソースだから、せめてXAllocNamedColorで問い合わせて把握した
色のピクセル値はキャッシュして使い回せ。普通の画像ならかなりマシな速度になると思うので。
0266264
2006/07/16(日) 04:07:24ありがとうございます。
>XAllocNamedColorはサーバに聞きにいく。
そういう関係のことがまったくわかってないです…
>そこまでやる気なさそうなソースだから、
…。 やる気がないというか、できないです…。説明していただいてることすら理解ができていません。
申し訳ないです。
>色のピクセル値はキャッシュして使い回せ。普通の画像ならかなりマシな速度になると思うので。
http://wopr.iobb.net/file/main2.c
こういうことですかね? 一応やってみたのですけど、30秒程度と表示までの時間はかわりませんでした。
ちなみにstrcmp, strcpyが入ってるので、それを省いてできるか今やってみています。
質問ばかりでもうしわけありません。
0268デフォルトの名無しさん
2006/07/16(日) 12:22:19264 の環境を予想するとたぶん以下のコードで動く.ただし試してない.間違ってたらすまん.
ポイントは 265 が言うように,visual クラスが TrueColor のように読み出し専用の場合は,
XVisualInfo 構造体の red_mask,red_shift やらを使って直接 pixel 値を計算できるということ.
とりあえず,これを頭に入れて xv のソース読め.そうすりゃわかるだろ.
unsigned long set_color(unsigned char r, unsigned char g, unsigned char b)
{
return ((r & 0xf8) << 8) | ((g & 0xfc) << 3) | ((b & 0xf8) >> 3);
// return (r << 16) | (g << 8) | b;// もし depth = 24 ならこっち
}
0269デフォルトの名無しさん
2006/07/16(日) 14:38:240270264
2006/07/16(日) 15:29:47ありがとうございます。 私にはまだほとんど理解できないですが、どうにかして"grep -R red_mask ./*"で
出てきたところが読めるようになれるようにがんばります。
ちなみに、>>265さんの"キャッシュして使いまわせ"と言うのにたいして
私なりに考えて作ってみました。 前にXAllocNamedColorした値と同じなら、前のXAllocNamedColorの値を
使うっていう単純なものですけど…。 しかも、前回の一回分だけ…
http://wopr.iobb.net/file/main3.c
これでVGAサイズのスクリーンショットを表示するのに10秒強位になりました。
数字的にいえば3倍でかなり早くなったんですけど、VGAの同じ色が連続で続くようなイメージなんで
XGAサイズの風景写真とかだと、1分30秒かかるのでまだまだ実用にはほどとおいです…
>>269
もうしわけないです…
0271デフォルトの名無しさん
2006/07/16(日) 17:26:450272デフォルトの名無しさん
2006/07/16(日) 18:20:08ximg->data[n] = c;のような形式で書き直せば手元で試した限り数千倍は早かった。
XGetRGBColormapsでフォーマット調べて頑張れ。
#数日かけてでもツールキットコンパイルしたほうが手間は少ないと思うが
0273デフォルトの名無しさん
2006/07/16(日) 18:31:000274デフォルトの名無しさん
2006/07/16(日) 18:38:51ximg = XCreateImage( display, visual, 24, ZPixmap, 0, 0, hint.width, hint.height, pad, 0);
ximg->data = malloc( ximg->bytes_per_line * hint.height);
for( tmp[1] = 0; tmp[1] < hint.height; tmp[1]++ ){
for( tmp[2] = 0; tmp[2] < hint.width; tmp[2]++){
int idx = ximg->bytes_per_line * tmp[1] + tmp[2] * 4;
ximg->data[idx + 0] = jpeg_buf[tmp[1]][tmp[2] * 3 + 2];
ximg->data[idx + 1] = jpeg_buf[tmp[1]][tmp[2] * 3 + 1];
ximg->data[idx + 2] = jpeg_buf[tmp[1]][tmp[2] * 3 + 0 ];
}
}
0275デフォルトの名無しさん
2006/07/17(月) 00:00:240276デフォルトの名無しさん
2006/07/17(月) 00:11:37GUI作りこむ必要があるときはQtやJava使ってる。
0277264
2006/07/17(月) 03:42:17全く読めなかったです…。
>>274
ありがとうございます。
がんばって調べてみたのですが、わからないです…
なんとなく一瞬でイメージは表示できるようになったんですけど、なんとなく表示されてるって感じで色が滅茶苦茶です。
多分教えていただいたカラーマップが関係あると思うのですが、ちょっとわたしでは理解ができませんでした。
もしよろしければ、これをちゃんと表示できるようにしていただけると本当に助かります。
http://wopr.iobb.net/file/misc.c
すいませんがもしよろしければお願い致します。
0278デフォルトの名無しさん
2006/07/17(月) 04:14:24だからvisual->{red,green,blue}_mask を見て
自分でshiftさせてpixel値を作らなきゃだめだって。
RGBの配置なんてディスプレイ毎に違うんだから
人の環境そのままで動くわけない。
0279デフォルトの名無しさん
2006/07/17(月) 12:46:500280デフォルトの名無しさん
2006/07/17(月) 18:00:51それでも分からないならツールキット使うかsf.jpででも協力者募ってくれ。
そのサイトのハッカー関連コラムなんなんだ。
0281264
2006/07/18(火) 07:17:30ありがとうございます。
ずっと調べてるのですが全く…。
>人の環境そのままで動くわけない。
これってその方法でプログラムをかいたら、他の人は自分の環境にコードを書き直さないと
使えないってことになるんですかね?
できれば汎用的なものがいいんですけど。
>>279
自分でいうのもなんですが、質問ばかりしてスレを消費してしまったりしているので
これ以上続けるのも迷惑かとおもい、できればやっていただければと思いました。
すいません。
>>280
調べているのですが…。なかなか自分がわかるところまではいけません。
>それでも分からないならツールキット使うかsf.jpででも協力者募ってくれ。
やはりろくにソースも読めない人間が、プログラムを書こうっていうのが無謀だったのですかね…。
自分ではできればうれしいのですが、あまり迷惑をお掛けするのもあれなんで
もうしばらくやってみて、できなければあきらめようと思います。 御迷惑をお掛けしてすいませんでした。
>そのサイトのハッカー関連コラムなんなんだ。
そのサイトのアップローダを使っていたのですが、動かなかったので連絡してみたら上げるファイルあったら
メールで送ってくれたら置いてくれるっていうことだったので、あげてもらいました。
そのサイトはわたしとは関係ありません。
0282デフォルトの名無しさん
2006/07/18(火) 07:36:10XpmReadFileToPixmap()とかXpmReadFileToImage()とかあるよ。
Pixmapができちゃえば、後は
XSetTile(dpy, gc, pixmap);
XSetFillStyle(dpy, gc, FillTiled);
XFillRectangle(dpy, xid, gc, 0, 0, width, height);
でいける気もするが。
0283デフォルトの名無しさん
2006/07/18(火) 11:42:36imlib
0284デフォルトの名無しさん
2006/07/20(木) 00:16:25それは新鮮なテクニックだな。脊髄反射で XCopyArea() してる俺は凡人か…(´・ω・`)。
0285264
2006/07/20(木) 00:34:42ありがとうございます。
今現在そのライブラリのソースがないので、ダウンロードして調べてみようと思います。
内容がちょっとわからないのですが、アマゾンでX-window実用グラフィック入門という本を注文してみました。
どうにか自分でもできるようにがんばってみたいと思います。
>>283
調べてみると、いろいろな画像形式に対応している上に変形なども行ってくれるみたいですね。
ありがとうございます、取り敢えずはそれで作ってみたいと思います。
0286264
2006/07/20(木) 00:56:09gtkとperlとかいろいろと要求されます・・・。
0287264
2006/07/21(金) 22:08:28全然役に立たない・・。
0288デフォルトの名無しさん
2006/07/22(土) 06:57:160289デフォルトの名無しさん
2006/07/22(土) 09:28:40ぐぐるとその本を参考資料にしている大学があるようなんだが。
0290デフォルトの名無しさん
2006/07/22(土) 13:43:14誰かまともというかチュートリアル以上のものを書いて欲しいが
売れないんだろうな。
0291デフォルトの名無しさん
2006/07/22(土) 21:24:47X11R4あたりだったが、Xlib独自の部分だけならあれで十分だったなあ。
0292デフォルトの名無しさん
2006/08/07(月) 22:38:25そのイベントが本来送られるはずだったwindowを得ることはできますか?
0293デフォルトの名無しさん
2006/08/08(火) 02:03:59event->subwindow がそうでない?
xwininfoあたりがやってるのでソース見て真似すれ。
0294デフォルトの名無しさん
2006/08/08(火) 22:46:03レスどうもです。やってみます。
0295デフォルトの名無しさん
2006/11/02(木) 01:01:280296デフォルトの名無しさん
2006/11/02(木) 01:31:35『X Windowで遊ぶ本』と内容一緒っぽいけど、何か違うの?
著者も出版社も一緒だけど…
0297デフォルトの名無しさん
2006/11/02(木) 23:37:22その本買って読んだけど、目次じゃやってること同じだと思う。
感想としては、読んでも意味無いね。
ほとんどなんの説明もしてないし、コードの大半はXlib関係ない
0298デフォルトの名無しさん
2006/11/03(金) 19:02:22でもサンクス >>297
0299デフォルトの名無しさん
2007/01/14(日) 21:12:04ウインドウ表示やイベントループの基本的なところは
Win32APIに相当するものがあって大体理解できたました。
でもWin32APIにあるメニュー関連処理に対応するものが
見当たらない気がします。無いのでしょうか?
0300デフォルトの名無しさん
2007/01/14(日) 21:34:03その辺りはXlibより上流のToolkitの仕事かな。
でもどうせだから、更に上流のMotifなどのWidgetを使う方がいいと思うし、
それならいっそGnomeで作ってしまえ、とも思う。
まぁあれだ、Xlibには最低限しかないと思っておけば間違いない。
0301デフォルトの名無しさん
2007/01/15(月) 00:25:570302デフォルトの名無しさん
2007/01/15(月) 19:34:36Win32APIなおれはメニューは最低限だと思ってた…。
メニューのリソースなんかは面倒見てくれて、
イベントの取得は自分でループ回したいような
レイヤー(というのかな?)はどんなものが
あるでしょうか?
要はWin32API(非MFC)から同じような構造を保ったまま
Xwindow上に移行するオススメが有れば、と。
0303デフォルトの名無しさん
2007/01/15(月) 20:23:12Xlibだとボタンさえないからな。
0304デフォルトの名無しさん
2007/01/15(月) 21:37:53上流のって、イベントループ部分がフレームワークになってて
隠蔽されてないですか?
ボタンは要らないんです。メニューだけ欲しい…
0305デフォルトの名無しさん
2007/01/15(月) 23:29:57ここはXlibスレだ。それ以外のライブラリはスレ違いだ。
寧ろあんたの環境に合わせて犬板にでも海栗板にでも逝っちまえ。
つーか、少しXの基礎を勉強して来い。
0306デフォルトの名無しさん
2007/01/17(水) 23:07:17そんなのあったんだね。知らんかった。
しかも結構前から作ってるみたいね。
0307デフォルトの名無しさん
2007/01/18(木) 23:47:19ノンブロッキングなスレッド処理ができるよう作られてるそうだ
http://xcb.freedesktop.org/wiki/
0308デフォルトの名無しさん
2007/01/29(月) 16:56:23ResizeRedirectMaskを指定すると、再描画がうまくいかないのですが、
何が原因として考えられるでしょうか?
windowを小くするぶんにはちゃんと再描画されるのですが、
windowを大きくするとちゃんと再描画してくれません。
ResizeRedirectMaskを外すとちゃんと再描画してくれます。
何かわかるかたいたら教えてください。お願いします。
0309デフォルトの名無しさん
2007/01/30(火) 05:53:53そもそもResizeRedirectMaskの意味わかってて指定してるのか?
0310308
2007/01/30(火) 11:35:18{
}
〜〜〜〜〜 略
event_mask = ResizeRedirectMask | ExposureMask;
//event_mask = StructureNotifyMask | ExposureMask;
XSelectInput(display, window, event_mask);
〜〜〜〜〜 略
while (1) {
XNextEvent(display, &event);
switch (event.type) {
case ResizeRequest:
win_width = event.xresizerequest.width;
win_height = event.xresizerequest.height;
printf("widht: %d height %d\n", win_width, win_height);
redraw(display, window, gc, event);
break;
// case ConfigureNotify:
// win_width = event.xconfigure.width;
// win_height = event.xconfigure.height;
// printf("widht: %d height %d\n", win_width, win_height);
// redraw(display, window, gc, event);
// break;
case Expose:
if (event.xexpose.count == 0) {
redraw(display, window, gc, event);
}
break;
}
}
0311308
2007/01/30(火) 11:37:08簡単に書くとこんな感じなんですが、
これで、ResizeRedirectMask の行とcase ResizeRequest:のとこを
コメントにして、今現在コメントになっているとこを外すと思いどおり
に動作するのですが、StructureNotifyMask だとwindowの移動とかでも
イベントがきてしまい効率が悪いなぁと思い、本当はwindowのリサイズだけ
を拾いたいのですが、
これだと例えば、100x100のwindowを作ったとして
そうすると、最初に作った100x100の部分に関しては再描画されるのですが
windowのサイズを大きくした場合広がった部分が再描画がされません。
ConfigureNotifyイベントでやると問題ないのですが、、、
0312308
2007/01/30(火) 16:57:27ttp://groups.google.com/group/comp.windows.x/tree/browse_frm/month/2003-11/40e2ffb5b933f810?rnum=191&_done=%2Fgroup%2Fcomp.windows.x%2Fbrowse_frm%2Fmonth%2F2003-11%3F
↑ココで似たようなこと質問してる人がいて、
when you select for ResizeRedirectMask. Use StructureNotifyMask and evaluate
ConfigureNotify events.
って答えが返ってきてますね。
0313デフォルトの名無しさん
2007/01/30(火) 20:25:58このイベントマスクはリサイズの要求を捕捉するためのもの
ウィンドウサイズの変更を通知してもらうためのものじゃない
0314デフォルトの名無しさん
2007/02/01(木) 09:54:15ですね。
なんともややこしい。man見ても全然理解できてなかった。
まぁ1つ勉強になりましたわ。
0315デフォルトの名無しさん
2007/03/23(金) 01:20:40VineLinuxでGNOMEなんですが教えてください
もしくはどういう資料にのってるか教えてください
0316デフォルトの名無しさん
2007/03/23(金) 02:56:14XLibにボタンなんて贅沢なもんはありません。
大人しくGnomeを使ってください。
0317デフォルトの名無しさん
2007/03/23(金) 07:28:42GNOMEのたたき方を調べてみます
0318デフォルトの名無しさん
2007/03/23(金) 07:57:15以前は非商用に限りフリーだったんだけど。
0319デフォルトの名無しさん
2007/04/24(火) 19:48:570320デフォルトの名無しさん
2007/04/24(火) 19:50:500321デフォルトの名無しさん
2007/04/24(火) 21:00:29レベルの高い質問プリーズ!
0322デフォルトの名無しさん
2007/04/27(金) 19:35:19メニューやボタンはどうやって出すんですか?
0323デフォルトの名無しさん
2007/04/27(金) 19:53:42Xlibのみを使うのであれば、全部自前で用意してください。
0324デフォルトの名無しさん
2007/04/27(金) 20:35:420325デフォルトの名無しさん
2007/04/27(金) 20:41:25誰が上手い事言えと…
0326デフォルトの名無しさん
2007/05/04(金) 15:58:22このスレを一通りみていたのですが、上の方にGtkとかQtだとバージョンアップすると、それにあわせてプログラムを作り直さないといけない
ということなのですが、Xlibを使ったものだと作り直さずにそのままXのバージョンがあがっても使えるのでしょうか?
0327デフォルトの名無しさん
2007/05/04(金) 21:37:490328デフォルトの名無しさん
2007/05/05(土) 21:17:04Gtkのことは分かりまへん。
Qt 2から付き合ってきましたが、2→3はちょっとの修正で済みました。
3→4は、下位互換クラスを使っても、かなり修正が要りました。
でも、ほとんど同じソースでWindowsでもLinuxでもMacでも動いたんで
Qtを使って良かったと思ってます。
ナマのXlibで組んでいたときは、メニューやボタンから作らんといけな
かったので大変でした。
もっとも、ソース非公開のプログラムを作ろうとしたらQt商用版は高い
ライセンスが必要ですので、目的に応じて検討してください。
0329デフォルトの名無しさん
2007/05/11(金) 23:23:39http://pc11.2ch.net/test/read.cgi/tech/1178432985/42n-
# 以下上記レスと同文
環境:Linux gcc
X上CUIで、マッピングが施される前のキーコード(物理的キーコード)をキーが押下された際に取得したいです。
スキャンコードまで低レベルでなくてよく、xmodmap -pk や xev で調べられる KeyCode に相当するものが丁度いいのですが、
showkey のソースを参考にした方法では /dev/console を Xサーバが握ってしまっていて不可能、
xev のソースの方法ではXウィンドウを生成せねばならず、CUI上で実装する方法が見つかりません…。
ncurses の keybound なども試してみましたがこちらはマッピング後のキー情報しか得られませんでした。
最悪 xmodmap した結果をパースして利用するなりでなんとかなるとは思うのですが、
何か都合の良い方法があるのではないかと諦めきれず質問させて頂きました。
識者の方がいらっしゃいましたらご教授くださいませ。
0330デフォルトの名無しさん
2007/05/13(日) 22:50:520331デフォルトの名無しさん
2007/05/13(日) 22:58:33俺も >>329 と同じ疑問を持って以前調べた事があるけどよくわがんねかった
0332デフォルトの名無しさん
2007/05/14(月) 09:35:33自演か?
余計に意味がわからんぞ
0333デフォルトの名無しさん
2007/05/14(月) 10:43:50漏れは大体判ったよ。
>>329
XWindow上で端末エミュレータを動かし、その中でキーをあれこれしたいということだろ?
Xの思想から言えば、端末エミュレータであれこれするなってことになると思う。
つーか素直に自分で端末エミュレータもどきを実装すればいいだろ。
0334デフォルトの名無しさん
2007/05/14(月) 15:08:19ジエンじゃねーよ…
端末エミュレータ上でごにょごにょするアプリ作ってます
↓
生のキー入力情報が欲しいな
↓
X が上がってるとキー入力は X に奪われてしまうなあ
↓
普通なら X さんからキー入力情報を頂かないといけないのか…
↓
でも、別にウィンドウを開く訳じゃないので X のライブラリなんかリンクしたくないよ
↓
(こんな単純な事はもっと簡単にやる方法があるに違いない!)
って事でしょ。細部は違うかもしれんが、大体こんな感じだ。
0335デフォルトの名無しさん
2007/05/14(月) 18:35:44自分でわかるように書くんじゃなくて、他人に伝えるようにかけよ
0336デフォルトの名無しさん
2007/05/14(月) 18:55:36いや俺も >>334 って事だろうと想像できたが。
もっともそれが真に >>329 の訊きたいことと合致してるかどうかは知らんが。
(まあ多分、結論としては >>333)
0337デフォルトの名無しさん
2007/05/14(月) 19:00:31どこが分からないのか書いてくれよ…
0338デフォルトの名無しさん
2007/05/14(月) 19:18:320339デフォルトの名無しさん
2007/05/14(月) 19:28:07自演の指摘その物が独り相撲なのになあ。
0340デフォルトの名無しさん
2007/05/14(月) 19:44:050341デフォルトの名無しさん
2007/05/14(月) 19:51:40環境変数 DISPLAY と WINDOWID で頑張ってgrabするくらいしかない。
0343デフォルトの名無しさん
2007/05/14(月) 20:23:00漏れも最初の書き込みだけだとわからんかった、歳かな
0344デフォルトの名無しさん
2007/05/14(月) 20:25:08実際は自演じゃないから逆効果なんじゃないかな。
書き込まれた内容だけを見てレスを付けられるようになってくれると良いんだけどね。
0345デフォルトの名無しさん
2007/05/14(月) 20:27:20ターミナルエミュレータの事ではなく、何らかのコマンドラインアプリケーションの事でしょう。
0346デフォルトの名無しさん
2007/05/14(月) 20:35:27「X Server が上がってる状態でコマンドラインのアプリを動かす場合に」って、>>331が言ってるけど
X Clientは別のホストで動いてて・・ 意味がわからん
X Client上でキー入力しか受け取れないと思うけど、それでいいならrootにInputしかけたらいいんじゃないの?
0347デフォルトの名無しさん
2007/05/14(月) 20:43:51「X が上がっていても動く showkey が欲しい」
これでどう?
俺もあなたが言ってる事がよう分からん…
0348デフォルトの名無しさん
2007/05/14(月) 20:45:58man xev
0349デフォルトの名無しさん
2007/05/14(月) 20:51:520350デフォルトの名無しさん
2007/05/14(月) 20:54:57xev はみんな知ってるのよ。
CUI と書いてあるのはウィンドウを開きたくないって事なんですよ。
分かんないかなあ…
0351デフォルトの名無しさん
2007/05/14(月) 20:57:38ルートウインドウも開かないの?
0352デフォルトの名無しさん
2007/05/14(月) 21:12:40あぁ、スマソ。そういう事なら良いかも。
0353デフォルトの名無しさん
2007/05/15(火) 22:26:440354デフォルトの名無しさん
2007/05/16(水) 00:31:28どうしても自演認定したくて仕方がないみたいね。何かトラウマでもあるの?
0355デフォルトの名無しさん
2007/05/16(水) 10:41:570357デフォルトの名無しさん
2007/05/16(水) 20:48:02これ、豆知識な
0358デフォルトの名無しさん
2007/06/06(水) 00:32:48仕事でMotifを使っているプログラムを引き継ぎ・改修することになりました。
その中でXtInitializeを使っている個所があって、表示端末を指定して
出力している個所があります。
表示端末にXサーバが起動していれば問題ないけれど、
必ずしもそうとは限らないし、また指定する方で誤った出力先を指定することもありうるので、
XtInitializeで失敗するときに、ログファイルに出力するようにしたいんです。
ところが、実際に動作させると、なんかXtInitialize内部で死亡(コアダンプとかではなく、通常に)
するので、関数が抜けてきたところでは、判別がつかないっぽいです。
おそらく、標準の動作がそうなんでしょうが、
これを回避(関数内部で終了するのはかまわないがどうにかしてログに残すなど)する
方法はないでしょうか?
お手数ですが、よろしくお願いいたします。
0359デフォルトの名無しさん
2007/06/06(水) 00:55:560360デフォルトの名無しさん
2007/06/06(水) 01:17:560361デフォルトの名無しさん
2007/06/06(水) 01:27:49ライブラリも読め
0362デフォルトの名無しさん
2007/06/06(水) 01:41:27http://pc11.2ch.net/test/read.cgi/unix/1006438540/
と思ったが、
XtInitializeを呼ぶ前に死亡メッセージをログに書いて、
呼んで成功したらログから消せばいいじゃない
0363デフォルトの名無しさん
2007/06/06(水) 08:25:37とりあえず簡易的な(Webなどの)マニュアルを見ましたが、
それには書いてなかったんですよね。
それと、最初ログメッセージ書いておいて後から消すなんて、
そんな器用なことできるんですか?(w
(まあ、できなくはないだろうけど、
私が言う「ログファイル」は複数のアプリケーションが書く可能性がある
ログファイルなんで、消すのすんごく面倒なんですがねw)
Motifスレがあるのは知りませんでした。そっちで訊きますよ。
サンクス。
でも、なんか知っているんなら、とっかかりになることでも
書いていただけると助かるのに、なんてやさしいお方なのかなあ(w
0364デフォルトの名無しさん
2007/06/06(水) 09:49:27添付のマニュアルは読まない人なの?
0365デフォルトの名無しさん
2007/06/06(水) 10:18:01スレ違いの質問でも答えてもらえると思ったら大間違い。
0366デフォルトの名無しさん
2007/06/06(水) 10:32:29こいつの思考回路がめでたいな
0367デフォルトの名無しさん
2007/06/07(木) 00:29:02信じて貰えないと思うけども、Motifのスレがあるのは知らなかったんですよ。
で、しょうがないからここで訊いた、と。
まあ、確かに、他にスレがあるんならスレ違いで俺が悪いです。
ごめんなさいm(__)m
0368デフォルトの名無しさん
2007/06/07(木) 00:43:56あ、添付は初めから無いです。
勿論、専門書読めば別でしょうけども。
とりあえず、やり方分かりました。
0369デフォルトの名無しさん
2007/06/07(木) 00:50:30何か勘違いしてる予感。
0370デフォルトの名無しさん
2007/06/07(木) 09:51:080371デフォルトの名無しさん
2007/06/07(木) 10:07:150372デフォルトの名無しさん
2007/06/18(月) 22:16:130373デフォルトの名無しさん
2007/06/18(月) 22:25:51XGetValues()では事が足りないの?
0374372
2007/06/18(月) 22:42:16GCに設定されている値を調べたいと思っています。
XGetValuesはマニュアルが無かったので、後程調べてみます。
やりたいことというのは、
Display dpy; Window wnd; GC gc; XGCValues value;
....
gc = XCreateGC(dpy, wnd, 0, value);
とすると、GCに何が設定されたのか調べたいと思っています。
value構造体を宣言してなんの変更もせずにXCreateGCをすると、
valueには何が入っているのでしょうか? デフォルト値が入るの
でしょうか?
0375372
2007/06/18(月) 22:47:04valuemaskに0を設定すると、*valuesは無視してデフォルトを設定するんですよね。
valuemaskに、GCForeground | GCBackground | GCPlaneMask を設定したとして
読んでください。
valuemaskは変更して、valuesは何も設定していない時に何が入るのか
調べたいと思っています。
0376デフォルトの名無しさん
2007/06/18(月) 23:08:26valueに値を設定しないということは、これはXに関係なくCの問題で不定値が入っている。
#つまり、設定しないで使ってはいけないということ。
valuemaskが0の場合に限り、valueは完全に無視される。
0377372
2007/06/18(月) 23:55:35ありがとうございます。
XGetGCValuesについては、調べてみます。
0378デフォルトの名無しさん
2007/06/19(火) 10:22:490379デフォルトの名無しさん
2007/06/20(水) 00:33:52だとしたら、BlackPixelの値から定数を引いて行くと
カラーマップみたいなのができるんですか?
0380379
2007/06/20(水) 01:37:29真っ黒になったので、定数を足して行くように作りました。
そしたら、黒から青になるような図の繰り返しの帯ができました。
更に大きい値の定数を足していくと、緑とか赤の繰り返しの帯が
できました。
繰り返すにつれて色が変わって行ってるので、多少の変化はあるよう
なのですが、同じような色の変化の繰り返しになっています。
これはどのような法則で色が決められているのでしょうか?
0381デフォルトの名無しさん
2007/06/20(水) 02:51:36Visual による。
その計算が適用できるのは TrueColor の場合だけ。
0382デフォルトの名無しさん
2007/06/20(水) 02:58:14おそらくred * 0x10000 + green * 0x100 + blueにでもなっているんだろ。
0383デフォルトの名無しさん
2007/06/20(水) 12:57:00分からないのなら答えなくていいから、偽の情報をばらまくな
0384デフォルトの名無しさん
2007/06/20(水) 13:20:02xdpyinfo で見られる red, green, blue mask てのがそうだ。
>>381の言う通り Visual から拾える。TrueColorの場合は、これらを元に r,g,b から計算可能。
depthもいろいろあるからしっかり対応してくれ。
0385379
2007/06/20(水) 23:48:47ありがとうございます。 でも、よくわからないです…。
xdpyinfoででてきた値を書けた値が基準色になるのでしょうか?
> red, green, blue masks: 0xf800, 0x7e0, 0x1f
こうなっているのですが、
0xf800 * 1 = 赤
0x7e0 * 1 = 緑
0x1f * 1 = 青
と言う風な認識でいいのでしょうか?
ちなみに実際にその値を表示させてみると、赤、緑、青が表示されました。
また、例えば黒から少しづつ色を白に近づけて行くにはどのようにすれば
いいのでしょうか?
0386デフォルトの名無しさん
2007/06/21(木) 00:04:49そのパターンだと赤5ビット緑6ビット青5ビットのRGBのようだね。
黒から白までの色を作るには、gray0からgray100までの色名を使うか、
各プレーンの値を計算するか、どちらかになるのかな。
0387デフォルトの名無しさん
2007/06/21(木) 00:20:52> 0xf800 * 1 = 赤
> 0x7e0 * 1 = 緑
> 0x1f * 1 = 青
> と言う風な認識でいいのでしょうか?
ノゥ!
(赤 << 12) + (緑 << 6) + 青
pixel値にbitmask(0xf800, 0x7e0, 0x1f)を論理積したものがその色の要素。
(pixel & 0xf800) >> 12 で赤の成分が取れる。
0388379
2007/06/21(木) 01:50:36ありがとうございます。 色の扱いって難しいんですね。
なんで5bit, 6bit, 5bitの値が出て来たのかも、
> (赤 << 12) + (緑 << 6) + 青
こうなったのかも全く理解できないです…。
XlibをというかC言語自体を触り始めたばかり私には、
まだ敷居が他界みたいですね…。
0389デフォルトの名無しさん
2007/06/21(木) 12:53:27色の話が出ていたので疑問に思ったのですが、RGB各256の値から
色を作りたい場合XAllocColorを使わずに作るには、どうしたらい
いんですか?
0390デフォルトの名無しさん
2007/06/21(木) 13:37:12>>387
0391デフォルトの名無しさん
2007/06/21(木) 14:11:380xf800, 0x7e0, 0x1f を2進数で書いてみればわかるんじゃないかな。
1111 1000 0000 0000
0000 0111 1110 0000
0000 0000 0001 1111
1になってるビットを数えて、各要素の解像度がわかる。1の右の0の数を
数えて、シフトする量がわかる。
(387氏はちょっと間違えていて、赤は11ビットシフト、緑は5ビットシフト)
0392デフォルトの名無しさん
2007/06/21(木) 14:12:270393デフォルトの名無しさん
2007/06/22(金) 18:09:290394デフォルトの名無しさん
2007/10/03(水) 14:16:11ってないですかね?
XVは大きいので、画像を表示だけしてる。 みたいなソースが見たいです。
0395デフォルトの名無しさん
2007/10/03(水) 15:17:59それだけでいいなら、XLibでやっつけたら?
そうでないなら、Intrinsicがどうせ載っているでしょ。
AthenaWidgetやMotifWidgetが使えると思うよ。
つーか、Gnomeならeogを使うのが一番簡単なんだがw
0396デフォルトの名無しさん
2007/10/03(水) 23:45:44すみません。
Pentiumなマシンを貰ったので、それを使おうと思ってるのですが
GNOMEやらはメモリとかスペックの都合でなかなか動きそうにありません。
なので、写真だけは見たいので自分で作れればと思ったのですが
0397デフォルトの名無しさん
2007/10/04(木) 00:14:52作りたいなら止めないけど。
0398デフォルトの名無しさん
2007/10/04(木) 00:31:56XVはライセンスがややこしくない?
ImageMagickは重すぎるだろうし、結局何で表示するん?
0399デフォルトの名無しさん
2007/10/04(木) 06:15:09Javaライブラリにウィンドウを管理してもらってるため
Display や Window が手元にありません。
この状態から拡張イベントを受け取るか
グラブする方法を教えてください。
0400399
2007/10/09(火) 22:26:56うそでした。
0401デフォルトの名無しさん
2007/10/10(水) 03:12:17だれかサンプル書いてやれよ
0402デフォルトの名無しさん
2007/10/10(水) 17:00:050403デフォルトの名無しさん
2007/10/10(水) 18:26:480404デフォルトの名無しさん
2007/10/15(月) 19:07:060405デフォルトの名無しさん
2007/10/17(水) 01:21:45毎回、色をサーバに問い合わせていたら時間がかかりすぎてしまいます。
過去ログでmaskでshiftするというのがあったのですが、よく分かりません。
詳しく教えて頂けると嬉しいです。
0406デフォルトの名無しさん
2007/10/17(水) 14:30:320407デフォルトの名無しさん
2007/10/17(水) 18:36:13英語から始めなきゃダメ?
0408デフォルトの名無しさん
2007/10/17(水) 19:03:530409デフォルトの名無しさん
2007/10/19(金) 14:02:03日本語のものが希望です。
0410409
2007/10/19(金) 15:54:32for ( int j = 0; j < img_width; j++ ) {
color.red = img_data[i][j * 3 + 0 ] * 256;
color.green = img_data[i][j * 3 + 1 ] * 256;
color.blue = img_data[i][j * 3 + 2 ] * 256;
XAllocColor( x_res->display, cmap, &color);
XSetForeground( x_res->display, x_res->gc, color.pixel);
XDrawPoint( x_res->display, x_res->mywd, x_res->gc, j, i);
}
}
こうしていると、非常に表示が遅いです。 XAllocColorが遅いようなのですが、
もっと高速に表示させるにはどうしたらいいのでしょうか?
0411409
2007/10/19(金) 15:58:09for ( int i = 0; i < img_height; i++ ){
for ( int j = 0; j < img_width; j++ ) {
color.red = img_data[i][j * 3 + 0 ] * 256;
color.green = img_data[i][j * 3 + 1 ] * 256;
color.blue = img_data[i][j * 3 + 2 ] * 256;
//XAllocColor( x_res->display, cmap, &color);
XSetForeground( x_res->display, x_res->gc, XBlackPixel( x_res->display, x_res->myscr));
XDrawPoint( x_res->display, x_res->mywd, x_res->gc, j, i);
}
}
とすると、非常に高速に描画されます。
よろしくお願いします。
0412デフォルトの名無しさん
2007/10/19(金) 16:52:16>>248- から嫁。xvやらいろんなプログラムのソース嫁。
0413デフォルトの名無しさん
2007/10/19(金) 18:28:37そのいろんなプログラムに、いいソースを持ったのが無いよ
0414デフォルトの名無しさん
2007/10/19(金) 19:20:350415デフォルトの名無しさん
2007/10/19(金) 19:46:21どんな構造体あるかどんな関数があるか把握しとけよw
0416デフォルトの名無しさん
2007/10/22(月) 21:09:29XCreateSimpleWindowの場合、Windowを作ったときにサイズを指定してるので
サイズの変更はできないのでしょうか?
0417デフォルトの名無しさん
2007/10/22(月) 22:44:030418デフォルトの名無しさん
2007/10/22(月) 22:50:04今じゃほとんど憶えていない自分ですら一発でman出せたくらいに直球だ
0419デフォルトの名無しさん
2007/10/25(木) 14:24:13メモリ範囲外への書き込みになってしまうのでしょうか?
それとも、捨てられたりするのでしょうか?
0420デフォルトの名無しさん
2007/10/25(木) 16:58:480421デフォルトの名無しさん
2007/10/25(木) 21:37:16XGetNormalHintsでWindowサイズを見ても、Windowのサイズを変更する前のサイズがセットされ
ています。
現在のウィンドウサイズを取得するにはどうすればいいですか?
0422デフォルトの名無しさん
2007/10/26(金) 19:37:280423デフォルトの名無しさん
2007/10/26(金) 22:22:13ありがとうございます。
XGetGeometryで実現できました。
これをXHintsに再設定しておけば、次からはXHintsへのアクセスで取得できるんですね。
0424デフォルトの名無しさん
2007/11/11(日) 22:56:40もう必要がないかもしれないけれど、簡易画像表示プログラム。
環境によっては色が変になるかもしれないけれど、その時はごめん。
0425デフォルトの名無しさん
2007/11/11(日) 23:12:18gload01 画像ファイル名
で。
jpeg、png、xwd のフォーマットに対応しています。
0426デフォルトの名無しさん
2007/11/11(日) 23:51:210427デフォルトの名無しさん
2007/11/12(月) 11:52:53私もXlibを使って画像ビュワーを作っているのですが、画像の大きさの変更で悩んでいます。
jpeglibを使うと、1/1, 1/2, 1/4, 1/8サイズにしか縮小できないようなのですが、
ウィンドウサイズに画像をフィットさせたい場合は、どのような方法があるでしょうか?
最悪、ImageMagickで画像サイズを修正しようかと思っていますが、他の方法があれば
教えて頂きたいです。
0428デフォルトの名無しさん
2007/11/12(月) 13:38:450429デフォルトの名無しさん
2007/11/12(月) 23:46:40出来る(表示だけなら端数はごまかしても良いし)。
ジャギーをあまり気にしなければ簡単な方法だけれども、プログラム自体は結構
めんどくさい。
0430デフォルトの名無しさん
2007/11/13(火) 23:07:45別に整数分の1に限らないのでは?
0431デフォルトの名無しさん
2007/11/14(水) 20:26:29無茶しすぎ
0432デフォルトの名無しさん
2007/11/14(水) 23:23:2360%縮小とか、縦横比が元の画像と異なるとかによって変わってくるかなと思って。
s[100][100]からd[60][60]へ変換する場合は、n=100/60=1.6、走査の点を(x,y)とすると、
d[0][0]はx>1.6、y>1.6の範囲の色を平均値を取る。つまり
d[0][0]=s[0][0]、s[1][0]、s[0][1]、s[1][1]の平均値。
d[1][0]はx>3.2、y>1.6の範囲の色を平均値を取る。
d[1][0]=s[2][0]、s[3][0]、s[2][1]、s[3][1]の平均値。
d[2][0]はx>4.8、y>1.6の範囲の色を平均値を取る。
d[2][0]=s[4][0]、s[4][1]の平均値。
とやって行けばいいのかな。
0433デフォルトの名無しさん
2007/11/14(水) 23:25:47寝ぼけてるよ・・・
0434デフォルトの名無しさん
2007/11/15(木) 00:26:200435デフォルトの名無しさん
2007/11/15(木) 22:07:02レンジの中心点からの距離の重み付けをしたほうがいいのでは?
0436デフォルトの名無しさん
2007/11/15(木) 22:40:470437デフォルトの名無しさん
2007/11/18(日) 01:41:070438デフォルトの名無しさん
2007/11/18(日) 23:48:47画像ビュアーなら画像を見る機能さえ付いてたらいいんじゃない?
画像のリサイズとかに対応するより、見る機能を追加しって方がいいと思う
0439デフォルトの名無しさん
2007/12/03(月) 18:56:33ドラッグ側はmousePressイベントでOKとしても、ドロップ側はどうすればどう判断すればいいのですか?
0440デフォルトの名無しさん
2007/12/03(月) 19:41:46何故U/IをXlibにまで降りて実装しようと考える。
普通、GnomeかせめてXtを使うだろ。
0441デフォルトの名無しさん
2007/12/03(月) 20:37:47http://www.freedesktop.org/wiki/Draganddropwarts
http://www.newplanetsoftware.com/xdnd/supporters.html
Xcb や Xlib から始めようというのは間違ってないよ
0442デフォルトの名無しさん
2007/12/06(木) 17:56:30XSendEventでポインタが居るウインドウにイベントを送ればいいのでは、
確かイベントの送り先にPointerWindowかなんかが選べたはず。
0443デフォルトの名無しさん
2007/12/07(金) 22:25:39>普通、GnomeかせめてXtを使うだろ。
おかれている環境によって普通の定義がだいぶ違うと思うけど。
おれの普通だとXtかmotifになるんだが。
0444デフォルトの名無しさん
2007/12/12(水) 18:37:57俺もだ。もしかして監視制御屋さんですか?
0445デフォルトの名無しさん
2007/12/12(水) 18:52:59それぞれいつ頃からXに関わっているかが違う所為かもね。
0446デフォルトの名無しさん
2007/12/20(木) 19:47:480447デフォルトの名無しさん
2007/12/20(木) 22:38:000448デフォルトの名無しさん
2007/12/24(月) 18:02:38シュミレーション屋です。
0449デフォルトの名無しさん
2007/12/24(月) 20:36:470450デフォルトの名無しさん
2008/01/15(火) 21:32:25全てExposeイベントになるのですが、上記のイベントを分けて受け取ることはできませんか?
0451デフォルトの名無しさん
2008/01/15(火) 22:17:40ConfigureNotify と MapNotify で受け取れるんじゃない?
参考 http://tronche.com/gui/x/xlib/events/processing-overview.html
0452デフォルトの名無しさん
2008/01/16(水) 00:25:39ウインドウを動かすだけで、2回発行される理由を知りたい。
0453デフォルトの名無しさん
2008/01/16(水) 04:04:48window managerにもよるんじゃね? xevで確認すれ。
あとは、連続したexposeをclient側でひとつにまとめるとかはよくやる。
0454デフォルトの名無しさん
2008/01/16(水) 17:26:28ウインドウのサイズとぴったり作るとすれば、
ximg->data = malloc( hints.width * hints.height *( sizeof( unsigned long int));
として作れば良いんですかね?
0455デフォルトの名無しさん
2008/01/16(水) 23:11:300456デフォルトの名無しさん
2008/01/16(水) 23:25:54調べてみたのですが、よくわかりません。
自分が調べてコードを書いているのですが、bytes_per_lineは0にしておけば良いと言うことでした。
(どこで調べたのかは忘れてしまいました。)
もしよろしければ、詳しく教えていただけないでしょうか?
0457456
2008/01/16(水) 23:47:18計算してくれて、入るようですね。
bitmap_padは、depthの値にしていたのですがこれも間違っているようでしたので32にしました。
ですが、height * ximg->bytes_per_lineにすると、セグメント違反だと言われます。
メモリを大きく取っていれば問題ないようなのですが…。
0458デフォルトの名無しさん
2008/01/17(木) 02:33:17まとめるって具体的にどうやってるの?
0459デフォルトの名無しさん
2008/01/17(木) 07:56:11連続するイベントは無視して、最後のイベントで処理する。
0460デフォルトの名無しさん
2008/01/17(木) 13:35:48わかんね。
連続してるのはどう判断するの?
例えば3回イベントがくるとしても、その3回っていうのはプログラム側からしたら分からんよね?
どうやってこの次にも同一のイベントが来るって言うのと、これが最後のイベント。って判断するの?
俺が素人過ぎるのかな…。
0461デフォルトの名無しさん
2008/01/17(木) 13:41:53XEventsQueuedが0ならば最後のイベント
0462デフォルトの名無しさん
2008/01/17(木) 14:01:58それをすると、いくつかの種類のイベントがあったら最後のイベントしか実行しないようにするの?
フラグ持っといて、0ならフラグチェックしてフラグ立ってるイベント全部処理する。みたいな感じで処理するの?
0463デフォルトの名無しさん
2008/01/17(木) 14:09:260464デフォルトの名無しさん
2008/01/17(木) 14:14:57while( 1){
XNextEvent( disp, &event);
switch( event.type){
case Expose:
if( 0 == XEventsQueued( disp, QueuedAfterFlush)){
EXPOSE;
}
break;
case KeyPress:
KEYPRESS
break;
}
}
と書いてた場合、最後のイベントがexposeじゃなかったらexposeは無視される。
って話じゃないの?
0465デフォルトの名無しさん
2008/01/17(木) 14:19:30そんなアホなコード書く方が悪いだろ…
0466デフォルトの名無しさん
2008/01/17(木) 14:29:320467デフォルトの名無しさん
2008/01/17(木) 20:23:370468デフォルトの名無しさん
2008/01/17(木) 20:51:290469デフォルトの名無しさん
2008/01/17(木) 22:22:49サンプルも何もないぞ
0470デフォルトの名無しさん
2008/01/17(木) 23:04:14malloc はそれで OK。format は ZPixmap で
>>458
XExposeEvent.count を使う
0471デフォルトの名無しさん
2008/01/18(金) 02:52:53こやってみたけど、exposeが1回じゃ収まらないな
0になって、exposeしている間にexposeイベントが発生してるのかな
0472デフォルトの名無しさん
2008/01/22(火) 03:08:22確かに改めて見てみると、何回かイベントが処理されるね。
処理されない方法ある?
0473デフォルトの名無しさん
2008/01/22(火) 07:32:56flag!=0 && XEventsQueued()==0 の時にexpose処理をすればいいだけなのに、
なんでここはアホの子が多いんだ?
0474デフォルトの名無しさん
2008/01/22(火) 12:17:000475デフォルトの名無しさん
2008/01/22(火) 12:28:54>>473
それは>>471がやってることと同じだから。
人のことを言う前に、時分の頭のことを考えろな。
0476デフォルトの名無しさん
2008/01/22(火) 12:47:40同じじゃない。
expose.countはExposeのRectangleが分割された時に残りのnumRectsが入ってるので、
client側処理の遅延により処理が滞った時は expose.count = 0 の ExposeEvent が複数個
イベントキューに存在することもある。
0477デフォルトの名無しさん
2008/01/22(火) 12:50:03動作確認は普通、_Xdebug=1;のときにするだろ。
0478デフォルトの名無しさん
2008/01/22(火) 19:28:01ExposeとKeyPressのイベントを取ってて、KeyPressでもexpose、Exposeの時も
exposeをしてて、KeyPressでは表示を変えたりWindowのサイズを変えたりして
る。
KeyPressがあったときは、なぜかExposeイベントが発生したり発生しなかったり
で、KeyPressにもexposeをしかけてるのだけど、これを1つにまとめる方法って
あるだろうか?
KeyPressでExposeが怒らなかったときは、exposeは一回しかしないから良いの
だけど、KeyPressでexposeしてExposeも発生すると2回exposeをやってしまう。
0479デフォルトの名無しさん
2008/01/23(水) 00:34:230480デフォルトの名無しさん
2008/01/23(水) 00:48:46別に特殊な事じゃないから
0481デフォルトの名無しさん
2008/01/24(木) 02:20:52日本語のフォントは指定しています。
どのような原因が考えられますでしょうか?
0482デフォルトの名無しさん
2008/01/24(木) 02:46:02setlocaleをfontsetの前に実行していたのが原因のようでした。
失礼しました。
0483481
2008/01/24(木) 03:13:02ある行数以上のファイルで起こるのですが、
i_FI.ISO8859-1: 156: 14
iso8859-15/XLC_LOCALE: fi_FI.ISO8859-15: 168: 41
iso8859-1/XLC_LOCALE: fo_FO.ISO8859-1: 180: 39
iso8859-15/XLC_LOCALE: fo_FO.ISO8859-15: 192: 41
iso8859-1/XLC_LOCALE: fr_BE.ISO8859-1: 204: 39
iso8859-15/XLC_LOCALE: fr_BE.ISO8859-15: 216: 41
iso8859-1/XLC_LOCALE: fr_CA.ISO8859-1: 228: 39
iso8859-15/XLC_LOCALE: fr_CA.ISO8859-15: 240: 41
のような文字列が、大量に出力されます。
これは何を意味しているのでしょうか?
localeとでているので、何かロケールの問題だとは思うのですが、
一定行数以上のファイルを扱わないと、個の文字列は出力されません。
0484デフォルトの名無しさん
2008/02/01(金) 19:01:140485デフォルトの名無しさん
2008/02/18(月) 18:25:36可能です。
以上。
はい次の方。
0486デフォルトの名無しさん
2008/02/18(月) 23:02:56何が可能なんだ?
0487デフォルトの名無しさん
2008/02/26(火) 01:54:250488デフォルトの名無しさん
2008/02/26(火) 14:20:52XGetGeometryで、
src/x.c:51: warning: pointer targets in passing argument 6 of 'XGetGeometry' differ in signedness
src/x.c:51: warning: pointer targets in passing argument 7 of 'XGetGeometry' differ in signedness
と怒られてしまいます。 前は怒られなかったんですが。
XGetGeometryは"unsigned int"を求めているようですが、XSizeHintsが"unxigned int"で確保していないようです。
どうしたらよろしいでしょうか?
0489デフォルトの名無しさん
2008/02/26(火) 23:45:43・コンパイルオプションを一時的に変更する。
・根本から修正してしまう。
0490デフォルトの名無しさん
2008/02/27(水) 05:17:51あと、型に注意してるのってコンパイラが厳格になっただけだろ
0491488
2008/02/28(木) 21:11:14gccも変更されておりました。
0492デフォルトの名無しさん
2008/02/29(金) 00:46:04例えばオセロのようなプログラムを作る場合、ウィンドウに適当に線を引き
クリックされた座標でクリックされた位置を計測してオセロのマスとするのと、
一つのマスに一つのウインドウを作り、クリックされたウインドウでマスとす
るのと、どちらがXlib的なやり方なのでしょうか?
自分が読んでいる本によると、「クリックされる場所はウインドウで判断す
る」的なことが書いてあるため後者だと考えているのですが、前者のほうが簡
単に作れそうですし効率的だと思います。
どちらでも作れるのであれば問題ないとは思うのですが、Xlib的な方法がある
のであれば教えて頂きたく思います。
どうかよろしくお願いします。
0493デフォルトの名無しさん
2008/02/29(金) 01:23:11Motifを使う場合なんかは、絵を貼れるボタンを収容する表型のパーツ(ウィジェット)があるので、
座標計算を一切しないで画面を作ることができる。この差は大きい。
0494493
2008/02/29(金) 01:24:32『Xlibを「生」で使う』
に訂正。
0495デフォルトの名無しさん
2008/03/03(月) 14:58:24Cしかできないんだけど、C++覚えたほうがいいのかな。
0496デフォルトの名無しさん
2008/03/03(月) 16:20:37もう、XmToggleButtonGadgetGetState()はこりごりだ。
# XtにもXtWidgetToApplicationContext()なんてのがあるが。
0497デフォルトの名無しさん
2008/03/03(月) 23:14:010498デフォルトの名無しさん
2008/03/05(水) 03:41:39また、Xt 等を使う場合Xlib は必要無く Xt を使うだけでプログラムが書けるのでしょうか?
プログラミング自体初心者などで良く分かりません。
このままXlib を勉強するのか、それともXt 等の上層ライブラリとそれに必要な言語(C++)
等を、勉強するか悩んでいます。
0499デフォルトの名無しさん
2008/03/05(水) 21:48:44Xt だけ覚えても、細かいウィンドウ処理をする場合には Xlib が必要になるので
両方勉強しておいた方がいいよ。
0500デフォルトの名無しさん
2008/03/05(水) 23:57:14Xlibは、「X Window ハンドブック」で勉強しているのですが、Xtでお勧めの本はありますか?
日本語の書籍が希望です。
0501デフォルトの名無しさん
2008/03/06(木) 00:22:04トッパンのシリーズ。XlibもXtもみんなある。
0502デフォルトの名無しさん
2008/03/06(木) 00:41:16「実践 X-Window Ver.11 プログラミング Xlib と X ツールキット」。
まだ手に入るのかな?
0503デフォルトの名無しさん
2008/03/06(木) 01:06:570504デフォルトの名無しさん
2008/03/06(木) 11:48:340505デフォルトの名無しさん
2008/03/06(木) 13:05:43教科書を読まずにネットに転がっているサンプルコードを改変するだけ
のバカプログラマよりは、はるかにいい。
0506デフォルトの名無しさん
2008/03/06(木) 13:54:38なら、教科書が無いと俺には難しい。
役に立たなくてごめんなさい
0507デフォルトの名無しさん
2008/03/07(金) 14:27:46教科書を馬鹿にする者は、教科書に泣くぞ。
0508デフォルトの名無しさん
2008/05/13(火) 23:05:49バックグランドで走らせているシェルスクリプトから、
X上でキーボードの状態を入手する方法ありませんか?
(xev見たいな機能をWindowを出さないで実行するとかでもOK)
スクリプト実行から○○秒以内に、
X上(どこでも)で、特定のキーが押された場合に、指定したアプリケーションを実行する。
みたいなことがやりたいです。
0509デフォルトの名無しさん
2008/05/14(水) 00:32:09フォーカスがないときにどうやって取得するのかは、知らん。
0510デフォルトの名無しさん
2008/05/14(水) 13:28:07とでも書かれていればレスしやすいんだけどな
とりあえずヘッダでも眺めてみたら?
0511508
2008/05/14(水) 20:51:00Xlib全然関係ないけど、/dev/input/event0 を一定時間ごとに監視ってのを
やろうかと思ったけど、番号event*が固定されない上に、スマートに検出が難しかった感じです。
Xをフックして、キー入力を拾う方法とかないですかね?
0512デフォルトの名無しさん
2008/05/14(水) 22:04:220513デフォルトの名無しさん
2008/05/14(水) 22:13:34どっちでもOKってことですね。
タイマー処理中に、特定のキーが押された状態なのをスクリプトから
検知できるとベスト。
0514デフォルトの名無しさん
2008/05/15(木) 11:31:100515デフォルトの名無しさん
2008/05/15(木) 18:27:17ウィンドウマネージャのキーアサインをカスタマイズして、外部プログラムを叩くだけで十分じゃね?
0516デフォルトの名無しさん
2008/05/15(木) 19:35:50window無しでxevみたいなことをしたいのであれば、XGrabKey() を使えばおk
0517デフォルトの名無しさん
2008/05/15(木) 22:34:37ビットフラグでフィルタして、
XKeycodeToKeysym()で行けそうですね。
後で、試してみます。
0518517
2008/05/16(金) 20:17:41ちょっと、返り値の形式が特殊だったのに手こずりましたが、、、
説明の分かりにくいこと。
0519デフォルトの名無しさん
2008/05/17(土) 06:42:260520デフォルトの名無しさん
2008/05/17(土) 18:21:59disp=XOpenDisplay(hostname); して
以下を回す。
XQueryKeymap(disp, keys);
for( i = 0; i < 32; ++i ){
for( j = 0; j < 8 ; j++ ){
if( keys[i] & ( 1 << j ) ){
kcode_pushed = i*8 + j;
KeySym kysim = XKeycodeToKeysym(disp, kcode_pushed, 1);
}
}
}
0521デフォルトの名無しさん
2008/05/18(日) 02:25:23#include <stdio.h>
#include <X11/Xlib.h>
int
main(int argc,char *argv[])
{
int i, j;
char keys_return[32];
Display *display = XOpenDisplay(NULL);
if (!display) {
fprintf(stderr,"Cannot open display\n");
return 1;
}
XQueryKeymap(display, keys_return);
for (i = 0; i < 32; i++) {
for (j = 0; j < 8; j++) {
if (keys_return[i] & (1 << j)) {
int k;
KeyCode keycode = i * 8 + j;
KeySym *keysym = XGetKeyboardMapping(display, keycode, 1, &k);
if (keysym && *keysym)
printf("%s\n", XKeysymToString(*keysym));
}
}
}
return 0;
}
0522デフォルトの名無しさん
2008/05/18(日) 07:58:210523デフォルトの名無しさん
2008/05/19(月) 12:13:44これだとCPU負荷上がりすぎるんじゃね?
0524デフォルトの名無しさん
2008/05/31(土) 17:57:58main(int argc, char *argv[]) 関数内から
makeWindow(int argc, cha *argv[]);のように作ったmakeWindow関数に
makeWindow(argc, argv); のように引数を渡し、
makeWindow関数内で
makeWindow{
Display *display;
Window window;
・・・ と書いていき、
XSetStandardProperties(display, window, "title", "icon",None, argv, argc, NULL);
のように記述した行でSegmentation faultを起こします。
何が原因なのでしょうか?
0525524
2008/05/31(土) 18:14:11半日悩んでこんなくらだらないミスなんて・・・orz
0526デフォルトの名無しさん
2008/06/27(金) 00:05:05XImageより高速に描画する方法ってある?
比較的軽いシェーディングでもフレームレート落ちるんだが・・・。
XShmImage使うと多少良くなるのかな?
0527デフォルトの名無しさん
2008/06/30(月) 00:30:430528526
2008/07/15(火) 00:49:19プログラムの動作時間とか計ってみたら
XPutImage,XPutPixelがかなり時間がかかってる。
XImage使う以外で、何か良い方法ありますかね?
0529デフォルトの名無しさん
2008/07/15(火) 01:23:050530デフォルトの名無しさん
2008/07/15(火) 10:51:490531デフォルトの名無しさん
2008/07/15(火) 11:03:350532526
2008/07/15(火) 16:30:38>>529
一度Qt覗いてみたけど挫折したんだよな…。
もう少しがんばってみるかー
>>530
やっぱりmit-shmか。ちょっと調べて実装してみます。
>>531
XPutPixelが遅いってことは
Ximageのdataを直接いじればいいのかな?
これもちょっとやってみますー
0533デフォルトの名無しさん
2008/07/16(水) 00:49:54Xlibは、一つの関数呼び出しごとに一回のリクエストが走るものと思っておくといい。
つまり、XPutPixel()なんか使った日には一体何回リクエストが走ることになるやら。
だからこそ、線分にしろ長方形にしろ、まとめて描画する(≒リクエストを送る)関数が用意されているわけで。
0534526
2008/07/17(木) 15:31:16最低限のプログラムでまわすと、実行時間の短縮が目に見えるんだけど
実際シェーディングとかを実装したプログラムに入れてみても、目に見える程違わない…
どこかおかしいのかなぁー
それと、XShmPutImageから投げられる完了イベントってどうやって拾うの?
0535デフォルトの名無しさん
2008/07/17(木) 15:38:04多分君はXlibの基本がわかってないと思う
0536デフォルトの名無しさん
2008/07/18(金) 23:05:04xlibつかう位なら、Java Appletで描画した方がまだ早いでしょ。
0537デフォルトの名無しさん
2008/07/18(金) 23:43:230538デフォルトの名無しさん
2008/07/18(金) 23:59:450539デフォルトの名無しさん
2008/07/20(日) 00:41:38そのJavaAppletは誰が描画するんだ?
0541デフォルトの名無しさん
2008/07/22(火) 18:28:090542526
2008/07/23(水) 00:52:41このサイトみて、わからなかったから質問したんだけど
でも、とりあえずそこには問題ないみたいです。
0543デフォルトの名無しさん
2008/07/23(水) 01:36:390544デフォルトの名無しさん
2008/07/23(水) 12:38:05XShmPutImageは完了イベントを発生させることができるんだけど…
0545デフォルトの名無しさん
2008/10/02(木) 20:14:300546デフォルトの名無しさん
2008/10/07(火) 00:08:47そうなるのかなと思って待ってたけど、その時代はこなかったので
諦めてXlibの勉強を最近始めたよ
■ このスレッドは過去ログ倉庫に格納されています