Xlibに関する質問ー01ー

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
2デフォルトの名無しさん:03/08/04 22:55
↓3取ったやつはバカ
/   /:::::::::::::::::::::::::`'::::::::::::::::::::\ \
 \.  /::::::::::::::::::::::::::::::iVi:::::::::::::::::::::::ヽ/
   ヽ/::::::::::::::::::::::::::::::::| |::::::::::::::::::::::::::|
    l:::::::::::::::::::::i:|:::::::|:|  |/|'l:::::::: i:::::::::|、
    |::::::::::ト:从|'l:|:_::::|'!  / `ー '|:::::::/::ヽ
    N::人::| , ─、`    ,─ 、  |へ':::::::|  >>1
    /:::::::r‐l 〈 i.::::|       |.::::i 〉 | 〉〉::::::|  おまいが、質問したいだけなんだろ?
    |::::::::l〈ヽr 、 ̄      ̄   |ノ::::::::::ト、
    |::::::::ヽ | |    '       /::l::|:::::::::ト、\
   |'i;:::::::/| |     匸)    / Tー、::::;N| ├、
    / ̄/ | ト   r‐、   イ〉  ヽ  ̄  |  |
  /    | | └ ⌒ヽ/   /   |    | /
 /     ヽ |  -'⌒ヽ〉  /   |   /
↑3取ったやつはバカ
51:03/08/04 22:56
>>3
当たり。
61 ◆ZXkirJaN32 :03/08/04 23:01
そっそくだけど。

for(){
〜(処理)〜
}

と、処理をしているときにイベント(マウスクリック等)を拾いたいのです。
VBの「events」みたいな働きをするのってありますか?

もしくは、関数かなにかを周期的にCALLさせながら、イベントを拾うみたいなことって
できるでしょうか?
VBの「events」は知らないが、イベントを取得する関数は XNextEvent() だ。
キューから取り出さないなら XPeekEvent()。
関連する関数として、 XPending(), XEventsQueued() などがある。
キューに特定のイベントが存在するかどうかをチェックするには、
XIfEvent()、 XCheckIfEvent() もしくはXPeekIfEvent()を使用する。
XIfEvent()は目的のイベントがなければブロックする。
XCheckIfEvent()はノンブロッキング。
XPeekIfEvent()はイベントをキューから取り出さない。

91 ◆ZXkirJaN32 :03/08/04 23:17
>>7-8
ありがとうございます。
ちなみに ConnectionNumber() でファイル記述子が取得できる。
これを select することで event を待つ方法もある。
(もちろん他のファイル記述子も一緒に使える)
XtだったらXtAppAddInput()というのもあるけど。
注意しなければいけないのは、Xはサーバ/クライアントのアプリになるため、
ソケットの向こう側にあるイベントとこちら側のキューにたまっているイベントがあることだ。
キューにあるイベントをすべて処理したからといって、もうイベントが残っていないとはいえない。
>11
Xtは死滅したと思ってた。 まだ現役なのかなぁ?

EclipseのMotif版はXtか?
ちょっと古いみたいだが、リンクを貼っておく。
ttp://xjman.dsl.gr.jp/
>>13
MotifはXtじゃないだろ?たしか。
MotifはXtだ。
保守
保守
19山崎 渉:03/08/15 16:02
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
保守 死ね 山崎
保守
糞スレを保守するな。
FORTH は屑!
24デフォルトの名無しさん:03/08/29 23:35
WMみたいにキーイベントをグラブするにはどうしたらいいんですか。
>24
そこまでわかっているのなら、ぐぐればすぐわかるのに。

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;
2625:03/08/29 23:46
>24
ICCCMも読んどけよ。
27デフォルトの名無しさん:03/08/30 00:56
XLIB?
昔そんなの鼻高々に一生懸命やってる奴いたよ!
今はみんな失業者だよ!
そんな過去の遺物もういらねーよ!
Xlibなんか弄ろうとしても時間の無駄だよ
gtkなりQtなり
 Xlib が 見 え な く な る ぐ ら い
囲った方がいい
XIM って Xlib 使ってるの?
3024:03/08/30 12:32
>25
御親切にどうも。
英語は頭が理解する前に目が潰れるので聞いてしまいたい、

display = XOpenDisplay( NULL );
window = DefaultRootWindow( display );
XGrabKey( display, keycode, mode, window, True, GrabModeAsync, GrabModeAsync );
XSelectInput( display, window, KeyPressMask | KeyReleaseMask );
XNextEvent( display, &event );

なにが悪いのだ。


>27
>28
趣味やし、プログラマになる気はないし。
GtkとかQtとかあるのに、なんでいまさらXlibなのさ
Xlibで十分なのに、なんでわざわざGtkとかQtなのさ
>>32
私にとっては、Xlibで十分とは言えないが、あとアテナ・ウィジットが
あれば問題ない。Xtもこのスレで良いのか?
XtでTCPのacceptってどう扱えばよいのでしょうか?
タイマーイベントでnonblockのacceptをポーリングしかない?
listenしているところにconnectがきたというイベントを
XtAddInput()することはできないのでしょうか?
>34
へ? XtAppAddInput でできるっしょ。
XtAddInputでもいいけどさ。
>35
間違えた。XtAppAddInputでいいんだけど、
filenoには何を指定すればいいんですか?
socket fdで試してみたけどぜんぜん反応してくれなかったんですが・・・
>36
listen(s, backlog) してから XtAppAddInput()すればいいんだけど...
>37
やっぱりsocket,bind,listenしたsockfdをみればいいんですね・・・
なんか間違ってたかもしれないので、もう一度やってみまつ。
今試せる環境がないので・・・

ありがとうございました。
保守
socket?bind?listen?
おいおい、ここはxlibのスレだぜ?GUIのスレだ。
グラフィカル・ユーザ・インタフェースのスレだ。
そういうのはネットワーク関係のスレで話しな。
GUI ねえ。
てす
43デフォルトの名無しさん:03/09/09 14:45
Gtk+でアプリケーションの中に、Xlibで描画する既存のクラスを埋め込もうとしています。
Gtk+で画面やボタンを作ってから、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;
----------------------------------------------------------------

44デフォルトの名無しさん:03/09/09 23:16
age
>>40

Xlibプログラミングでsocketは必要です。
46デフォルトの名無しさん:03/09/10 20:55
ヽ(`д´)ノアゲゲゲ
47●のテストカキコ中:03/09/10 20:56
http://ula2ch.muvc.net/ (このカキコは削除しても良いです)
いや、どうせクソスレだからおおいにテストしてくれ
>>48
なんだとゴルァ Д
50デフォルトの名無しさん:03/09/12 22:51
Webカメラから画像を取り込んで表示したいんですけど、
Xで描画するときはピクセル値を指定しないといけませんよね?
RGBデータを1ドットづつXAllocColorで変換したんですけど時間がかかりすぎます。
どうすればよいでしょうか?
う〜ん、わかんね。
>>50
XImage はどう?
5350:03/09/13 10:24
>>52
すいません、よくわからないのですが
RGBデータから直接Ximageを作れるということですか?
今のところRGBからPixel値に変換したデータからXimageを作って
XPutImgeで出力しようと思っています。
Visual が TrueColor なら visual の rgb mask から Pixel 値を決めうちできるよ。
XAllocColor 要らない。
5550:03/09/13 15:15
>>54
レスありがとうございます。
よくわからないので、もう少し勉強してみたいと思います
オーバーレイで表示できないのかな。
保守
保守
59デフォルトの名無しさん:03/09/17 20:56
XPM画像の、縮小、拡大の仕方を教えてください。
>>59
それはおそらく Xlib とは関係ありませんが
netpbm でも参考にしたらどうでしょう。
>>60
多謝。
保守の一手
保守の言葉攻め
保守の商事
hosyu
保守
保守
athena widget 使ってる人いますか?
>>68
使おうとして学習中。JavaやVBになれた軟弱な
脳みそにはなかなかツライ。
内輪で配付する X のアプリを作ろうと考えているのですが、各人の環境がまちまち
なので(Gtk+ も入ってたり入ってなかったり)、スタティックリンクして使える
ツールキットを探してたんだけど、日本語が通ってまともなライブラリって無いです
ね。っつー事で Xaw + Xt で行こうかなと思ってます。
他になんか良いのがあったら教えて下さい。
他の人がGtk+を入れればいいやン。
いやだも〜ん。
>>71
まぁそれも一つの(唯一の?)手だけど、そこまでやるのはしんどいです。
74Uボート:03/10/10 20:59
浮上
保守
リストとかボタンとかを作る時って、それぞれに対してウィンドウを作っているのですか?
例えばメニューウィジェットを作る時は、メニューの項目分のウィンドウを作っているの
でしょうか?
80デフォルトの名無しさん:03/10/12 21:18
取り敢えず Xlib 駆使して widget set を作るチュートリアルが欲しい。
Xt 使わないで Xlib 直接触ってるから速いぜっていう toolkit は多いけど、大きすぎて
読むのが大変。タブビューとかスクロールリストとか、手ごろなサンプル無いかな。
81デフォルトの名無しさん:03/10/13 16:57
>>78
そういう感じっぽいね。(w
なんか、Xlibで作られた、ボタンとかリストみると
いかにも手作りって感じがイカス。
8278:03/10/15 00:09
X 上の GUI toolkit のソースコードを幾つか見てみましたが、ウィンドウ内ウィンドウは
作ってませんでした。やっぱオーバヘッドが大きいのかな。
考え方は面白いと思うんですけどね。シンプルだし。
83デフォルトの名無しさん:03/10/16 21:22
ウインドウ内に子ウインドウもどき画面をつくって・・
移動、縮小、拡大、閉じる・・・
を実装させてさらにマルチにするとなると中々大変。
途中であきらめました。
せめてX-toolkitぐらいは使ったら?
やだー
86デフォルトの名無しさん:03/10/17 22:55
>>84
プルグラマの真理が分かっていないな。
87デフォルトの名無しさん:03/10/20 22:48
あぶねーあぶねー保守だ。
保守
8982:03/10/21 23:31
嘘。FOX のサンプルアプリで xwininfo したらちゃんと子ウィンドウを作ってました。
Xaw を使ったアプリも当然ながら、子ウィンドウを作ってますね。Motif も Xt を使って
いるので同じですよね。Gtk+ や FLTK も調べてみます。

>>10 さんの通り、普通はpoll or select して X のイベントを取って来てるみたいですね。
手探りながら、簡単なウィジェットセットなら生 Xlib だけで作れそうな気がしてきました。
保守
hoho
92デフォルトの名無しさん:03/11/05 21:13
hosyu
hoyu
for you
me too
保守るだけじゃなく何か寝た書きんさい。
漏れはこれしか見つからなかったけど。

3rd.pdf: スクリーンセーバーの自作
ttp://ayapin.film.s.dendai.ac.jp/~matuda/TeX/PDF/
当分Xlibは必要なくなった、今、コンソールかgd。
いじってると色々面白いけどなあ。>Xlib
環境用意するのが手間がかかるから
あんまり触る人いないのかなあ。
gdって何だろう。
>>99
#include "gd.h"

gif とか、jpg png 作る奴ね。
hosyu
保守
保守
hosyu
ほしゅ
∩∩ ┯
( ・x・)Ф 沈度417/727

∩∩ ┯
( ・x・)Ф 沈度428/727
ほしゅる
hosyi
(・Д・)happy new year
>110
13時間半くらいフライングです

ε===(・Д・) happy new year
ズザー

∩∩ ┯
( ・x・)Ф 沈度464/727
hosyu
ほしゅ
ほしゅ
ほゆ
hoyu
ほしゅ
hosyu
ほしゅ

∩∩ ┯
( ・x・)Ф 沈度582/727


質問でございます。
window maneger て本とにただの一クライアントなんでしょうか?
マネージャとしてなんか手順を取らないでいいんでしょうか?
勝手に他のクライアントのイベントを盗み見るようなことでやってるんでしょうか?
ICCCM
125デフォルトの名無しさん:04/04/03 02:28
最近のだとEWMHもだけど>>123のいってるレベルだとあんまり関係無いかな。
http://www.freedesktop.org/Standards/wm-spec
ベクターグラフィックスライブラリの cairo
ttp://cairographics.org/

基本 C みたいですが、Haskell, OCaml, Mono, Ruby, Python, etc. のバインディング有り。
ライセンスが MIT license なのが嬉しいな。
ベクターグラフィックスライブラリの cairo
ttp://cairographics.org/

基本 C みたいですが、Haskell, OCaml, Mono, Ruby, Python, etc. のバインディング有り。
ライセンスが MIT license なのが嬉しいな。
蒸し返して申し訳ないけど教えてください。
XtAppAddInput()にわたすfdは
socket()、bind()、listen()したfd渡せばいいんだよね。
PF_UNIXを指定した場合、
XtInputReadMaskを受けた後、すぐにXtInputExceptMaskを
どうしても受けてしまう。。。
X11R5ではそんなことなかったのに。今はR6です。
保守ついでに。こんなの見つけた。

ttp://phe.phyas.aichi-edu.ac.jp/~cyamauch/eggx_procall/
130129:04/08/16 02:03
貼付けておいてなんだが、>>129 の作者は OpenGL/GLUT を知らんのかな。
131デフォルトの名無しさん:04/09/26 21:46:55
図書館でXlibの本を発見したもんで,喜々としてXlibの勉強始めてみたけど,
今は必要ないのかなぁ?
132デフォルトの名無しさん:04/10/22 00:41:18
質問です。
デスクトップの任意のウィンドウに表示している文字列を取得することって出来ますか?
よくWindowsの英和辞書ソフトなんかで、マウスカーソルを適当なウィンドウの単語に
もってくと、ポップアップで辞書の内容が表示されるソフトがありますが、あんな感じの
ソフトを仕事でつくることになってしまいますた。。。
よろしくお願いします。
133デフォルトの名無しさん:04/10/23 01:20:49
>>132
質問のレベルから見てお前には荷が重過ぎる仕事だキケー!
辞表の書き方なら教えてやってもいいキケー!
134デフォルトの名無しさん:04/10/23 01:23:35
>>133
うるせぇんだよボケが
その口調がおもしろいとでも思ってるのか?
135いなむらきよし:04/10/24 13:20:15
>>134
『面白いと思って言ってる』と考えてる時点でお前は頭が悪いキケー!
136デフォルトの名無しさん:04/11/02 17:17:56
>>132
xtermなんかはコピペできるでない?
137デフォルトの名無しさん:04/11/02 19:22:25
サーバーにも手を入れてExtensionを書けばサーバー側で描画してるのは取れる。
クライアント側でレンダリングしてるのまで含めると統一的な方法は無いと思う。
セレクションつかえばその辺の問題は無いけど一旦カーソルで選択する必要が
あってマウスカーソルをあわせるだけってわけにはいかないはず。

ぶっちゃけ言ってることそのままやるのは相当大変。
138デフォルトの名無しさん:04/11/22 02:03:56
XサーバーでWindowを生成して、図形書いたりXPutImage使ったりはできたん
ですが、文字を書くにはどうすればいいんでしょうか?
おそらく座標とバッファを渡せば実現できる関数が存在する(MFCの
pDC->textOut() みたいな)と思うんですが・・・。
>>1 にあるサイトのどのヘンにかいてあるとか、教えていただけないでしょうか。
139デフォルトの名無しさん:04/11/25 14:54:43
>>138
XDrawString() とか XDrawText() っつーそのまんまなAPIがあります。

140デフォルトの名無しさん:05/01/06 17:19:28
ある矩形領域に収まるように文字の大きさを調節してPixmapに文字を書き出すにはどうしたらよいのでしょうか?
141デフォルトの名無しさん:05/01/24 13:40:02
top=XtAppInitialize(...);
XtRealizeWidget(top);

こんな感じでXtでウィンドウを表示したのですが、
ターミナル(プロンプト?)からウィンドウにフォーカスが移動しません
マウスでウィンドウタイトルクリックしてもアクティブになりません
助けて
142デフォルトの名無しさん:05/01/24 14:31:37
やっぱXlibだよね。
XlibならXさえ入ってればportableだし。
143デフォルトの名無しさん:05/01/24 14:33:23
雑談してないで答えろよ
144デフォルトの名無しさん:05/01/24 14:34:04
雑談してないで答えろよ
145デフォルトの名無しさん:05/01/24 17:42:25
>>143
どの質問に答えればいいの?
146デフォルトの名無しさん:05/01/26 12:22:21
変な Window Manager 使ってるせいだとか。
twm や fvwm なら無問題 (ぉ

Xt 使ってるなら、XWMHints の input はデフォルトで
True になった筈だよねえ、確か?
147デフォルトの名無しさん:05/01/28 18:40:47
いつも気になることがありまつ。
Defaultなんたらで返る値って、そのアプリ専用なのかWindow System 全体
で共用されてるものなのかどっちなんでそかね?
148デフォルトの名無しさん:05/01/29 01:51:06
基本的にはアプリケーション固有だと仮定しておくのが
安全でしょ。

たとえば DefaultScreen() なんて、環境変数 $DISPLAY や
コマンドラインの --display オプションの設定で変わるもの
だし。
個別にみると、まあいろいろ
149デフォルトの名無しさん:05/02/06 17:07:22
XCopyArea等で取り込んだイメージを画像データとして保存することはできないのでしょうか?
別に取り込んだ画像でなくても、ウインドウから直接でも結構です
検索したら xwdsaveと言うものをみつけました
動作は全くこれで構わないのですが、これはフォートランのものでした
このような物はないでしょうか?
すいませんが教えていただけると幸です
よろしくおねがいします
150デフォルトの名無しさん:05/02/06 21:26:06
わかるかたいませんかね?
一応UNIX板の方にも書きもまさせていただきます
151デフォルトの名無しさん:05/02/07 22:12:02
UNIX板の方でレスがついたから、ここには返事書かなくて
いいよな。
152デフォルトの名無しさん:05/02/08 20:11:48
OS XのX11でtoolkitのお勉強はじめますた
153デフォルトの名無しさん:05/02/10 11:22:49
そうですか
154デフォルトの名無しさん:05/02/11 15:08:58
どうですか
155デフォルトの名無しさん:05/02/12 23:00:28
ほのぼのとするレスですね
156デフォルトの名無しさん:2005/03/29(火) 13:50:04
Xt使わないで、xlibのみで
gtkなんかでいうところのテキストウィジェットみたいな
ことがしたいんですけど、サンプルかなんかあったら教えてください。
157デフォルトの名無しさん:2005/03/29(火) 21:21:42
158デフォルトの名無しさん:2005/03/30(水) 20:24:22
ありがとうございます。
159デフォルトの名無しさん:2005/05/11(水) 09:27:14
hoshu
160デフォルトの名無しさん:2005/06/13(月) 21:24:54
ktermなどのターミナル上でマウスクリック等のイベントを使わずに自分(kterm)のウインドウIDを取得する方法ってあります。
161デフォルトの名無しさん:2005/06/13(月) 21:58:48
環境変数 WINDOWID
162デフォルトの名無しさん:2005/06/14(火) 20:14:20
WindowsみたいなLISTVIEWないですか。
ないですよね。
失礼しました。
163デフォルトの名無しさん:2005/06/14(火) 21:29:51
160です。
>>161
ありがとうございます。

基本的には解決したのですがまだちょっと問題があります。
具体的には、kterm上からtelnetにて他のホストに入った場合にそのホストでの環境変数WINDOWIDがセットされていません。
いろいろ知らべてみたのですが、ウインドウタイトルから該当WINDOWIDを調べる方法しか見つかりませんでした。
この方法だと同一タイトルのウインドウが複数ある環境だとうまく動かないので、なにかほかの方法ありませんかねー。
164デフォルトの名無しさん:2005/06/14(火) 22:05:18
>ウインドウが複数ある環境だとうまく動かないので
いったいなんのためのIDだろう
165デフォルトの名無しさん:2005/06/14(火) 23:16:34
>>164
説明不足でした。
同一タイトルのウインドウが複数あるとすべてのウインドウIDを拾ってしまい必要なIDが特定できない
です。
166デフォルトの名無しさん:2005/07/09(土) 11:03:56
Xlib スレがあるのにそっちを勧める奴はおらんのか。
http://pc8.2ch.net/test/read.cgi/tech/1060005170/l50
167166:2005/07/09(土) 11:05:09
あたた。誤爆した。orz
168デフォルトの名無しさん:2005/08/15(月) 19:26:22
JPEGの画像を開いて表示することはできますか?
方法を教えてください。お願いします。
169デフォルトの名無しさん:2005/09/27(火) 07:28:13
>>168
できる。
gdk-pixbuf ってライブラリを使うのが定番かな。
170デフォルトの名無しさん:2005/10/01(土) 00:57:47
質問させて頂きます
Xlibでウインドウを作りそこに文字を"XmbDrawImageString"で表示しているのですが
マウスで文字をドラッグしたりしても選択されません(すいませんどういえばいいのか分かりません
(kterm等でドラッグしたら文字が反転しバッファに貯められマウスの中ボタンでペーストされる動作
(が行いたいのです
どうすれば選択できるようになるのでしょうか?
171デフォルトの名無しさん:2005/10/01(土) 01:22:02
マウス入力を監視して、ドラッグされたら文字を反転したり、中ボタンが押されたら primary selection から文字列を
ペーストしたりするためのプログラムを書けば、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`
のようにする。
172170:2005/10/01(土) 01:41:16
>>171
ありがとうございます
gtkやQt, Motifも入っていないので、すいませんができればXlibで行いたいです
XtもC++ができないため使えません

KtermもXlibで行っていると思っているのですがこれは違うのでしょうか?
173デフォルトの名無しさん:2005/10/01(土) 02:21:10
> gtkやQt, Motifも入っていないので、

ネットに繋がってれば、ダウンロードしてインストールするだけ
なんだから、インストールすれば? 一から自分で書くと、週単位、
下手すると月単位の時間がかかるよ。

> XtもC++ができないため使えません

Xt 使うのに C++ は要らない。Cだけで十分。
gtk も Motif も Cで OK

> KtermもXlibで行っていると思っているのですが

kterm は Xt 使ってる。
でも日本語copy&pasteまわりはXlibも使ってゴリゴリ書いてるね。
結構大変だよ。charproc.c だけで 5000行を越えている。
174170:2005/10/01(土) 02:30:15
>>173
わざわざありがとうございます
> ネットに繋がってれば、ダウンロードしてインストールするだけ
インストールするのは簡単なんですけど、インストールできないのではなくインストールしていないのです
このマシンのスペックは
CPU: Pentium MMX 120MHz @ 60x1 60MHz
Mem: 16MB EDO
HDD: 340MB
なため、なかなか現実的ではありません


175デフォルトの名無しさん:2005/10/01(土) 03:10:02
Memory 16MB は確かにキツいな。
だが、上のgtkのサンプルプログラムの常駐メモリは2.7MB程度
だったから(NetBSD/i386で測定)、全く使えないほど遅くはない
だろう。gtk1 のバイナリパッケージなら、展開してもディスク
使用量は6MBいかないようだし。

Motif も比べてみたが、gtk よりむしろメモリを必要とするようだ。

どうしてもXlibでのやり方を知りたかったら、gtkのソースを読んでみたら?
176デフォルトの名無しさん:2005/10/01(土) 03:23:38
>>175
16MBしかないのに2.7MBはつらいんじゃ?
実際にはファイル開いて読んだりイベント待ったりいろいろするから
テキスト表示させるにも5MB弱程度食うと思う
そうなると1/3食うことになるからな
X入れて日本語入力できる環境だと10MB弱程度はメモリ消費してると思うし
大惨事だと思う

一応質問ならageとけ
177デフォルトの名無しさん:2005/10/01(土) 03:37:44
確かに小さくはないんだが、kterm あたりでも 1.4MB くうからなあ。
今時のツールキット使って 2.7MB はまあ仕方ないと思うよ。
メモリの足りないマシンだと、2.7MB のうちかなりの部分がpage
outされるだろうから、アクティブに必要とする部分はたぶんもっと
小さいと思うし。
とりあえずgtk1を試してみて、重くて耐えられなかったら考え直すっ
てのがいいんじゃない?
178デフォルトの名無しさん:2005/10/01(土) 03:41:34
>>177
関係ないけどメニュー削ればメモリ半分にならない?
179デフォルトの名無しさん:2005/10/01(土) 03:43:30
>>171のこと? 見れば分かるけど、メニューは最初からないよ。
あるのは gtk_text のウィンドウだけ。
180178:2005/10/01(土) 03:45:30
違う
ktermのこと
181デフォルトの名無しさん:2005/10/01(土) 03:54:19
ああなるほど。
よく見るとメモリ1MBくらいしかくってないktermもいるから、
たぶんそれくらいにはなるね。
182デフォルトの名無しさん:2005/10/01(土) 17:02:17
> Qt でもいいが、ライセンスが GPL なので、商用ソフトには使いづらい。
いつの話だよ
183デフォルトの名無しさん:2005/10/01(土) 17:59:35
いつのって、今でもそうだが?
ttp://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 使ってるのか?
184デフォルトの名無しさん:2005/10/02(日) 11:50:33
>>183
「いつの話だよ」は、「いまどきならGPLな商用ソフトもありだろう」ってことじゃないのかな。


「GPLな商用ソフト」が通用するのは限られた分野だとおもうけど。
185デフォルトの名無しさん:2005/10/02(日) 12:06:23
ソースコード公開前提で作る企業と、そうじゃない企業と、
どちらが多いと思う? 公開せずに作るって方が圧倒的に
多数じゃないかなあ?

だから使えないとは書かずに使いづらいって書いたわけで。
公開前提で作る企業がゼロだというつもりはない。実際に
ゼロではないしね。
186デフォルトの名無しさん:2005/10/02(日) 14:13:42
rxvtは軽いで有名
187デフォルトの名無しさん:2005/10/03(月) 00:54:06
つーか商用なら金払って使えばいいじゃん。
188デフォルトの名無しさん:2005/10/03(月) 01:19:14
今まではGlibで全てやって来たんですけど
なにか覚えるとするとGtkがいいんですかね?
自分的にはGtkのアプリを使うときよく落ちるっていう感じがするんですけど
OpenMotifとかのほうがいいですかね?
でもそれだと入れてない人もいるし・・・

Motif ってでもGtkとかに比べるとかなり軽量ですよね?
189デフォルトの名無しさん:2005/10/03(月) 12:31:08
> Motif ってでもGtkとかに比べるとかなり軽量ですよね?

>>175 で比べた内容に限ると、gtk1 は Motif と同じくらいか、
若干Motif よりも軽量だった。従って、その推論とは逆の結果。
やってみるまでは、俺も Motif の方が軽いんじゃないかと思って
たんだけどね。

なお、gtk2 は gtk1 よりも 6割くらい使用メモリが増えてたので、
Motif よりも重かった。
190デフォルトの名無しさん:2005/10/03(月) 22:10:22
俺はMotifを押すけどな
お前らは何がいいの?
191デフォルトの名無しさん:2005/11/06(日) 16:23:04
貧乏人向けはxlib,富裕層にはgtk
ライセンス払ってまで純正motif使う価値はあんまりない。
192デフォルトの名無しさん:2005/11/13(日) 02:05:14
今じゃ openmotif がタダで使えますがなにか?
193linux初心者:2005/11/20(日) 23:28:57
debian 3.1 r0a (Sarge) i386を使っています。
xlibを用いたCについて勉強中です。

Xlibの標準ヘッダーファイルを入手して所定の場所に置きたいのですが、
どのパッケージをインストールすればいいのでしょうか。
共有ライブラリはあるのですが、ヘッダーファイルがどこにも見当たりません。
一番最初にdebianをインストールした時には、ヘッダーファイルはあったのですが、
再インストールした際、ヘッダーファイルがインストールされなかったようなのです。

どうか、ヒントだけでもよろしくお願いします。
194デフォルトの名無しさん:2005/11/21(月) 11:36:22
Linux板のDebian関係スレで聞いたほうが良いと思うぞ。
195193:2005/11/21(月) 22:57:29
>>194
分かりました。

Linux板のほうで聞くことにします。

アドバイスありがとうございます。
196デフォルトの名無しさん:2005/12/08(木) 00:45:30
全く関係ないけど
01が全角だし左右のバーも長音記号「ー」になってるのが
すごく気になる
197デフォルトの名無しさん:2005/12/17(土) 15:18:41
01が全角なのは、全角でも数字なので間違いではないし許容できるけど
「ー」はどう見ても間違いなので気になる。
198デフォルトの名無しさん:2006/01/17(火) 15:41:22
XLIBでマウスホイールのイベントはどうやって受けるの?
199デフォルトの名無しさん:2006/01/18(水) 20:15:03
ボタンの4/5できます。xorg.confでの設定に因りますが。
200デフォルトの名無しさん:2006/02/24(金) 10:48:45
ホシュ
201デフォルトの名無しさん:2006/04/09(日) 05:09:30
http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/XLIB/xlib6.html

↑ここの一番下みたいに XImage を自分で作るのって普通なんでしょうか?
だとしたら、XCreateImage() がある意味ってあまり無いのかな。
202201:2006/04/10(月) 22:43:14
ImUtil.c を読みました。使い方を間違えなければ、自分で XImage を作っても
問題無さそうですね。
203デフォルトの名無しさん:2006/05/11(木) 13:37:07
イベント処理でウィンドウ毎に関連付いたデータを取得したいです。
Windowsでいうと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;
    }
  }
}
204デフォルトの名無しさん:2006/05/11(木) 14:09:33
>>203
Windowは単なる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;
}
205デフォルトの名無しさん:2006/05/11(木) 19:49:55
XGetWindowProperty は?
206デフォルトの名無しさん:2006/05/12(金) 15:24:56
>>205
>>203の用途だと、すげーオーバーヘッドありそうだな…
207デフォルトの名無しさん:2006/05/12(金) 23:16:20
>>206
そうか?プロパティ使った設計は至極真っ当だと思うけど。
208デフォルトの名無しさん:2006/05/13(土) 08:16:10
>>207
XGetWindowPropertyて毎回パケット投げてサーバに問い合わせるんだぞ?
回線によっちゃ、キーの反応がすごく悪いアプリケーションになる気がするけどなぁ。
209デフォルトの名無しさん:2006/05/13(土) 14:57:00
>>207
プロセス間でやりとりするようなデータを置くならともかく
プロセス内で閉じてるんであれば
ウィンドウIDとそれに関連するデータはひとつのオブジェクトと
するのが「まっとう」なのでは?
210デフォルトの名無しさん:2006/05/13(土) 16:47:12
つーか、でなくたって遅いプロトコルなんだからできるだけ負荷掛けないように作るのが当然だろ。
211デフォルトの名無しさん:2006/05/14(日) 11:43:52
Xt使ってるならXtAddCallback()とか。
212デフォルトの名無しさん:2006/05/15(月) 19:02:05
今Xlibだけで作ってるやつって珍しいのか?
213デフォルトの名無しさん:2006/05/15(月) 19:25:01
>>212
好き好んで生Xlib使ってる人は少ないんじゃないですかねえ。
214デフォルトの名無しさん:2006/05/15(月) 20:35:50
変態……じゃない、大変だと思う。
215212:2006/05/16(火) 03:09:01
ごめん。 俺XLib以外使った事ねぇーや
確かに始めに作るのは大変だけど昔に作った部分の使いまわし使いまわしで
マウスとかでのコピーでも全然大変じゃないよ

なんでそれにこだわるか聞かれてないけど説明すると
自分の環境にはGtkとかQt, Motifは邪魔だから入れてないし
XをインストールしたときにKtermとかはすんなり入るのに、例えばGtk使うアプリがあったら
それまでコンパイルがするのがまんどくさい。
自分はほとんどKtermしか使わないからっていうのもあるけど。
だから、自分もXlibとかしか使わないのを作ってその環境でも普通に使えるのを作ってる
実際作ってみるとそういう環境の人がかなりいるのが分かってうれしいよ
216デフォルトの名無しさん:2006/05/17(水) 15:54:47
>>215
自分もそうおもいます。

一度 Qt をかじったこともありますが、あれよあれよと言う間に バージョンが
あがって、以前に作ったものがコンパイルできなくなったので嫌になりました。
217207:2006/05/17(水) 16:17:55
>>208
PropertyNotifyイベントをハンドルして値を再取得する作りを想定しているが、
そりゃ、あまりにも頻繁に更新されるデータにプロパティを使うのは適さない
だろう。
218デフォルトの名無しさん:2006/05/18(木) 06:16:56
Motifは安定しているよ〜w
219デフォルトの名無しさん:2006/05/31(水) 20:18:37
出力画面を画像データとして保存する方法ありますか?
220デフォルトの名無しさん:2006/05/31(水) 20:55:25
>>219
つ[xwd]
つ[xv]
つ[imageMagick]
221デフォルトの名無しさん:2006/06/01(木) 00:06:41
>>220
ありがとうございます
222デフォルトの名無しさん:2006/06/04(日) 01:49:14
ウインドウの配置座標を確実に決め打ちしたいんですけど
そういうことって出来ないですかね?
XCreateSimpleWindowだとtwmで、マウスで位置を決めるか適当に配置かしか選べません。
223デフォルトの名無しさん:2006/06/04(日) 02:32:29
>>216を読んで思ったのですが、
XFree86やX.orgは、バージョンアップしても動くのでしょうか?
224デフォルトの名無しさん:2006/06/04(日) 04:08:30
>>222
WindowManagerによらず場所を決めたいのなら、
WindowManagerの支援を全て切り捨ててWindowを作るしか。
その代わり、枠もつかなきゃシステムメニューもタイトルバーもつかないが。
それがいやだったら、表示後移動するって方法で逃げるくらいかな。
225デフォルトの名無しさん:2006/06/04(日) 04:10:05
>>222
XSetStandardPropertiesのhintに座標つっこんでおく。
226デフォルトの名無しさん:2006/06/04(日) 04:21:53
>>224
どういうこと?
227デフォルトの名無しさん:2006/06/04(日) 04:24:42
WindowManagerにはhintを無視してWindowを配置する権限があります。
228222:2006/06/04(日) 05:23:38
>>224, 225, 227
ありがとうございます。
一応確かめたところ、twmではhintsにいれたところ固定でウインドウが出力されました。

XSetStandardPropertiesじたい知りませんでしたし、調べているうちにいろいろな物があることを知り
自分ももっといろいろと知れたらと思うのですが、皆さんはどのようにXlibを勉強したのでしょうか?
229222:2006/06/04(日) 06:02:01
ああ・・・
twmではできましたけど、BlackBoxじゃできないようになりました・・。
BlackBoxはXCreateSimpleWindowには従うし・・。 orz
他にはないですかね・・
230デフォルトの名無しさん:2006/06/04(日) 10:15:58
>>1-230
    /    ||    :ヽ
   ┌|(⌒ヽ :|| ..:⌒: |┐   / ̄ ̄ ̄ ̄ ̄ ̄ ̄
   |::|::ヽ.__:):||(___ノ ::|::|  │
    |:|: ..   :||    .. |:|  │
    :|: ..   ||    ..|| < 日本語でおk
     :\ [_ ̄] /::|   │
::     |\|_|_|_|_/:::|    \________
   __| |   / / :|___
231デフォルトの名無しさん:2006/06/04(日) 16:44:46
背景色をイベントが起きたら変えたいのですが、
そういう関数名はなんですか?
232デフォルトの名無しさん:2006/06/04(日) 18:20:58
>>229
あれ、そんじゃ blackbox て一般的な X11 のアプリで -geometry で座標指定しても効かないの?
それとも XSetWMHints でもっと細かく指定しなきゃならんのかな。initial_stateあたりとか。


>>228
ソース読むくらいかなぁ。X11だとマニュアルから当たるよりは
同じようなことを実現してるプログラムのソース見たほうが早いことはあるね。
233231:2006/06/04(日) 18:42:57
ないですかね・・。
クリックされたら色を変えたいんですけど
XSetBackgroundを変えて再マップしても変わりません

どなたかサンプル的なコードをお願いします
234デフォルトの名無しさん:2006/06/04(日) 19:27:32
>>233
XLib直に使ってるの?
XSetBackground()はGCの関数だからGCの基本的な使い方を知る必要があるわけだけど大丈夫?
さもなくばXSetWindowBackground()かなぁ。こっちは使ったことないからよく判らんが。
#Toolkitを使ってたらToolkitが色変えちゃう気もするしねぇ……
235デフォルトの名無しさん:2006/06/04(日) 19:45:10
XSetBackgroundはデフォルト背景色を変えるだけで描画はしてくれんだろ。
XClearWindowあたり(かな)で、ちゃんと描画しなきゃダメ。
236デフォルトの名無しさん:2006/06/04(日) 19:48:43
>>235
いいえ。
はい。
生半可な知識乙。
237デフォルトの名無しさん:2006/06/24(土) 12:51:48
画像のビュアーを作りたいと思うんですけど
お勧めの画像変換ライブラリとかってありますか?
PerlのImageMagickで変換すると遅くて遅くて・・。
238デフォルトの名無しさん:2006/06/24(土) 15:40:36
>>237
>PerlのImageMagickで変換すると遅くて遅くて
PerlにはImageMagickはありません。
ImageMagickには画像変換関数もあれば画像変換ツールもありますが、どちらも処理速度は(ほぼ)同じです。
#当然と言えば当然。
ついでに言えば、画像変換の処理速度の問題はXlibにはなんら関係がありません。
#まぁ、Xlib自体が遅いがな。
239デフォルトの名無しさん:2006/06/25(日) 00:18:08
>>169
gdk-pixbufってGtk+じゃないのか?
240デフォルトの名無しさん:2006/06/26(月) 18:13:15
指定した座標1Pixelに色を置くのはどうするのでしょうか?
241デフォルトの名無しさん:2006/06/26(月) 18:17:17
>>240
PutPixel()
ただし、かなり遅いので必要なら別途別の手段を講じること。
#演算が遅いのではなくプロトコルそのものが遅いので、XImageを使うなりなんなり。
242デフォルトの名無しさん:2006/06/28(水) 03:38:08
PutPixelってなんだ?
243デフォルトの名無しさん:2006/06/28(水) 05:17:31
XDrawPoint()だろ。
よしんばXPutPixel()だったとしたらXImageへの描画だし。
244デフォルトの名無しさん:2006/07/13(木) 01:17:14
今一盛り上がらないね
245デフォルトの名無しさん:2006/07/13(木) 17:21:05
Xlibを使ってjpegイメージを表示するプログラムをかいていだだけないでしょうか?
そういうプログラムをつくろうと思っていたのですが、なかなかうまくいきません。
XDrawPointだと表示する色をしていできないようなのですが、座標と色を指定して置くことはできないんでしょうか?
246デフォルトの名無しさん:2006/07/13(木) 17:24:22
>>245
できます。GCについて勉強してください。
247207:2006/07/14(金) 13:18:16
>>245
libjpeg
248デフォルトの名無しさん:2006/07/15(土) 13:51:37
libjpegを使ってXDrawPointでGCのXSetForegroundの色を変えながらループで描画したのですが
無茶苦茶時間がかかります。
VGAサイズのjpegファイルを表示するのに30秒位かかります。

他に方法はありますか?
249デフォルトの名無しさん:2006/07/15(土) 13:56:49
>>248
XDrawPoint()で一点ずつ描くのを諦める。
250デフォルトの名無しさん:2006/07/15(土) 14:45:00
>>248
そりゃ1ピクセル毎に描画命令送ってんだから遅いだろうよ。
そういうのは普通ローカルにXImage作ってそこに直接描いて最後にXサーバに送る。
251デフォルトの名無しさん:2006/07/15(土) 16:19:14
XImageむずかしす…
252デフォルトの名無しさん:2006/07/15(土) 17:44:04
XMapWindow, XMapRaisedの違いって何?
スタックを上げるの意味がわからない
253デフォルトの名無しさん:2006/07/15(土) 18:18:09
>>252
XMapWindowはウィンドウを表示状態にする。(非表示状態にするにはXUnmapWindow)
XRaiseWindowは重なって裏に回っているウィンドウを手前に表示する。
スタックてのはとりあえず単なるウィンドウの重なり具合と思っとけばよろしい。
254デフォルトの名無しさん:2006/07/15(土) 18:22:30
おまえ関係ない話してるぞ
XMapWindowとXMapRaisedだぞ





だぞ
255デフォルトの名無しさん:2006/07/15(土) 18:23:06
あ、ごめんXMapRaisedか。XRaiseWindowと読み違えてた。
XMapRaised はほぼ XMapWindow + XRaiseWindow かな。
256デフォルトの名無しさん:2006/07/15(土) 21:21:21
無理
XImage全く意味がわからない
257デフォルトの名無しさん:2006/07/15(土) 21:29:46
なら諦めて、出来合いの適当なライブラリでも使えば?
258デフォルトの名無しさん:2006/07/15(土) 21:36:30
ライブラリとか検索してもなかったんですけど
しってますか?
259デフォルトの名無しさん:2006/07/15(土) 22:39:37
どうにかXImage使ってできました‥
ほとんど理解してないですけど‥‥

でも実行してみると表示は一瞬ですけど、表示するまでに
30秒ぐらいまたないといけないんで同じです…
こんなものなのですかね?
それとも私の書き方が間違ってるとか‥
260デフォルトの名無しさん:2006/07/15(土) 22:48:57
わからないならgtkでもqtでもmotifでもいいから使っとけ。
Xlibは特に理由もなく直接叩くレイヤーじゃない。
261デフォルトの名無しさん:2006/07/15(土) 22:54:30
GtkとかQtをインストールしてないです…
なんで作ってるかっていうと、Pentium 120MHzのマシンがあるんですけど
それにもGtkとかQt, Motif等のライブラリは一切インストールしてないんで
(コンパイルしようにもどれだけ時間がかかるかわからない…
それでも使えるビュアーがあれば便利だと思って作ってます。
たしかにXV使えば見れることは見れるんですけど、操作が今一なんで‥

262デフォルトの名無しさん:2006/07/16(日) 00:09:25
俺もそいったライブラリは入れてないからXV使ってる。
協力したいけどプログラミングの知識がない・・・。

とりあえず期待しとく。
263デフォルトの名無しさん:2006/07/16(日) 00:23:57
xvあるならソース見ればいいじゃない。
264デフォルトの名無しさん:2006/07/16(日) 01:13:12
ソース読んでも全くわからないです…
わかることはgrepかけてみると、XPutPixelを使ってないということくらいです…
どうやってるのか調べようと思っても、チンプンカンプンです。
プログラミングはほとんどやらないので、無謀だったのかな…。

ちなみに、私が書いたコードはこれです。
何か改善の余地があるところでもあれば教えていただけるとうれしいです。
http://wopr.iobb.net/file/main.c
265デフォルトの名無しさん:2006/07/16(日) 01:23:31
毎ピクセルごとにXAllocNamedColor呼んでりゃ、そりゃ遅いだろ。
XAllocNamedColorはサーバに聞きにいく。

visualからrgbのmaskとshiftもってきて、自分でrgbからpixel値作って
XImageのバッファ直接弄るのがいちばん速いけど、各種depthとか対応しなきゃならないし
そこまでやる気なさそうなソースだから、せめてXAllocNamedColorで問い合わせて把握した
色のピクセル値はキャッシュして使い回せ。普通の画像ならかなりマシな速度になると思うので。
266264:2006/07/16(日) 04:07:24
>>265
ありがとうございます。

>XAllocNamedColorはサーバに聞きにいく。
そういう関係のことがまったくわかってないです…

>そこまでやる気なさそうなソースだから、
…。 やる気がないというか、できないです…。説明していただいてることすら理解ができていません。
申し訳ないです。

>色のピクセル値はキャッシュして使い回せ。普通の画像ならかなりマシな速度になると思うので。
http://wopr.iobb.net/file/main2.c
こういうことですかね? 一応やってみたのですけど、30秒程度と表示までの時間はかわりませんでした。

ちなみにstrcmp, strcpyが入ってるので、それを省いてできるか今やってみています。
質問ばかりでもうしわけありません。
267264:2006/07/16(日) 04:22:50
すいません。 >>266は完璧なミスをしていました。
もう少し落ち着いて考えてみてから、かきこませてもらいます。

本当にすいませんでした。
268デフォルトの名無しさん:2006/07/16(日) 12:22:19
おー,昔の自分がおる.俺も昔全く同じことやった.昔の俺にちょっと手助け.

264 の環境を予想するとたぶん以下のコードで動く.ただし試してない.間違ってたらすまん.
ポイントは 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 ならこっち
}
269デフォルトの名無しさん:2006/07/16(日) 14:38:24
わかるとはおもえんが
270264:2006/07/16(日) 15:29:47
>>268
ありがとうございます。 私にはまだほとんど理解できないですが、どうにかして"grep -R red_mask ./*"で
出てきたところが読めるようになれるようにがんばります。

ちなみに、>>265さんの"キャッシュして使いまわせ"と言うのにたいして
私なりに考えて作ってみました。 前にXAllocNamedColorした値と同じなら、前のXAllocNamedColorの値を
使うっていう単純なものですけど…。 しかも、前回の一回分だけ…
http://wopr.iobb.net/file/main3.c
これでVGAサイズのスクリーンショットを表示するのに10秒強位になりました。
数字的にいえば3倍でかなり早くなったんですけど、VGAの同じ色が連続で続くようなイメージなんで
XGAサイズの風景写真とかだと、1分30秒かかるのでまだまだ実用にはほどとおいです…


>>269
もうしわけないです…

271デフォルトの名無しさん:2006/07/16(日) 17:26:45
ソース読んだことがないやつにXVのソースがどこまで読めるか
272デフォルトの名無しさん:2006/07/16(日) 18:20:08
>>270のソースみるともっと他人の良質なソース読むべき

ximg->data[n] = c;のような形式で書き直せば手元で試した限り数千倍は早かった。
XGetRGBColormapsでフォーマット調べて頑張れ。
#数日かけてでもツールキットコンパイルしたほうが手間は少ないと思うが
273デフォルトの名無しさん:2006/07/16(日) 18:31:00
その試したソースを見せてあげればいいのに
274デフォルトの名無しさん:2006/07/16(日) 18:38:51
手抜きな。後はフォーマット調べて頑張れ。
ximg = 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 ];
}
}
275デフォルトの名無しさん:2006/07/17(月) 00:00:24
ところでお前等はわざわざなんでXLib使ってんの?
276デフォルトの名無しさん:2006/07/17(月) 00:11:37
小物作るのには十分だから。
GUI作りこむ必要があるときはQtやJava使ってる。
277264:2006/07/17(月) 03:42:17
>>271
全く読めなかったです…。

>>274
ありがとうございます。
がんばって調べてみたのですが、わからないです…
なんとなく一瞬でイメージは表示できるようになったんですけど、なんとなく表示されてるって感じで色が滅茶苦茶です。
多分教えていただいたカラーマップが関係あると思うのですが、ちょっとわたしでは理解ができませんでした。
もしよろしければ、これをちゃんと表示できるようにしていただけると本当に助かります。
http://wopr.iobb.net/file/misc.c
すいませんがもしよろしければお願い致します。


278デフォルトの名無しさん:2006/07/17(月) 04:14:24
>>277
だからvisual->{red,green,blue}_mask を見て
自分でshiftさせてpixel値を作らなきゃだめだって。

RGBの配置なんてディスプレイ毎に違うんだから
人の環境そのままで動くわけない。
279デフォルトの名無しさん:2006/07/17(月) 12:46:50
とうとう丸投げか
280デフォルトの名無しさん:2006/07/17(月) 18:00:51
red_mult red_max base_pixelでぐぐればほぼ答えそのままじゃないか?
それでも分からないならツールキット使うかsf.jpででも協力者募ってくれ。

そのサイトのハッカー関連コラムなんなんだ。
281264:2006/07/18(火) 07:17:30
>>278
ありがとうございます。
ずっと調べてるのですが全く…。
>人の環境そのままで動くわけない。
これってその方法でプログラムをかいたら、他の人は自分の環境にコードを書き直さないと
使えないってことになるんですかね?
できれば汎用的なものがいいんですけど。

>>279
自分でいうのもなんですが、質問ばかりしてスレを消費してしまったりしているので
これ以上続けるのも迷惑かとおもい、できればやっていただければと思いました。
すいません。

>>280
調べているのですが…。なかなか自分がわかるところまではいけません。
>それでも分からないならツールキット使うかsf.jpででも協力者募ってくれ。
やはりろくにソースも読めない人間が、プログラムを書こうっていうのが無謀だったのですかね…。
自分ではできればうれしいのですが、あまり迷惑をお掛けするのもあれなんで
もうしばらくやってみて、できなければあきらめようと思います。 御迷惑をお掛けしてすいませんでした。
>そのサイトのハッカー関連コラムなんなんだ。
そのサイトのアップローダを使っていたのですが、動かなかったので連絡してみたら上げるファイルあったら
メールで送ってくれたら置いてくれるっていうことだったので、あげてもらいました。
そのサイトはわたしとは関係ありません。
282デフォルトの名無しさん:2006/07/18(火) 07:36:10
xvがダメならxpmlib辺りではどう?
XpmReadFileToPixmap()とかXpmReadFileToImage()とかあるよ。

Pixmapができちゃえば、後は
XSetTile(dpy, gc, pixmap);
XSetFillStyle(dpy, gc, FillTiled);
XFillRectangle(dpy, xid, gc, 0, 0, width, height);
でいける気もするが。
283デフォルトの名無しさん:2006/07/18(火) 11:42:36
>>245
imlib
284デフォルトの名無しさん:2006/07/20(木) 00:16:25
>>282
それは新鮮なテクニックだな。脊髄反射で XCopyArea() してる俺は凡人か…(´・ω・`)。
285264:2006/07/20(木) 00:34:42
>>282
ありがとうございます。
今現在そのライブラリのソースがないので、ダウンロードして調べてみようと思います。
内容がちょっとわからないのですが、アマゾンでX-window実用グラフィック入門という本を注文してみました。
どうにか自分でもできるようにがんばってみたいと思います。

>>283
調べてみると、いろいろな画像形式に対応している上に変形なども行ってくれるみたいですね。
ありがとうございます、取り敢えずはそれで作ってみたいと思います。
286264:2006/07/20(木) 00:56:09
どんなことができるかだけ調べてた・・・。
gtkとperlとかいろいろと要求されます・・・。
287264:2006/07/21(金) 22:08:28
X-window実用グラフィック入門
全然役に立たない・・。
288デフォルトの名無しさん:2006/07/22(土) 06:57:16
ホントに X-Window なんて表記だとは思わなかった。酷ぇな…
289デフォルトの名無しさん:2006/07/22(土) 09:28:40
kwsk
ぐぐるとその本を参考資料にしている大学があるようなんだが。
290デフォルトの名無しさん:2006/07/22(土) 13:43:14
現状で手に入るX11の本って相当少ないからなぁ。
誰かまともというかチュートリアル以上のものを書いて欲しいが
売れないんだろうな。
291デフォルトの名無しさん:2006/07/22(土) 21:24:47
銀色の本って絶版?
X11R4あたりだったが、Xlib独自の部分だけならあれで十分だったなあ。
292デフォルトの名無しさん:2006/08/07(月) 22:38:25
XGrabKey()で取ってきたイベント情報から、
そのイベントが本来送られるはずだったwindowを得ることはできますか?
293デフォルトの名無しさん:2006/08/08(火) 02:03:59
>>292
event->subwindow がそうでない?
xwininfoあたりがやってるのでソース見て真似すれ。
294デフォルトの名無しさん:2006/08/08(火) 22:46:03
>>293
レスどうもです。やってみます。
295デフォルトの名無しさん:2006/11/02(木) 01:01:28
XWindow練習帳age
296デフォルトの名無しさん:2006/11/02(木) 01:31:35
>>295
『X Windowで遊ぶ本』と内容一緒っぽいけど、何か違うの?
著者も出版社も一緒だけど…
297デフォルトの名無しさん:2006/11/02(木) 23:37:22
だね。
その本買って読んだけど、目次じゃやってること同じだと思う。

感想としては、読んでも意味無いね。
ほとんどなんの説明もしてないし、コードの大半はXlib関係ない
298デフォルトの名無しさん:2006/11/03(金) 19:02:22
ソカ、残念…
でもサンクス >>297
299デフォルトの名無しさん:2007/01/14(日) 21:12:04
Xlibに関する解説サイトをいくつか見てみたんだけど、
ウインドウ表示やイベントループの基本的なところは
Win32APIに相当するものがあって大体理解できたました。

でもWin32APIにあるメニュー関連処理に対応するものが
見当たらない気がします。無いのでしょうか?
300デフォルトの名無しさん:2007/01/14(日) 21:34:03
>>299
その辺りはXlibより上流のToolkitの仕事かな。
でもどうせだから、更に上流のMotifなどのWidgetを使う方がいいと思うし、
それならいっそGnomeで作ってしまえ、とも思う。

まぁあれだ、Xlibには最低限しかないと思っておけば間違いない。
301デフォルトの名無しさん:2007/01/15(月) 00:25:57
もうすぐXCBがくるけど、そういう話題はないの?
302デフォルトの名無しさん:2007/01/15(月) 19:34:36
>>300
Win32APIなおれはメニューは最低限だと思ってた…。

メニューのリソースなんかは面倒見てくれて、
イベントの取得は自分でループ回したいような
レイヤー(というのかな?)はどんなものが
あるでしょうか?

要はWin32API(非MFC)から同じような構造を保ったまま
Xwindow上に移行するオススメが有れば、と。
303デフォルトの名無しさん:2007/01/15(月) 20:23:12
いやだから、>300にお勧めが書いてあると思うのだが。
Xlibだとボタンさえないからな。
304デフォルトの名無しさん:2007/01/15(月) 21:37:53
>>303
上流のって、イベントループ部分がフレームワークになってて
隠蔽されてないですか?

ボタンは要らないんです。メニューだけ欲しい…
305デフォルトの名無しさん:2007/01/15(月) 23:29:57
>>304
ここはXlibスレだ。それ以外のライブラリはスレ違いだ。
寧ろあんたの環境に合わせて犬板にでも海栗板にでも逝っちまえ。
つーか、少しXの基礎を勉強して来い。
306デフォルトの名無しさん:2007/01/17(水) 23:07:17
>>301
そんなのあったんだね。知らんかった。
しかも結構前から作ってるみたいね。
307デフォルトの名無しさん:2007/01/18(木) 23:47:19
興味がある人は・・・
ノンブロッキングなスレッド処理ができるよう作られてるそうだ
http://xcb.freedesktop.org/wiki/
308デフォルトの名無しさん:2007/01/29(月) 16:56:23
XSelectInput(disp, win, ExposureMask | KeyPressMask | ResizeRedirectMask);

ResizeRedirectMaskを指定すると、再描画がうまくいかないのですが、
何が原因として考えられるでしょうか?
windowを小くするぶんにはちゃんと再描画されるのですが、
windowを大きくするとちゃんと再描画してくれません。
ResizeRedirectMaskを外すとちゃんと再描画してくれます。

何かわかるかたいたら教えてください。お願いします。
309デフォルトの名無しさん:2007/01/30(火) 05:53:53
リダイレクトしたイベントはどう扱ってるのか?
そもそもResizeRedirectMaskの意味わかってて指定してるのか?
310308:2007/01/30(火) 11:35:18
void redraw()
{
}
〜〜〜〜〜 略
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;
  }
}
311308:2007/01/30(火) 11:37:08
レスありがとうございます。
簡単に書くとこんな感じなんですが、
これで、ResizeRedirectMask の行とcase ResizeRequest:のとこを
コメントにして、今現在コメントになっているとこを外すと思いどおり
に動作するのですが、StructureNotifyMask だとwindowの移動とかでも
イベントがきてしまい効率が悪いなぁと思い、本当はwindowのリサイズだけ
を拾いたいのですが、

これだと例えば、100x100のwindowを作ったとして
そうすると、最初に作った100x100の部分に関しては再描画されるのですが
windowのサイズを大きくした場合広がった部分が再描画がされません。

ConfigureNotifyイベントでやると問題ないのですが、、、
312308:2007/01/30(火) 16:57:27
一応自己解決??(英語苦手なんでいまいちよくわかってない)

ttp://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.

って答えが返ってきてますね。
313デフォルトの名無しさん:2007/01/30(火) 20:25:58
やはりResizeRedirectMaskの意味を勘違いしてたか
このイベントマスクはリサイズの要求を捕捉するためのもの
ウィンドウサイズの変更を通知してもらうためのものじゃない
314デフォルトの名無しさん:2007/02/01(木) 09:54:15
>やはりResizeRedirectMaskの意味を勘違いしてたか

ですね。
なんともややこしい。man見ても全然理解できてなかった。
まぁ1つ勉強になりましたわ。
315デフォルトの名無しさん:2007/03/23(金) 01:20:40
XLibの描画命令とかの使い方はわかるんですが、ボタンとかエディットとかを呼び出す方法がわかりません
VineLinuxでGNOMEなんですが教えてください
もしくはどういう資料にのってるか教えてください
316デフォルトの名無しさん:2007/03/23(金) 02:56:14
>>315
XLibにボタンなんて贅沢なもんはありません。
大人しくGnomeを使ってください。
317デフォルトの名無しさん:2007/03/23(金) 07:28:42
レスありがとうございます
GNOMEのたたき方を調べてみます
318デフォルトの名無しさん:2007/03/23(金) 07:57:15
XForms っていつの間にか LGPL になってたんだね。
以前は非商用に限りフリーだったんだけど。
319デフォルトの名無しさん:2007/04/24(火) 19:48:57
久しぶりに来たら、スレのレベルがだいぶ下がってないか?
320デフォルトの名無しさん:2007/04/24(火) 19:50:50
最初っから下がりっぱなしですが。
321デフォルトの名無しさん:2007/04/24(火) 21:00:29
>>319
レベルの高い質問プリーズ!
322デフォルトの名無しさん:2007/04/27(金) 19:35:19
>>321
メニューやボタンはどうやって出すんですか?
323デフォルトの名無しさん:2007/04/27(金) 19:53:42
>>322
Xlibのみを使うのであれば、全部自前で用意してください。
324デフォルトの名無しさん:2007/04/27(金) 20:35:42
Xlibの質問なんて低レベルにきまっとるだろ
325デフォルトの名無しさん:2007/04/27(金) 20:41:25
>>324
誰が上手い事言えと…
326デフォルトの名無しさん:2007/05/04(金) 15:58:22
質問させてください。

このスレを一通りみていたのですが、上の方にGtkとかQtだとバージョンアップすると、それにあわせてプログラムを作り直さないといけない
ということなのですが、Xlibを使ったものだと作り直さずにそのままXのバージョンがあがっても使えるのでしょうか?
327デフォルトの名無しさん:2007/05/04(金) 21:37:49
ヒント:下位互換
328デフォルトの名無しさん:2007/05/05(土) 21:17:04
>>326
Gtkのことは分かりまへん。
Qt 2から付き合ってきましたが、2→3はちょっとの修正で済みました。
3→4は、下位互換クラスを使っても、かなり修正が要りました。

でも、ほとんど同じソースでWindowsでもLinuxでもMacでも動いたんで
Qtを使って良かったと思ってます。
ナマのXlibで組んでいたときは、メニューやボタンから作らんといけな
かったので大変でした。
もっとも、ソース非公開のプログラムを作ろうとしたらQt商用版は高い
ライセンスが必要ですので、目的に応じて検討してください。
329デフォルトの名無しさん:2007/05/11(金) 23:23:39
こちらから誘導されて参りました。
http://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 した結果をパースして利用するなりでなんとかなるとは思うのですが、
何か都合の良い方法があるのではないかと諦めきれず質問させて頂きました。
識者の方がいらっしゃいましたらご教授くださいませ。
330デフォルトの名無しさん:2007/05/13(日) 22:50:52
X上のCUIってなんだ?
331デフォルトの名無しさん:2007/05/13(日) 22:58:33
「X Server が上がってる状態でコマンドラインのアプリを動かす場合に」って事でしょ
俺も >>329 と同じ疑問を持って以前調べた事があるけどよくわがんねかった
332デフォルトの名無しさん:2007/05/14(月) 09:35:33
>>331
自演か?
余計に意味がわからんぞ
333デフォルトの名無しさん:2007/05/14(月) 10:43:50
>>332
漏れは大体判ったよ。

>>329
XWindow上で端末エミュレータを動かし、その中でキーをあれこれしたいということだろ?
Xの思想から言えば、端末エミュレータであれこれするなってことになると思う。
つーか素直に自分で端末エミュレータもどきを実装すればいいだろ。
334デフォルトの名無しさん:2007/05/14(月) 15:08:19
>>332
ジエンじゃねーよ…

端末エミュレータ上でごにょごにょするアプリ作ってます

生のキー入力情報が欲しいな

X が上がってるとキー入力は X に奪われてしまうなあ

普通なら X さんからキー入力情報を頂かないといけないのか…

でも、別にウィンドウを開く訳じゃないので X のライブラリなんかリンクしたくないよ

(こんな単純な事はもっと簡単にやる方法があるに違いない!)

って事でしょ。細部は違うかもしれんが、大体こんな感じだ。
335デフォルトの名無しさん:2007/05/14(月) 18:35:44
さらに拍車をかけて何を言ってるのかわからんぞ。
自分でわかるように書くんじゃなくて、他人に伝えるようにかけよ
336デフォルトの名無しさん:2007/05/14(月) 18:55:36
>>335
いや俺も >>334 って事だろうと想像できたが。
もっともそれが真に >>329 の訊きたいことと合致してるかどうかは知らんが。
(まあ多分、結論としては >>333)
337デフォルトの名無しさん:2007/05/14(月) 19:00:31
>>335
どこが分からないのか書いてくれよ…
338デフォルトの名無しさん:2007/05/14(月) 19:18:32
自演は放置でFA
339デフォルトの名無しさん:2007/05/14(月) 19:28:07
何でそんなに自演が気になるのかな。
自演の指摘その物が独り相撲なのになあ。
340デフォルトの名無しさん:2007/05/14(月) 19:44:05
自演はどうでもいいけど、自演に意味が無いことを伝えるのは有用かも。
341デフォルトの名無しさん:2007/05/14(月) 19:51:40
[xk]term なら環境変数 WINDOWID を定義してくれてるから、
環境変数 DISPLAY と WINDOWID で頑張ってgrabするくらいしかない。
342336:2007/05/14(月) 20:14:09
>>339
「ジサクジエーンということにしないと、自分だけ解ってないみたいで辛い」んだろう。
343デフォルトの名無しさん:2007/05/14(月) 20:23:00
X上のCUIってのは、ターミナルエミュレータのことか。
漏れも最初の書き込みだけだとわからんかった、歳かな
344デフォルトの名無しさん:2007/05/14(月) 20:25:08
>>340
実際は自演じゃないから逆効果なんじゃないかな。
書き込まれた内容だけを見てレスを付けられるようになってくれると良いんだけどね。
345デフォルトの名無しさん:2007/05/14(月) 20:27:20
>>343
ターミナルエミュレータの事ではなく、何らかのコマンドラインアプリケーションの事でしょう。
346デフォルトの名無しさん:2007/05/14(月) 20:35:27
どゆこと?
「X Server が上がってる状態でコマンドラインのアプリを動かす場合に」って、>>331が言ってるけど
X Clientは別のホストで動いてて・・ 意味がわからん

X Client上でキー入力しか受け取れないと思うけど、それでいいならrootにInputしかけたらいいんじゃないの?
347デフォルトの名無しさん:2007/05/14(月) 20:43:51
>>346
「X が上がっていても動く showkey が欲しい」

これでどう?
俺もあなたが言ってる事がよう分からん…
348デフォルトの名無しさん:2007/05/14(月) 20:45:58
>>347
man xev
349デフォルトの名無しさん:2007/05/14(月) 20:51:52
俺も今まで読んでて>>346だけ意味が分からなかった
350デフォルトの名無しさん:2007/05/14(月) 20:54:57
>>348
xev はみんな知ってるのよ。
CUI と書いてあるのはウィンドウを開きたくないって事なんですよ。
分かんないかなあ…
351デフォルトの名無しさん:2007/05/14(月) 20:57:38
>>350
ルートウインドウも開かないの?
352デフォルトの名無しさん:2007/05/14(月) 21:12:40
>>351
あぁ、スマソ。そういう事なら良いかも。
353デフォルトの名無しさん:2007/05/15(火) 22:26:44
やっぱり自演だったのね
354デフォルトの名無しさん:2007/05/16(水) 00:31:28
そうそう。君の書き込み以外は全部同じ人が書いてるんだよ。ってアホか…
どうしても自演認定したくて仕方がないみたいね。何かトラウマでもあるの?
355デフォルトの名無しさん:2007/05/16(水) 10:41:57
自分だけ理解できないで、置いてけ堀のまま話が進んでいくことに耐え切れなかったんじゃない?
356332:2007/05/16(水) 14:55:43
>>348, >>351以外は俺じゃないんだが…
正直最初に言い出した俺が悪かった…
357デフォルトの名無しさん:2007/05/16(水) 20:48:02
荒らしてるのはいつも質問者
これ、豆知識な
358デフォルトの名無しさん:2007/06/06(水) 00:32:48
質問させてください。
仕事でMotifを使っているプログラムを引き継ぎ・改修することになりました。
その中でXtInitializeを使っている個所があって、表示端末を指定して
出力している個所があります。
表示端末にXサーバが起動していれば問題ないけれど、
必ずしもそうとは限らないし、また指定する方で誤った出力先を指定することもありうるので、
XtInitializeで失敗するときに、ログファイルに出力するようにしたいんです。

ところが、実際に動作させると、なんかXtInitialize内部で死亡(コアダンプとかではなく、通常に)
するので、関数が抜けてきたところでは、判別がつかないっぽいです。
おそらく、標準の動作がそうなんでしょうが、
これを回避(関数内部で終了するのはかまわないがどうにかしてログに残すなど)する
方法はないでしょうか?

お手数ですが、よろしくお願いいたします。
359デフォルトの名無しさん:2007/06/06(水) 00:55:56
マニュアル読め
360デフォルトの名無しさん:2007/06/06(水) 01:17:56
マニュアルには何らかの方法が書いてあるのですか?
361デフォルトの名無しさん:2007/06/06(水) 01:27:49
関数の仕様を知れ
ライブラリも読め
362デフォルトの名無しさん:2007/06/06(水) 01:41:27
そしてMotifスレで聞け
http://pc11.2ch.net/test/read.cgi/unix/1006438540/

と思ったが、
XtInitializeを呼ぶ前に死亡メッセージをログに書いて、
呼んで成功したらログから消せばいいじゃない
363デフォルトの名無しさん:2007/06/06(水) 08:25:37
>>361-362
とりあえず簡易的な(Webなどの)マニュアルを見ましたが、
それには書いてなかったんですよね。
それと、最初ログメッセージ書いておいて後から消すなんて、
そんな器用なことできるんですか?(w
(まあ、できなくはないだろうけど、
 私が言う「ログファイル」は複数のアプリケーションが書く可能性がある
 ログファイルなんで、消すのすんごく面倒なんですがねw)

Motifスレがあるのは知りませんでした。そっちで訊きますよ。
サンクス。
でも、なんか知っているんなら、とっかかりになることでも
書いていただけると助かるのに、なんてやさしいお方なのかなあ(w
364デフォルトの名無しさん:2007/06/06(水) 09:49:27
Webのマニュアルって何?
添付のマニュアルは読まない人なの?

365デフォルトの名無しさん:2007/06/06(水) 10:18:01
>>363
スレ違いの質問でも答えてもらえると思ったら大間違い。
366デフォルトの名無しさん:2007/06/06(水) 10:32:29
質問したら答えてもらえると思ってる
こいつの思考回路がめでたいな
367デフォルトの名無しさん:2007/06/07(木) 00:29:02
>>365-366
信じて貰えないと思うけども、Motifのスレがあるのは知らなかったんですよ。
で、しょうがないからここで訊いた、と。
まあ、確かに、他にスレがあるんならスレ違いで俺が悪いです。

ごめんなさいm(__)m
368デフォルトの名無しさん:2007/06/07(木) 00:43:56
>>364
あ、添付は初めから無いです。
勿論、専門書読めば別でしょうけども。

とりあえず、やり方分かりました。
369デフォルトの名無しさん:2007/06/07(木) 00:50:30
専門書なんて関係無くね?
何か勘違いしてる予感。
370デフォルトの名無しさん:2007/06/07(木) 09:51:08
マニュアルページのXtInitializeを読むと……
371デフォルトの名無しさん:2007/06/07(木) 10:07:15
久々に質問がきたので皆んな大喜びですね
372デフォルトの名無しさん:2007/06/18(月) 22:16:13
GCの属性値を調べる方法はありませんか?
373デフォルトの名無しさん:2007/06/18(月) 22:25:51
属性値?
XGetValues()では事が足りないの?
374372:2007/06/18(月) 22:42:16
ありがとうございます
GCに設定されている値を調べたいと思っています。
XGetValuesはマニュアルが無かったので、後程調べてみます。

やりたいことというのは、
Display dpy; Window wnd; GC gc; XGCValues value;
....
gc = XCreateGC(dpy, wnd, 0, value);

とすると、GCに何が設定されたのか調べたいと思っています。
value構造体を宣言してなんの変更もせずにXCreateGCをすると、
valueには何が入っているのでしょうか? デフォルト値が入るの
でしょうか?
375372:2007/06/18(月) 22:47:04
すみません。 間違えて入力してしまいました。
valuemaskに0を設定すると、*valuesは無視してデフォルトを設定するんですよね。

valuemaskに、GCForeground | GCBackground | GCPlaneMask を設定したとして
読んでください。
valuemaskは変更して、valuesは何も設定していない時に何が入るのか
調べたいと思っています。
376デフォルトの名無しさん:2007/06/18(月) 23:08:26
むぅ、間違えた。XGetGCValues()だった。

valueに値を設定しないということは、これはXに関係なくCの問題で不定値が入っている。
#つまり、設定しないで使ってはいけないということ。
valuemaskが0の場合に限り、valueは完全に無視される。
377372:2007/06/18(月) 23:55:35
よく考えてみたらそうですね…
ありがとうございます。

XGetGCValuesについては、調べてみます。
378デフォルトの名無しさん:2007/06/19(火) 10:22:49
結局、>372は自分で調べる気がさらさらないのねw
379デフォルトの名無しさん:2007/06/20(水) 00:33:52
色っていうのはunsigned longで表されてるんですよね?
だとしたら、BlackPixelの値から定数を引いて行くと
カラーマップみたいなのができるんですか?
380379:2007/06/20(水) 01:37:29
実際に作ってみたら、BlackPixelが0になってるようで引いていくと
真っ黒になったので、定数を足して行くように作りました。

そしたら、黒から青になるような図の繰り返しの帯ができました。
更に大きい値の定数を足していくと、緑とか赤の繰り返しの帯が
できました。
繰り返すにつれて色が変わって行ってるので、多少の変化はあるよう
なのですが、同じような色の変化の繰り返しになっています。
これはどのような法則で色が決められているのでしょうか?
381デフォルトの名無しさん:2007/06/20(水) 02:51:36
>>380
Visual による。
その計算が適用できるのは TrueColor の場合だけ。
382デフォルトの名無しさん:2007/06/20(水) 02:58:14
XLibの解説書でも読んでくれ。
おそらくred * 0x10000 + green * 0x100 + blueにでもなっているんだろ。
383デフォルトの名無しさん:2007/06/20(水) 12:57:00
>>382
分からないのなら答えなくていいから、偽の情報をばらまくな
384デフォルトの名無しさん:2007/06/20(水) 13:20:02
>>380
xdpyinfo で見られる red, green, blue mask てのがそうだ。
>>381の言う通り Visual から拾える。TrueColorの場合は、これらを元に r,g,b から計算可能。
depthもいろいろあるからしっかり対応してくれ。
385379:2007/06/20(水) 23:48:47
>>381, 382, 384
ありがとうございます。 でも、よくわからないです…。
xdpyinfoででてきた値を書けた値が基準色になるのでしょうか?
> red, green, blue masks: 0xf800, 0x7e0, 0x1f
こうなっているのですが、
0xf800 * 1 = 赤
0x7e0 * 1 = 緑
0x1f * 1 = 青
と言う風な認識でいいのでしょうか?
ちなみに実際にその値を表示させてみると、赤、緑、青が表示されました。

また、例えば黒から少しづつ色を白に近づけて行くにはどのようにすれば
いいのでしょうか?
386デフォルトの名無しさん:2007/06/21(木) 00:04:49
>>385
そのパターンだと赤5ビット緑6ビット青5ビットのRGBのようだね。
黒から白までの色を作るには、gray0からgray100までの色名を使うか、
各プレーンの値を計算するか、どちらかになるのかな。
387デフォルトの名無しさん:2007/06/21(木) 00:20:52
>>385
> 0xf800 * 1 = 赤
> 0x7e0 * 1 = 緑
> 0x1f * 1 = 青
> と言う風な認識でいいのでしょうか?
ノゥ!
(赤 << 12) + (緑 << 6) + 青
pixel値にbitmask(0xf800, 0x7e0, 0x1f)を論理積したものがその色の要素。
(pixel & 0xf800) >> 12 で赤の成分が取れる。
388379:2007/06/21(木) 01:50:36
>>386, 387
ありがとうございます。 色の扱いって難しいんですね。
なんで5bit, 6bit, 5bitの値が出て来たのかも、
> (赤 << 12) + (緑 << 6) + 青
こうなったのかも全く理解できないです…。
XlibをというかC言語自体を触り始めたばかり私には、
まだ敷居が他界みたいですね…。
389デフォルトの名無しさん:2007/06/21(木) 12:53:27
横から質問させて頂きます。

色の話が出ていたので疑問に思ったのですが、RGB各256の値から
色を作りたい場合XAllocColorを使わずに作るには、どうしたらい
いんですか?
390デフォルトの名無しさん:2007/06/21(木) 13:37:12
391デフォルトの名無しさん:2007/06/21(木) 14:11:38
>>288
0xf800, 0x7e0, 0x1f を2進数で書いてみればわかるんじゃないかな。

1111 1000 0000 0000
0000 0111 1110 0000
0000 0000 0001 1111

1になってるビットを数えて、各要素の解像度がわかる。1の右の0の数を
数えて、シフトする量がわかる。
(387氏はちょっと間違えていて、赤は11ビットシフト、緑は5ビットシフト)

392デフォルトの名無しさん:2007/06/21(木) 14:12:27
あんかー間違えた。>>288 じゃなくて >>388 ね。
393デフォルトの名無しさん:2007/06/22(金) 18:09:29
Xlibでの色の扱いを紹介したページってないのかな
394デフォルトの名無しさん:2007/10/03(水) 14:16:11
XLibを使った画像ビュアーを作りたいんですが、シンプルでXLibで作られた画像ビュアー
ってないですかね?
XVは大きいので、画像を表示だけしてる。 みたいなソースが見たいです。
395デフォルトの名無しさん:2007/10/03(水) 15:17:59
>>394
それだけでいいなら、XLibでやっつけたら?
そうでないなら、Intrinsicがどうせ載っているでしょ。
AthenaWidgetやMotifWidgetが使えると思うよ。

つーか、Gnomeならeogを使うのが一番簡単なんだがw
396デフォルトの名無しさん:2007/10/03(水) 23:45:44
>>395
すみません。
Pentiumなマシンを貰ったので、それを使おうと思ってるのですが
GNOMEやらはメモリとかスペックの都合でなかなか動きそうにありません。
なので、写真だけは見たいので自分で作れればと思ったのですが
397デフォルトの名無しさん:2007/10/04(木) 00:14:52
だったらXVでもImageMagickでも、既存アプリをそのまま使えばいいじゃん。
作りたいなら止めないけど。
398デフォルトの名無しさん:2007/10/04(木) 00:31:56
>>397
XVはライセンスがややこしくない?
ImageMagickは重すぎるだろうし、結局何で表示するん?
399デフォルトの名無しさん:2007/10/04(木) 06:15:09
Java でタブレットを使いたいのですが
Javaライブラリにウィンドウを管理してもらってるため
Display や Window が手元にありません。

この状態から拡張イベントを受け取るか
グラブする方法を教えてください。
400399:2007/10/09(火) 22:26:56
>Display や Window が手元にありません。
うそでした。
401デフォルトの名無しさん:2007/10/10(水) 03:12:17
画像ビュアを作りたいって奴が多いのな。
だれかサンプル書いてやれよ
402デフォルトの名無しさん:2007/10/10(水) 17:00:05
画像ビューアって簡単なのだったらXImageで作ったのにファイルから読み込んだデータ突っ込んで、ExposeのときにXPutImage呼ぶだけじゃ・・・
403デフォルトの名無しさん:2007/10/10(水) 18:26:48
XSetWindowBackgroundPixmap使えばExposeさえ不要。
404デフォルトの名無しさん:2007/10/15(月) 19:07:06
とりあえず書いてやれよ
405デフォルトの名無しさん:2007/10/17(水) 01:21:45
私も色の扱いについて悩んでいます。
毎回、色をサーバに問い合わせていたら時間がかかりすぎてしまいます。
過去ログでmaskでshiftするというのがあったのですが、よく分かりません。

詳しく教えて頂けると嬉しいです。
406デフォルトの名無しさん:2007/10/17(水) 14:30:32
初歩の勉強が足りんだけ
407デフォルトの名無しさん:2007/10/17(水) 18:36:13
ところで、勉強するにはどうしたらいいんだ?
英語から始めなきゃダメ?
408デフォルトの名無しさん:2007/10/17(水) 19:03:53
bitについて勉強すればいいだけ。
409デフォルトの名無しさん:2007/10/19(金) 14:02:03
Xlibについて勉強できる本はありませんか?
日本語のものが希望です。
410409:2007/10/19(金) 15:54:32
for ( 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, color.pixel);
XDrawPoint( x_res->display, x_res->mywd, x_res->gc, j, i);
}
}

こうしていると、非常に表示が遅いです。 XAllocColorが遅いようなのですが、
もっと高速に表示させるにはどうしたらいいのでしょうか?
411409:2007/10/19(金) 15:58:09
書き忘れていましたが、XAllocColorが遅いと思ったのは
for ( 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);
}
}
とすると、非常に高速に描画されます。

よろしくお願いします。
412デフォルトの名無しさん:2007/10/19(金) 16:52:16
>>411
>>248- から嫁。xvやらいろんなプログラムのソース嫁。
413デフォルトの名無しさん:2007/10/19(金) 18:28:37
>>412
そのいろんなプログラムに、いいソースを持ったのが無いよ
414デフォルトの名無しさん:2007/10/19(金) 19:20:35
「いいソース」の条件を具体的に
415デフォルトの名無しさん:2007/10/19(金) 19:46:21
とりあえず弄り始める前にヘッダだけでも読んで
どんな構造体あるかどんな関数があるか把握しとけよw
416デフォルトの名無しさん:2007/10/22(月) 21:09:29
開いているWindowのサイズを変更することってできますか?
XCreateSimpleWindowの場合、Windowを作ったときにサイズを指定してるので
サイズの変更はできないのでしょうか?
417デフォルトの名無しさん:2007/10/22(月) 22:44:03
man3下をResizeとかChangeSizeで探してみるとかせんのかね?
418デフォルトの名無しさん:2007/10/22(月) 22:50:04
10年ほど前にXlib直書きを引退して、
今じゃほとんど憶えていない自分ですら一発でman出せたくらいに直球だ
419デフォルトの名無しさん:2007/10/25(木) 14:24:13
640x480のウィンドウを作ったとして、座標( 800x800)の位置に書き込みを行うと、
メモリ範囲外への書き込みになってしまうのでしょうか?
それとも、捨てられたりするのでしょうか?
420デフォルトの名無しさん:2007/10/25(木) 16:58:48
ちゃんとクリッピングしてくれるので安心してよい。
421デフォルトの名無しさん:2007/10/25(木) 21:37:16
XCreateSimpleWindowでWindowを作り、WMのWindowの操作によりWindowのサイズを変更して
XGetNormalHintsでWindowサイズを見ても、Windowのサイズを変更する前のサイズがセットされ
ています。
現在のウィンドウサイズを取得するにはどうすればいいですか?
422デフォルトの名無しさん:2007/10/26(金) 19:37:28
XGetWindowAttributes, XGetGeometry
423デフォルトの名無しさん:2007/10/26(金) 22:22:13
>>422
ありがとうございます。
XGetGeometryで実現できました。

これをXHintsに再設定しておけば、次からはXHintsへのアクセスで取得できるんですね。
424デフォルトの名無しさん:2007/11/11(日) 22:56:40
ttp://sakuratan.ddo.jp/uploader/source/date58229.tar

もう必要がないかもしれないけれど、簡易画像表示プログラム。
環境によっては色が変になるかもしれないけれど、その時はごめん。
425デフォルトの名無しさん:2007/11/11(日) 23:12:18
使いかたは、
gload01 画像ファイル名
で。
jpeg、png、xwd のフォーマットに対応しています。
426デフォルトの名無しさん:2007/11/11(日) 23:51:21
甘やかすなよ
427デフォルトの名無しさん:2007/11/12(月) 11:52:53
画像ビュワーの話が出ているので便乗質問させてください。
私もXlibを使って画像ビュワーを作っているのですが、画像の大きさの変更で悩んでいます。
jpeglibを使うと、1/1, 1/2, 1/4, 1/8サイズにしか縮小できないようなのですが、
ウィンドウサイズに画像をフィットさせたい場合は、どのような方法があるでしょうか?
最悪、ImageMagickで画像サイズを修正しようかと思っていますが、他の方法があれば
教えて頂きたいです。
428デフォルトの名無しさん:2007/11/12(月) 13:38:45
gdk-pixbufとか使え
429デフォルトの名無しさん:2007/11/12(月) 23:46:40
整数分の1でなら、n×n ドットのマトリクスに分割して、色の平均値を取れば
出来る(表示だけなら端数はごまかしても良いし)。
ジャギーをあまり気にしなければ簡単な方法だけれども、プログラム自体は結構
めんどくさい。
430デフォルトの名無しさん:2007/11/13(火) 23:07:45
>>429
別に整数分の1に限らないのでは?
431デフォルトの名無しさん:2007/11/14(水) 20:26:29
>>424は参考にならんだろ
無茶しすぎ
432デフォルトの名無しさん:2007/11/14(水) 23:23:23
>>430
60%縮小とか、縦横比が元の画像と異なるとかによって変わってくるかなと思って。

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]の平均値。

とやって行けばいいのかな。
433デフォルトの名無しさん:2007/11/14(水) 23:25:47
すまん、符号が逆だった。
寝ぼけてるよ・・・
434デフォルトの名無しさん:2007/11/15(木) 00:26:20
もうXlib関係無い、よそでやれ
435デフォルトの名無しさん:2007/11/15(木) 22:07:02
>>432
レンジの中心点からの距離の重み付けをしたほうがいいのでは?
436デフォルトの名無しさん:2007/11/15(木) 22:40:47
速度との兼ね合い、はいさいなら
437デフォルトの名無しさん:2007/11/18(日) 01:41:07
>>424のわからねぇ
438デフォルトの名無しさん:2007/11/18(日) 23:48:47
>>427
画像ビュアーなら画像を見る機能さえ付いてたらいいんじゃない?
画像のリサイズとかに対応するより、見る機能を追加しって方がいいと思う
439デフォルトの名無しさん:2007/12/03(月) 18:56:33
Xlibでドラッグ&ドロップにような機能を実装したいんですが、
ドラッグ側はmousePressイベントでOKとしても、ドロップ側はどうすればどう判断すればいいのですか?
440デフォルトの名無しさん:2007/12/03(月) 19:41:46
>>439
何故U/IをXlibにまで降りて実装しようと考える。
普通、GnomeかせめてXtを使うだろ。
441デフォルトの名無しさん:2007/12/03(月) 20:37:47
>>439
http://www.freedesktop.org/wiki/Draganddropwarts
http://www.newplanetsoftware.com/xdnd/supporters.html

Xcb や Xlib から始めようというのは間違ってないよ
442デフォルトの名無しさん:2007/12/06(木) 17:56:30
>>439
XSendEventでポインタが居るウインドウにイベントを送ればいいのでは、
確かイベントの送り先にPointerWindowかなんかが選べたはず。


443デフォルトの名無しさん:2007/12/07(金) 22:25:39
>>440

>普通、GnomeかせめてXtを使うだろ。

おかれている環境によって普通の定義がだいぶ違うと思うけど。
おれの普通だとXtかmotifになるんだが。
444デフォルトの名無しさん:2007/12/12(水) 18:37:57
>>443
俺もだ。もしかして監視制御屋さんですか?
445デフォルトの名無しさん:2007/12/12(水) 18:52:59
私のところだと、私自身はMotif使いだけれど他の業者はGnomeだったりXtだったり。
それぞれいつ頃からXに関わっているかが違う所為かもね。
446デフォルトの名無しさん:2007/12/20(木) 19:47:48
互換性を考えたらXt最高
447デフォルトの名無しさん:2007/12/20(木) 22:38:00
何と何との互換性?
448デフォルトの名無しさん:2007/12/24(月) 18:02:38
>>443
シュミレーション屋です。
449デフォルトの名無しさん:2007/12/24(月) 20:36:47
趣味糧食屋?
450デフォルトの名無しさん:2008/01/15(火) 21:32:25
ウィンドウのサイズが変更された、ウィンドウが移動された、ウィンドウが前面にマップされた
全てExposeイベントになるのですが、上記のイベントを分けて受け取ることはできませんか?
451デフォルトの名無しさん:2008/01/15(火) 22:17:40
>>450
ConfigureNotify と MapNotify で受け取れるんじゃない?
参考 http://tronche.com/gui/x/xlib/events/processing-overview.html
452デフォルトの名無しさん:2008/01/16(水) 00:25:39
ついでだけど、Exposeイベントってなんで毎回2回発行されるの?
ウインドウを動かすだけで、2回発行される理由を知りたい。
453デフォルトの名無しさん:2008/01/16(水) 04:04:48
>>452
window managerにもよるんじゃね? xevで確認すれ。
あとは、連続したexposeをclient側でひとつにまとめるとかはよくやる。
454デフォルトの名無しさん:2008/01/16(水) 17:26:28
ximg->dataを作るとき、どのようにして作るのが正しいんですかね?
ウインドウのサイズとぴったり作るとすれば、
ximg->data = malloc( hints.width * hints.height *( sizeof( unsigned long int));
として作れば良いんですかね?


455デフォルトの名無しさん:2008/01/16(水) 23:11:30
bytes_per_line を使う
456デフォルトの名無しさん:2008/01/16(水) 23:25:54
>>455
調べてみたのですが、よくわかりません。
自分が調べてコードを書いているのですが、bytes_per_lineは0にしておけば良いと言うことでした。
(どこで調べたのかは忘れてしまいました。)

もしよろしければ、詳しく教えていただけないでしょうか?
457456:2008/01/16(水) 23:47:18
継続して調べていたのですが、XCreateImageの際にbytes_per_lineの値を0にしておけば、
計算してくれて、入るようですね。
bitmap_padは、depthの値にしていたのですがこれも間違っているようでしたので32にしました。
ですが、height * ximg->bytes_per_lineにすると、セグメント違反だと言われます。
メモリを大きく取っていれば問題ないようなのですが…。

458デフォルトの名無しさん:2008/01/17(木) 02:33:17
>>453
まとめるって具体的にどうやってるの?
459デフォルトの名無しさん:2008/01/17(木) 07:56:11
>>458
連続するイベントは無視して、最後のイベントで処理する。
460デフォルトの名無しさん:2008/01/17(木) 13:35:48
>>459
わかんね。
連続してるのはどう判断するの?
例えば3回イベントがくるとしても、その3回っていうのはプログラム側からしたら分からんよね?
どうやってこの次にも同一のイベントが来るって言うのと、これが最後のイベント。って判断するの?

俺が素人過ぎるのかな…。
461デフォルトの名無しさん:2008/01/17(木) 13:41:53
>>460
XEventsQueuedが0ならば最後のイベント
462デフォルトの名無しさん:2008/01/17(木) 14:01:58
>>461
それをすると、いくつかの種類のイベントがあったら最後のイベントしか実行しないようにするの?
フラグ持っといて、0ならフラグチェックしてフラグ立ってるイベント全部処理する。みたいな感じで処理するの?
463デフォルトの名無しさん:2008/01/17(木) 14:09:26
exposeの話だろ。最後のexposeだけでいいじゃん。
464デフォルトの名無しさん:2008/01/17(木) 14:14:57
>>463
while( 1){
XNextEvent( disp, &event);
switch( event.type){
case Expose:
if( 0 == XEventsQueued( disp, QueuedAfterFlush)){
EXPOSE;
}
break;
case KeyPress:
KEYPRESS
break;
}
}
と書いてた場合、最後のイベントがexposeじゃなかったらexposeは無視される。
って話じゃないの?
465デフォルトの名無しさん:2008/01/17(木) 14:19:30
>>464
そんなアホなコード書く方が悪いだろ…
466デフォルトの名無しさん:2008/01/17(木) 14:29:32
どうかくんだよ
467デフォルトの名無しさん:2008/01/17(木) 20:23:37
俺も>>464見たく書いてるんだが・・・
468デフォルトの名無しさん:2008/01/17(木) 20:51:29
マニュアルくらい読めよ
469デフォルトの名無しさん:2008/01/17(木) 22:22:49
読んだが、なにをいいたいんだ?
サンプルも何もないぞ
470デフォルトの名無しさん:2008/01/17(木) 23:04:14
>>457
malloc はそれで OK。format は ZPixmap で

>>458
XExposeEvent.count を使う
471デフォルトの名無しさん:2008/01/18(金) 02:52:53
if( 0 == event.xexpose.count){
こやってみたけど、exposeが1回じゃ収まらないな

0になって、exposeしている間にexposeイベントが発生してるのかな
472デフォルトの名無しさん:2008/01/22(火) 03:08:22
>>471
確かに改めて見てみると、何回かイベントが処理されるね。
処理されない方法ある?
473デフォルトの名無しさん:2008/01/22(火) 07:32:56
ExposeEventが来た時はflag立てるだけにして、
flag!=0 && XEventsQueued()==0 の時にexpose処理をすればいいだけなのに、
なんでここはアホの子が多いんだ?
474デフォルトの名無しさん:2008/01/22(火) 12:17:00
Xlibなんて叩こうと思ってる時点で阿呆だから
475デフォルトの名無しさん:2008/01/22(火) 12:28:54
書き忘れた。

>>473
それは>>471がやってることと同じだから。
人のことを言う前に、時分の頭のことを考えろな。
476デフォルトの名無しさん:2008/01/22(火) 12:47:40
>>475
同じじゃない。
expose.countはExposeのRectangleが分割された時に残りのnumRectsが入ってるので、
client側処理の遅延により処理が滞った時は expose.count = 0 の ExposeEvent が複数個
イベントキューに存在することもある。
477デフォルトの名無しさん:2008/01/22(火) 12:50:03
あほ?
動作確認は普通、_Xdebug=1;のときにするだろ。
478デフォルトの名無しさん:2008/01/22(火) 19:28:01
俺もアホの仲間だと思うけど質問。
ExposeとKeyPressのイベントを取ってて、KeyPressでもexpose、Exposeの時も
exposeをしてて、KeyPressでは表示を変えたりWindowのサイズを変えたりして
る。
KeyPressがあったときは、なぜかExposeイベントが発生したり発生しなかったり
で、KeyPressにもexposeをしかけてるのだけど、これを1つにまとめる方法って
あるだろうか?
KeyPressでExposeが怒らなかったときは、exposeは一回しかしないから良いの
だけど、KeyPressでexposeしてExposeも発生すると2回exposeをやってしまう。
479デフォルトの名無しさん:2008/01/23(水) 00:34:23
色の反転はどうするんですか?
480デフォルトの名無しさん:2008/01/23(水) 00:48:46
>>474
別に特殊な事じゃないから
481デフォルトの名無しさん:2008/01/24(木) 02:20:52
XmbDrawImageStringで文字を描画しているのですが、どうしても日本語が表示されません。
日本語のフォントは指定しています。

どのような原因が考えられますでしょうか?

482デフォルトの名無しさん:2008/01/24(木) 02:46:02
すみません。
setlocaleをfontsetの前に実行していたのが原因のようでした。
失礼しました。
483481: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とでているので、何かロケールの問題だとは思うのですが、
一定行数以上のファイルを扱わないと、個の文字列は出力されません。
484デフォルトの名無しさん:2008/02/01(金) 19:01:14
オーバーフローしてね?
485デフォルトの名無しさん:2008/02/18(月) 18:25:36
>>483
可能です。
以上。
はい次の方。
486デフォルトの名無しさん:2008/02/18(月) 23:02:56
>>485
何が可能なんだ?
487デフォルトの名無しさん:2008/02/26(火) 01:54:25
カラー値から、RGBの三原色に戻すにはどうしたら良いでしょうか?
488デフォルトの名無しさん:2008/02/26(火) 14:20:52
XFree86 4.3.0 から 4.5.0に変えたのですが、仕様って変わったんですかね?
XGetGeometryで、
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"で確保していないようです。
どうしたらよろしいでしょうか?

489デフォルトの名無しさん:2008/02/26(火) 23:45:43
・諦める。
・コンパイルオプションを一時的に変更する。
・根本から修正してしまう。
490デフォルトの名無しさん:2008/02/27(水) 05:17:51
まずXFree86を使ってる時点で茨の道を歩んでることを自覚しないとな。
あと、型に注意してるのってコンパイラが厳格になっただけだろ
491488:2008/02/28(木) 21:11:14
すみません。ご指摘の通りでした。
gccも変更されておりました。
492デフォルトの名無しさん:2008/02/29(金) 00:46:04
 まだ勉強中のみなのですが疑問に思ったため質問させて頂きます。
 例えばオセロのようなプログラムを作る場合、ウィンドウに適当に線を引き
クリックされた座標でクリックされた位置を計測してオセロのマスとするのと、
一つのマスに一つのウインドウを作り、クリックされたウインドウでマスとす
るのと、どちらがXlib的なやり方なのでしょうか?
 自分が読んでいる本によると、「クリックされる場所はウインドウで判断す
る」的なことが書いてあるため後者だと考えているのですが、前者のほうが簡
単に作れそうですし効率的だと思います。
どちらでも作れるのであれば問題ないとは思うのですが、Xlib的な方法がある
のであれば教えて頂きたく思います。
 どうかよろしくお願いします。

493デフォルトの名無しさん:2008/02/29(金) 01:23:11
Xlibを名前で使うなんてマゾいことをする人には大差ないと思う。
Motifを使う場合なんかは、絵を貼れるボタンを収容する表型のパーツ(ウィジェット)があるので、
座標計算を一切しないで画面を作ることができる。この差は大きい。
494493:2008/02/29(金) 01:24:32
「名前」じゃないよ……
『Xlibを「生」で使う』
に訂正。
495デフォルトの名無しさん:2008/03/03(月) 14:58:24
Xtってどうなのよ。

Cしかできないんだけど、C++覚えたほうがいいのかな。
496デフォルトの名無しさん:2008/03/03(月) 16:20:37
今の私だったら、MotifをC++で使いたくなる。
もう、XmToggleButtonGadgetGetState()はこりごりだ。
# XtにもXtWidgetToApplicationContext()なんてのがあるが。
497デフォルトの名無しさん:2008/03/03(月) 23:14:01
自分でライブラリ作っちゃえば良い
498デフォルトの名無しさん:2008/03/05(水) 03:41:39
Xlib を勉強しているのですが、Xt 等の上層ライブラリはC++が前提なのでしょうか?
また、Xt 等を使う場合Xlib は必要無く Xt を使うだけでプログラムが書けるのでしょうか?
プログラミング自体初心者などで良く分かりません。

このままXlib を勉強するのか、それともXt 等の上層ライブラリとそれに必要な言語(C++)
等を、勉強するか悩んでいます。
499デフォルトの名無しさん:2008/03/05(水) 21:48:44
Xlib や Xt だけなら C でOK。
Xt だけ覚えても、細かいウィンドウ処理をする場合には Xlib が必要になるので
両方勉強しておいた方がいいよ。
500デフォルトの名無しさん:2008/03/05(水) 23:57:14
ありがとうございます。
Xlibは、「X Window ハンドブック」で勉強しているのですが、Xtでお勧めの本はありますか?
日本語の書籍が希望です。
501デフォルトの名無しさん:2008/03/06(木) 00:22:04
>>500
トッパンのシリーズ。XlibもXtもみんなある。
502デフォルトの名無しさん:2008/03/06(木) 00:41:16
私の教科書だったのは「X Toolkit プログラミングテクニック」と
「実践 X-Window Ver.11 プログラミング Xlib と X ツールキット」。
まだ手に入るのかな?
503デフォルトの名無しさん:2008/03/06(木) 01:06:57
教科書がないと勉強できない人とか役に立つの?
504デフォルトの名無しさん:2008/03/06(木) 11:48:34
世の中には教科書を与えても勉強しない人がいる
505デフォルトの名無しさん:2008/03/06(木) 13:05:43
>>503
教科書を読まずにネットに転がっているサンプルコードを改変するだけ
のバカプログラマよりは、はるかにいい。
506デフォルトの名無しさん:2008/03/06(木) 13:54:38
マニュアルもドキュメントも教科書だろ?
なら、教科書が無いと俺には難しい。

役に立たなくてごめんなさい
507デフォルトの名無しさん:2008/03/07(金) 14:27:46
>>503
教科書を馬鹿にする者は、教科書に泣くぞ。
508デフォルトの名無しさん:2008/05/13(火) 23:05:49
似たような質問でてるけど、答えが出てないので、

バックグランドで走らせているシェルスクリプトから、
X上でキーボードの状態を入手する方法ありませんか?
(xev見たいな機能をWindowを出さないで実行するとかでもOK)

スクリプト実行から○○秒以内に、
X上(どこでも)で、特定のキーが押された場合に、指定したアプリケーションを実行する。
みたいなことがやりたいです。
509デフォルトの名無しさん:2008/05/14(水) 00:32:09
「Xで特定のキーが押されたことを通知するプログラム」を作り、シェルスクリプトから起動すればいいのでは?
フォーカスがないときにどうやって取得するのかは、知らん。
510デフォルトの名無しさん:2008/05/14(水) 13:28:07
この手の質問は「何々しようとして〜やってみたが××が思った通りにならない」
とでも書かれていればレスしやすいんだけどな
とりあえずヘッダでも眺めてみたら?
511508:2008/05/14(水) 20:51:00
Xevent拾おうと思ったけど、フォーカスがない場合は、無理っぽい。
Xlib全然関係ないけど、/dev/input/event0 を一定時間ごとに監視ってのを
やろうかと思ったけど、番号event*が固定されない上に、スマートに検出が難しかった感じです。
Xをフックして、キー入力を拾う方法とかないですかね?
512デフォルトの名無しさん:2008/05/14(水) 22:04:22
そもそもX端末のキーなのか実行端末のキーなのか、どっちなのかと。
513デフォルトの名無しさん:2008/05/14(水) 22:13:34
Xサーバの動いてる実端末でキーが拾えればOKです。
どっちでもOKってことですね。
タイマー処理中に、特定のキーが押された状態なのをスクリプトから
検知できるとベスト。
514デフォルトの名無しさん:2008/05/15(木) 11:31:10
acpiのイベント辺り参考にならんかな
515デフォルトの名無しさん:2008/05/15(木) 18:27:17
>>508
ウィンドウマネージャのキーアサインをカスタマイズして、外部プログラムを叩くだけで十分じゃね?
516デフォルトの名無しさん:2008/05/15(木) 19:35:50
キーの押下状態取得なら XQueryKeymap() で取得可能。
window無しでxevみたいなことをしたいのであれば、XGrabKey() を使えばおk
517デフォルトの名無しさん:2008/05/15(木) 22:34:37
XQueryKeymap()で取ってきたキーコードに
ビットフラグでフィルタして、
XKeycodeToKeysym()で行けそうですね。
後で、試してみます。
518517:2008/05/16(金) 20:17:41
XQueryKeymapで取得できました。
ちょっと、返り値の形式が特殊だったのに手こずりましたが、、、
説明の分かりにくいこと。
519デフォルトの名無しさん:2008/05/17(土) 06:42:26
せっかくのなので、サンプルコードのうpキボンヌ
520デフォルトの名無しさん:2008/05/17(土) 18:21:59
こんなのをwhileで回して、欲しいキーのコードと比較したらOKでした。
disp=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);
}
}
}
521デフォルトの名無しさん:2008/05/18(日) 02:25:23
>>519
#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;
}
522デフォルトの名無しさん:2008/05/18(日) 07:58:21
サンクスコ、あげ
523デフォルトの名無しさん:2008/05/19(月) 12:13:44
>>521
これだとCPU負荷上がりすぎるんじゃね?
524デフォルトの名無しさん:2008/05/31(土) 17:57:58
どちらかというとポインタの話なのでここでいいか迷ったのですが、質問です。
main(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を起こします。
何が原因なのでしょうか?
525524:2008/05/31(土) 18:14:11
すいません、解決しました。
半日悩んでこんなくらだらないミスなんて・・・orz
526デフォルトの名無しさん:2008/06/27(金) 00:05:05
XlibでCGの描画やってるんだけど
XImageより高速に描画する方法ってある?
比較的軽いシェーディングでもフレームレート落ちるんだが・・・。
XShmImage使うと多少良くなるのかな?
527デフォルトの名無しさん:2008/06/30(月) 00:30:43
空で回してみりゃどっちがネックか分かるじゃん
528526:2008/07/15(火) 00:49:19
>>527
プログラムの動作時間とか計ってみたら
XPutImage,XPutPixelがかなり時間がかかってる。
XImage使う以外で、何か良い方法ありますかね?
529デフォルトの名無しさん:2008/07/15(火) 01:23:05
早いと思うライブラリはどういう処理やってるか調べてみたらa
530デフォルトの名無しさん:2008/07/15(火) 10:51:49
昔がんばってた頃は、SHM付きのXImageが最速だった気がする。
531デフォルトの名無しさん:2008/07/15(火) 11:03:35
XPutPixel使ってる時点で無駄が多い臭い
532526:2008/07/15(火) 16:30:38
レスサンクス

>>529
一度Qt覗いてみたけど挫折したんだよな…。
もう少しがんばってみるかー

>>530
やっぱりmit-shmか。ちょっと調べて実装してみます。

>>531
XPutPixelが遅いってことは
Ximageのdataを直接いじればいいのかな?
これもちょっとやってみますー
533デフォルトの名無しさん:2008/07/16(水) 00:49:54
>>532
Xlibは、一つの関数呼び出しごとに一回のリクエストが走るものと思っておくといい。
つまり、XPutPixel()なんか使った日には一体何回リクエストが走ることになるやら。
だからこそ、線分にしろ長方形にしろ、まとめて描画する(≒リクエストを送る)関数が用意されているわけで。
534526:2008/07/17(木) 15:31:16
一応shmもdata直接いじりも実装できた。
最低限のプログラムでまわすと、実行時間の短縮が目に見えるんだけど
実際シェーディングとかを実装したプログラムに入れてみても、目に見える程違わない…
どこかおかしいのかなぁー

それと、XShmPutImageから投げられる完了イベントってどうやって拾うの?
535デフォルトの名無しさん:2008/07/17(木) 15:38:04
>>534
多分君はXlibの基本がわかってないと思う
536デフォルトの名無しさん:2008/07/18(金) 23:05:04
xlibって遅くない?
xlibつかう位なら、Java Appletで描画した方がまだ早いでしょ。
537デフォルトの名無しさん:2008/07/18(金) 23:43:23
じゃばあぷれっと(笑)
538デフォルトの名無しさん:2008/07/18(金) 23:59:45
Swing は xlib に基づいているわけだが
539デフォルトの名無しさん:2008/07/20(日) 00:41:38
>>536
そのJavaAppletは誰が描画するんだ?
540526:2008/07/22(火) 16:05:20
>>535
Xlibに関しては、描画できればいいや程度だったから
確かに基本はわかってないと思う…。
541デフォルトの名無しさん:2008/07/22(火) 18:28:09
まず完了イベントなんてのが送られてくると思ってる時点で、Xlibがどういうものかすら分かってないと思う
542526:2008/07/23(水) 00:52:41
ttp://h30266.www3.hp.com/odl/vax/japanese/jdwm126/rel/dwmrn013.htm
このサイトみて、わからなかったから質問したんだけど
でも、とりあえずそこには問題ないみたいです。
543デフォルトの名無しさん:2008/07/23(水) 01:36:39
シェーディングとやらが遅いのをXlibの所為にしたいだけだろ
544デフォルトの名無しさん:2008/07/23(水) 12:38:05
>>541
XShmPutImageは完了イベントを発生させることができるんだけど…
545デフォルトの名無しさん:2008/10/02(木) 20:14:30
時代はフレームバッファ
546デフォルトの名無しさん
>>545
そうなるのかなと思って待ってたけど、その時代はこなかったので
諦めてXlibの勉強を最近始めたよ