[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 12/27 01:06 / Filesize : 255 KB / Number-of Response : 921
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

GTK プログラミング!!



1 名前:login:Penguin [2001/07/22(日) 22:31]
俺の様な厨房プログラマーをある程度使えるようにまで育成して、和製糞ソフトを
大量量産するのが目的のスレッドです。
とりあえずGNOMEプログラミング(小学館)を買ってきました。
これから読んでみます。

81 名前:login:Penguin mailto:sage [02/08/01 16:14 ID:ZgkCZ7ws]
g_threadの使い方がわからん。
g_thread_init()は必須ですか?
というか、Gtk+でスレッドやるならGlibのスレッドのほうがいいのですか?
pthreadですか?教えてください。

82 名前:login:Penguin [02/08/08 00:16 ID:VbBFNw1l]
gtk で作ったプログラムって Xt の Widget と共存出来ないんでしょうか?
Qt には(昔いじった記憶では)Xt の Widget を埋め込むサンプルが確かあったの
ですが、gtk は web を探しても見付からないです。
どなたかご存知の方がいらっしゃいましたら教えて下さい。

83 名前:82 mailto:sage [02/08/08 00:37 ID:VbBFNw1l]
一応mozillaの中に gtkxtbin なるものを発見はしたんですが、
View Source しても殆ど使われていないらしくって使い方が良く分かりませぬ…

84 名前:login:Penguin mailto:sage [02/08/08 02:04 ID:75koLqWb]
system("startx");

85 名前:login:Penguin mailto:sage [02/09/24 02:57 ID:zHWB0hgh]
C++になれていると、Gtk+の継承はかなりめんどい気がしてくるな。
そもそもCでオブジェクト指向やろうって発想がすごいが・・・
というわけでGtkmmもやり始めたんだけど、どっちがいいのかねえ。

86 名前:login:Penguin mailto:age [02/09/29 02:48 ID:eHgtOed6]
GTKもっとみんなに使ってほしいからageる

87 名前:login:Penguin mailto:age [02/09/29 02:54 ID:eHgtOed6]
継承をする場合(独自のウィジェットを書く場合)、
ウィジェットの構造体はクラスにしても良いようだ。
Gtk+の継承は構造体の最初のフィールドをGtkWidgetにすることにより
キャスティングの多用でそれっぽいことができるようになっているが、
これはclass hoge:public GtkWidget と書いてC++による
「本物の」継承をさせてもうまくいくことがわかった。
最初のフィールドが同じなんだから当然といえば当然だが。

88 名前:login:Penguin mailto:age [02/09/29 02:58 ID:eHgtOed6]
オーバーライドはxxx_class_init()のような関数内で行える。
肝心のメンバ関数は次のように書けば良い。

static void xxx_init(GtkXXX *newwidget)
{
  GTK_WIDGET_SET_FLAGS(newwidget, GTK_CAN_FOCUS);
  newwidget->Init();
  }void GtkXXX::Init(){

  //ここからインスタンス固有フィールド
  //わざわざキャスティングしなくてもメンバ変数がそのまま書ける
}

89 名前:login:Penguin mailto:age [02/09/29 03:05 ID:eHgtOed6]
Gtkmmは、標準では入ってないディストリがほとんどなので使うのをためらってしまう。
Gtk+のバージョン2も同様。まだ使う気にはなれない。
1.2.xのみでC++のオブジェクト指向がほぼそのまま使えることがわかったため
自分としてはかなり使いたくなってきた。というわけでスレをあげてみた。



90 名前:login:Penguin mailto:sage [02/09/29 15:59 ID:4p6DQ8aZ]
OOPやりたいんなら素直にC++使えばいいじゃん。
Cで無理にOOPやろうとするところが解せない。

91 名前:login:Penguin mailto:sage [02/09/29 16:20 ID:fE3HHMZQ]
で、C++ 使うんなら素直に Qt 使えばいいじゃん。
となる罠。

92 名前:login:Penguin [02/09/29 22:53 ID:3o1IzYa7]
C++は言語仕様がfatすぎてどうも...
Cくらいのシンプルさがちょうどいいナリ。

GTKの設計思想はイイとこ突いてると思う。


93 名前:スレタイ mailto:sage [02/09/29 23:39 ID:w4WxNaS7]
s/GTK/GTK+/


94 名前:login:Penguin mailto:sage [02/09/30 00:17 ID:OLKvT8Xh]
>>92
そっかなぁ?
GTK+みたいにでかくなるとCではちょっと持て余し気味じゃない?
Qtはかなりスマートだと思うけど。

95 名前:login:Penguin mailto:sage [02/09/30 01:19 ID:BdR/p6Dn]
Qtは、mocを使うのがイマイチ気に入らん。
GTK+は日付バージョンの時代から使ってるのでなんとなく今も使ってる。

96 名前:login:Penguin mailto:sage [02/09/30 01:20 ID:B0DOm7W8]
ruby/gtkでバイナリまで作れたらいいのに…

97 名前:login:Penguin mailto:sage [02/09/30 01:28 ID:gFORtcVB]
GCode
gcode.sourceforge.net/

GCode is a GTK+ C++ Object Development Environment for
the GTK+ 2.0 library.
だそうな。



98 名前:おむこさん志望 ◆GqCwfDSA mailto:sage [02/09/30 02:10 ID:R33exTlJ]
m17n.orgで多言語処理ライブラリを作ってるらすぃ
www.ipa.go.jp/NBP/13nendo/reports/infotech/m17nlib/m17nlib.pdf
現物を見たことがないので理解が間違っとるかもしれんが、これが本当にGtk+に
組み込まれたらUnicodeに頼らないCSIなm17n環境が実現できるってこと?

誰か詳しいひとはフォローおながいしまつ。

99 名前:login:Penguin [02/11/11 20:56 ID:gMGsLKZV]
GTK+もあまり使われてないんですかね・・・



100 名前:login:Penguin mailto:sage [02/11/11 21:42 ID:vgJymunl]
GCode の名前がIntiに変わった模様。
しっかし gtkmm とどっちを使うべきか迷うよな。
こーゆーあんま違わない分岐は正直困る。
全然違うんなら「選択出来て良い」と言えなくもないけどさぁ。

101 名前:login:Penguin mailto:sage [02/11/11 23:03 ID:d9jtMLp4]
>>95 moc が嫌いっていうけど、じゃあ libsigc はいいの?

102 名前:login:Penguin mailto:sage [02/11/12 01:02 ID:XwN1vX/q]
>>91

gtk--
と書いてみるテスト

103 名前:仕様書無しさん mailto:age! kara-age [02/11/28 21:01 ID:efkqpcj6]
とりあえず、参考のためのURLを貼っておきます。
がんばれ!>1さん。(そういえば、最近見ないな)
Gtk+関係
ttp://www.kitanet.ne.jp/~asler/linux/gtk/ja/gtk_tut_ja.html
ttp://www.gnome.gr.jp/docs/gtk+-1.2.x-refs/gtk/
ttp://www.gnome.gr.jp/docs/gtk%2Bfaq.20020824.html
Imlib関係
ttp://docsrv.caldera.com:8457/en/ImlibRef/
画像ビューアを作っちゃおう
ttp://www.geocities.co.jp/SiliconValley-Cupertino/4084/Cprogram/viewer2/

104 名前:仕様書無しさん mailto:sage [02/12/03 12:58 ID:htGqbcIp]
ここ、あんまり人が来ないみたいだから…。
とりあえず、自分用のメモ。
Gtk+プログラムをコンパイル/リンクするためには。
gcc `gtk-config --cflags` -c file名 ←コンパイル
gcc `gtk-config --libs` file名 ←リンク

105 名前:仕様書無しさん mailto:sage [02/12/03 14:00 ID:htGqbcIp]
Imlibを使用した場合のコンパイル/リンク方法
gcc `imlib-config --cflags` -c file名 ←コンパイル
gcc `imlib-config --libs` file名 ←リンク



106 名前:login:Penguin mailto:sage [02/12/03 18:41 ID:an39zP9M]
gtk-2.0 以降だったら
pkg-config にしる!

107 名前:仕様書無しさん mailto:sage [02/12/03 19:46 ID:htGqbcIp]
>106 thx! ここ、見ている方がいるんですね。
>104 はgtk-1.xに摘要っと。
gtk-2.0 以降だったら
gcc `pkg-config --cflags gtk+-2.0` -c file名 ←コンパイル
gcc `pkg-config --libs gtk+-2.0` file名 ←リンク


108 名前:login:Penguin mailto:sage [02/12/05 19:46 ID:lirUEjaW]
>> 103
Larseさんとこは外しちゃ駄目でしょう。
ttp://larse-gtk.hp.infoseek.co.jp/gtk.html


109 名前:仕様書無しさん mailto:sage、sageったらsage [02/12/06 12:34 ID:5SAieeJI]
>108 thx!
>107の続き
[1] makeファイルとは
Makefileというのは、ソースファイルから実行可能ファイルを
作成する手順を記述したものです。実際に、ソースファイルか
ら実行可能ファイルを作成するためにはmakeコマンド(MS社
のコンパイラ系ではnmakeコマンド)を実行します。



110 名前:仕様書無しさん mailto:sage、sageったらsage [02/12/06 12:36 ID:5SAieeJI]
>109の続き
コマンドの実行によって、オブジェクトファイルとソースファ
イルの比較が行われます。もし、ソースファイルの方が新しけ
ればコンパイルが行われます。そうでなければ、何もしません。
makeファイルを作成する事により、ソースファイルと実行
可能ファイルの関係および保守・管理を容易にすることができ
るようになります。
コマンドの形式は
make −f makeファイル名
となります。ただし、makeファイルの名前がmakefileであ
るときは、上記コマンドの−f以下は省略可能です。


111 名前:おむこさん志望 ◆QtGqCwfDSA mailto:sage [02/12/06 17:21 ID:aWU0cpft]
Gtk+ の話じゃないじゃん(w
gcc, make, gdb, gprof などの使いかたを一通りさらっと見るなら
www.amazon.co.jp/exec/obidos/ASIN/4900900206/qid=1039162770/sr=1-5/ref=sr_1_2_5/249-2045410-9958747
がいいよ

112 名前:login:Penguin mailto:sage [02/12/06 18:28 ID:5wmq/hiL]
>>111 今だとちょっと古いかも。

GNUツールなら
ttp://www.sra.co.jp/public/sra/product/wingnut/
とか
ttp://www.sra.co.jp/public/sra/product/wingnut/gnu-links.html
のリンク先とかだと日本語対応になっているよ。
読み易いとは限らんけどね。

113 名前:名無しさん@XEmacs mailto:sage [02/12/06 18:33 ID:+MeggbtK]
GTK+ Programming するなら automake、autoconf 使いましょう!!
簡単な使い方の説明がたしか Larse さんのところ(>>108参照)にあったよね?

114 名前:login:Penguin mailto:sage [02/12/06 18:56 ID:5wmq/hiL]
>>113
> GTK+ Programming するなら automake、autoconf 使いましょう!!
最近バージョンアップが激しいので、できればam-1.5 ac-2.13を使いませう。
今日、ac-2.57 am-1.7.2まであがりますた。ほとんどの.m4ファイルが
撃沈されますた。


115 名前:login:Penguin mailto:sage [02/12/06 22:23 ID:m6HOswTF]
automakeとかautoconfとか、書式がちょっと変態的だと思う。いや、使ってるけどさ。

116 名前:login:Penguin mailto:sage [02/12/06 22:34 ID:5wmq/hiL]
>>115
確かに、confgure.in(ac)のマクロとシェルスクリプトの混在状態は
変態的だね。Makefile.amはまだマトモだけどさ。
自分でhoge.m4を作っておいてconfigure.inはほとんどマクロだけに
するとかしたほうがいいのかな?何とかすっきりさせたいんだけどね。

UNIX板のすれは死んでいる状態だけど、やっぱりすれ違いかな?


117 名前:login:Penguin mailto:sage [02/12/06 23:06 ID:m6HOswTF]
>116

bin_PROGRAMS=hoge

hoge_SOURCES= main.c

みたいなMakefile.amの書き方も俺は気持ち悪いと思うんだけど、そこらへん
はどう思う?
なんで区切が_なんだよ。未だになじめない。

そろそろスレ違いっぽくなってきてるような気がするので最後にGTK情報を。
GTK+ 2.1.3がリリースされてる。

118 名前:冗談だよ mailto:sage [02/12/06 23:20 ID:5wmq/hiL]
>>117
> なんで区切が_なんだよ。未だになじめない。
GTK+の関数やマクロは、ほとんど _ がデリミタになっているから気にしない。


119 名前:login:Penguin mailto:sage [02/12/06 23:30 ID:m6HOswTF]
>>118

GTK+の関数とかは、向こうが用意してくれてるじゃん。自分が定義したhogeが
hoge_SOURCESみたいな感じで_でつながってる!って感じがなんか気持ちわるい
んだ。
そう、俺の中では_は完全に区切ってる感じじゃなくて、区切りつつもつなが
ってる感じなんよ。ここらへんの感覚は、やっぱり人によって違うんだろうなぁ。



120 名前:login:Penguin mailto:sage [02/12/06 23:39 ID:5wmq/hiL]
名前のところを見て欲しいが、、、>>119
確かに SOURCES プライマリは気に入らないですね。
それ以外はインストールされるディレクトリ名と割り切ってしまえば、
そんなでもないですけど。
# 他にも例外あったっけ?



121 名前:login:Penguin mailto:sage [02/12/07 00:17 ID:yjJ1LM9Y]
>>120

とりあえず、hoge_LDADDってのがあるね。hoge_LDADD = @GTK_LIBS@みたい
な感じで使う。

まぁ、定型的に使う分には、割切ってしまえばそんなに気にはならないと
いえば、そうなんですけどね。

122 名前:120 mailto:sage [02/12/07 10:07 ID:Of8FLFRv]
ということでまとめ、am-1.7環境でMakefile.amで変態的なプライマリは、
SOURCES AR LIBADD LDADD LDFLAGS LINK CCASFLAGS CFLAGS CPPFLAGS
CXXFLAGS FFLAGS GCJFLAGS LFAGS OBJCFLAGS RFLAGS YFLAGS DEPENDENCIES
SHORTNAME
に決定されました。結構いっぱいありますね。


123 名前:login:Penguin mailto:sage [02/12/07 20:20 ID:yjJ1LM9Y]
120さん乙ー

124 名前:login:Penguin [02/12/10 17:16 ID:m9e/PYr1]
良スレage

125 名前:login:Penguin mailto:mage [02/12/23 19:31 ID:1cqFxvzz]
GTK+2.2 リリースage。

ところで、みなさんはGTK+1.2とGTK+2.x、どっちを使ってますか?またその理由は?

ちなみに俺はGTK+2.xの方を使ってます。1.2より速いし、immoduleとか
アンチエイリアスとか、いろいろ新機能があるから。

126 名前:名無しさん@Emacs [02/12/23 19:54 ID:Mt+k38km]
僕もGTK+2.xですね。
とりあえず新しいの使っておこうって感じです。

127 名前:名無しさん@カラアゲうまうま mailto:sage [02/12/23 20:11 ID:HupxKL2U]
いまだ1.2.xのまま。
自分でつくったやつが動くのかどうか検証するのがめんどい。

# そんなことじゃだめなんだけどなー。

128 名前:(^v^)-666 mailto:sage サゲったら鮭弁、ウマウマ! [02/12/26 12:41 ID:5tM+3DZe]
オレも1.2.xのまま。
特に、理由はないです。Gtk+2.xに変えてもいいけど…。

イマ、ちょっと忙しいんで、年明けにでも…。

129 名前:login:Penguin mailto:sage [03/01/03 20:55 ID:WNlDvEUU]
保守



130 名前:IP記録実験 mailto:IP記録実験 [03/01/08 22:04 ID:1aQvEFST]
IP記録実験
qb.2ch.net/test/read.cgi/accuse/1042013605/

1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。

27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?

38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。

73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。

131 名前:login:Penguin mailto:sage [03/01/09 01:27 ID:5dI2J0HT]
>>375
偽者だから

132 名前:login:Penguin mailto:sage [03/01/09 01:41 ID:5dI2J0HT]
さて、そろそろ読むべきレスがなくなって
記念カキコで1000目指す頃合ですか。

133 名前:IP記録実験 mailto:IP記録実験 [03/01/09 02:05 ID:NCBslnNH]
IP記録実験
qb.2ch.net/test/read.cgi/accuse/1042013605/

1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。

27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?

38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。

73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。

134 名前:login:Penguin mailto:sage [03/01/09 02:11 ID:X6ogbEfM]
>>584
ポイズン

135 名前:login:Penguin mailto:sage [03/01/09 02:45 ID:oeq9HIxH]
>>50
タイプミス
スマソ

136 名前:login:Penguin mailto:sage [03/01/09 03:29 ID:z58+fY32]
90 名前:心得をよく読みましょう 本日のレス 投稿日:03/01/08 17:30 Xc+fqEec
>1
>どうやら管理人

>qbサーバ
ってなんですか?


97 名前:●ITAN.IBM ◆GQITAN.IBM 本日のレス 投稿日:03/01/08 17:31 A4oVmFaH
>>90
批判要望、削除議論、削除整理、削除要請


98 名前:心得をよく読みましょう 本日のレス 投稿日:03/01/08 17:31 TzeruebF
>>90
qb.2ch.netで始まるアドレスの鯖。


とありましたな。スマソ
他の鯖はIPとってないの?

137 名前:山崎渉 mailto:(^^)sage [03/01/15 11:29 ID:wo7m90to]
(^^)

138 名前:質問君 mailto:age [03/01/17 21:51 ID:Gw5Q2kTa]
お力をお貸し下さい!
gtk_timeout_addで画面の再描画を設定しています.
しかし,別の関数内でwhile(1)の無限ループを使うと,画面の再描画ができません.
どうしても無限ループが必要なのですが,どのようにすればよいのでしょう?
お力をお貸し下さい!

139 名前:山崎歩 [03/01/17 22:20 ID:tQv9kuDJ]
>>138 おまえが永遠にソースを書き続ければよろしい。



140 名前:login:Penguin mailto:sage [03/01/17 22:49 ID:wyXs27gT]
>>138
スレッド使えば?

141 名前:login:Penguin mailto:sage [03/01/19 05:15 ID:LdWFg6+q]
>>138
あなたの望むそのものズバリの解答ではないかもしれないけど、

while( g_main_iteration(FALSE) )
/* do nothing */;

で強制的にメインループを回せます。
よって再描画が必要なときはただちに行われます。
参考までに。

142 名前:login:Penguin [03/01/22 11:49 ID:VGBhRJXh]
Gtkmmの参考書って出てないんですか?

143 名前:login:Penguin mailto:sage [03/01/22 23:47 ID:2URUk/vJ]
Gtkmmを使いたいなら、まずただのGtkをやること。
オブジェクト指向の知識があれば、すぐ移行できる。

144 名前:login:Penguin mailto:sage [03/01/22 23:49 ID:2URUk/vJ]
Gtk2で開発している人はあまりいないのかな?
自分が思うに、Gtkは1.2.xでも相当洗練されていて、十分な機能を備えているんじゃないだろうか。


145 名前:login:Penguin mailto:sage [03/01/23 02:34 ID:DVnX67iq]
>>144
Pango だけでも十分 1.2.x から 2.x に移行する動機付けには十分過ぎると思うんだけどなぁ。
2.1 からは Xft2/fontconfig 対応で OpenType フォントも使えるようになったし。

あと、個人的に Gtk+ 1.2の GtkPaned Widget は大キライ。仕切りの下にあんなつまみつけた
センスが分からん。


146 名前:login:Penguin [03/03/06 12:49 ID:ucaHnoqM]
scheme で gtk やりたいぞ age.
和製糞ソフト作るようなヤツでもわかる日本語ドキュメント見せろ,または書け.
guile-gtk 希望.

え?w3m cgi? GUI じゃないだろ?便利だけど.

147 名前:login:Penguin [03/03/06 13:53 ID:fSTp04vi]
>>146
(・∀・)つ gauche-gtk ツカエ!
www.shiro.dreamhost.com/scheme/gauche/index-j.html
www.shiro.dreamhost.com/scheme/gauche/packages-j.html


148 名前:146 [03/03/07 12:46 ID:5F6JJ4cf]
>>147
Gauche-gtk に同梱されている gtk-tutorial の hello, world! か.
でもこれだけじゃあ和製糞ソフトが量産されるとは思えないな.

gtk2 って何?
まだ 1.2 使ってるんだけど,これから gtk プログラムを作るなら 2.x の方がいいの?
多国語の扱いがマシになったとか書いてあるところがあったけど.
簡単な方を教えてクレクレ はぁと.

149 名前:login:Penguin mailto:sage [03/03/07 13:19 ID:E7ysupB/]
1ユーザとしては

アンチエイリアシングで、表示が綺麗なgtk2を使って欲しい、、



150 名前:山崎渉 mailto:(^^) [03/03/13 16:51 ID:52vAtNh8]
(^^)

151 名前:login:Penguin [03/03/18 10:45 ID:FeF5+SYV]
gtk ver 1.2を使っているが、どうすればwidgetの中味を強制的に再描画させら
れる?計算結果をすぐに反映したい時など、ウィンドウ操作によって
expose_eventが発生するのを待たずに再描画したいケースが有るはず。例えば
ボタンをクリックした時にGtkDrawingAreaオブジェクトを再描画させるとすると

GtkDrawingArea* area;

int main(int argc, char** argv)
{
(中略)

// GtkDrawingAreaオブジェクトを作成

area = gtk_drawing_area_new():

// expose_eventのコールバック関数を指定

gtk_signal_connect(GTK_OBJECT(drawingarea1), "expose_event",
GTK_SIGNAL_FUNC(on_drawingarea1_expose_event), NULL);

// GtkButtonオブジェクトを作成

GtkButton* button = gtk_button_new_with_label("Draw now");

// clickedイベントのコールバック関数を指定

gtk_signal_connect(GTK_WIDGET(button), "clicked", GTK_SIGNAL_FUNC(click_event_handler));

(略)

}
(続く)

152 名前:login:Penguin [03/03/18 10:45 ID:FeF5+SYV]
(続き)
// drawing areaの中味を描画する

gboolean expose_event_handler(GtkWidget* widget, GdkEventExpose* event, gpointer arg)
{
GdkWindow* window;
GdkGC* gc = gdk_gc_new(window = event->window); // グラフィックコンテクストを取得する

// 描画コード

gdk_gc_unref(gc);
return FALSE;
}

// ボタンがクリックされた時の処理

void click_event_handler(GtkWidget* widget, gpointer arg)
{
gboolean return_val;

// areaの再描画を要求

困ったのはここから。click_event_handlerの中でareaに対してexpose_eventを発行すれば再描画されると踏んだが、関数
gtk_signal_emit_by_name()の呼び出しで第3引数以下にどんなパラメー
タを渡せば良いのやら(続く)。


153 名前:login:Penguin [03/03/18 10:48 ID:FeF5+SYV]
(続き)
以下は今までに洩れが試したこと
1.expose_event_handlerにargだけを渡す

gtk_signal_emit_by_name(
GTK_OBJECT(area), // areaに対して
"expose_event", // expose_eventを発行する
NULL, // expose_event_handlerの第3引数argに渡す値
&return_val); // expose_event_handlerの戻り値を格納する変数へのポインタ

コールバック関数expose_event_handlerは第2引数にGdkEventExpose*を
取るが、ここでexpose_eventを発行すると指定している以上、
GdkEventExpose*は自動的に渡されると予想して第2引数eventに渡す値は
指定しなかった。結果はこのコードを実行するとsegmentation faultが
発生して失敗。

2.GdkEventExposeオブジェクトを生成する

GdkEvent* event = gdk_event_new(GDK_EXPOSE); // GdkEventExposeオブジェクトを生成する
gtk_signal_emit_by_name(
GTK_OBJECT(area), // areaに対して
"expose_event", // expose_eventを発行する
event, // expose_event_handlerの第2引数eventに渡す値
NULL, // expose_event_handlerの第3引数argに渡す値
&return_val); // expose_event_handlerの戻り値を格納する変数へのポインタ
gdk_event_free(event); // eventに割り当てられていたリソースを解放する

結果はgdk_event_newがundefined referenceとなってコンパイル不能。

誰か手がかりをキボンヌ。

154 名前:login:Penguin mailto:sage [03/03/18 12:23 ID:LjoIsUnh]
>153
ウィジェットを再表示するだけなら単に gtk_widget_draw() 使えば
いいんじゃないのかな。

155 名前:151-153 [03/03/18 12:53 ID:FeF5+SYV]
>>154
サンクス。ついでにgtk_widget_で始まる関数の一覧表調べたら今ではgtk_widget_queue_drawを使うことを推奨しているみたいだね。おまけに、描画
領域を背景色で塗り潰す方法も発見。結局上記のコードはこうなった。

// drawing areaの中味を描画する

gboolean expose_event_handler(GtkWidget* widget, GdkEventExpose* event, gpointer arg)
{
GdkWindow* window;
GdkGC* gc = gdk_gc_new(window = event->window); // グラフィックコンテクストを取得する

gdk_window_clear(window); // 背景色で塗り潰す

// 描画コード

gdk_gc_unref(gc);
return FALSE;
}

// ボタンがクリックされた時の処理

void click_event_handler(GtkWidget* widget, gpointer arg)
{
gtk_widget_queue_draw(GTK_WIDGET(area));
}


156 名前:login:Penguin [03/03/22 23:09 ID:XBKip/9C]
GTKアプリを、Xの起動時に立ち上げると、
日本語が一部消えるんだけど・・・。
なぜ?


157 名前:相互リンク [03/04/14 14:01 ID:nee9/l5h]
GTK+/Glade/gtkmm
pc2.2ch.net/test/read.cgi/tech/1050024677/l50

158 名前:login:Penguin [03/04/14 20:31 ID:Rvr2v4eQ]
>>156
化けるんじゃなくて?
化けるのはAAを掛けてるライブラリのせいなのでAAを切るとよいかも。

159 名前:156 [03/04/14 22:58 ID:Y/KrP1DD]
>158
化けてはいません。
なんか、X起動直後に、初めて描画したときだけWidget単位で消えます。(ちゃんと出るのもある)
でも、『あああaaaあああ』みたいのだと『   aaa   』ってアルファベットだけ出る。
 しかも、最小化とかすると、元に戻したときちゃんと出る。
 上の別のウィンドウを重ねたりしても。

 今は仕方ないから、プログラム中でxrefreshを呼び出して、むりやり再描画してるけど。
 タイムアウトでの割り込みをかけたりしてるから、美しくないんだよな。




160 名前:login:Penguin [03/04/16 18:42 ID:p/eHtb4s]
Gtk2(というかGdk/Pango)で、文字を任意の深さのPixmapに
(実際表示されているウィンドゥの深さ,Visualとは切り離して)
描画できる方法はないですか?

いったん描画したあとでgdk_drawable_get_imageで取り込み
プログラム内部で利用しようと考えています。

内部で使用するため、ハードにかかわらず一定の深さの
データがいいわけで、表示しているWindowとは無関係のPixmapに
描画できる方法をさがしています。

ただ単にPixmapを作成してgdk_draw_layout_with_colorsで
描画すると、カラーマップの設定が必要と怒られます。
カラーマップを設定しようとしたのですが、そのためには
Visual構造体を設定することが必要です。
自分で勝手に値を設定してそれをgdk_colormap_newに渡すと
落ちてしまうようですし...なんか方法はあるのでしょうか

161 名前:160 mailto:sage [03/04/16 18:48 ID:p/eHtb4s]
pixmap=gdk_pixmap_new(drawable,xsize,ysize);
visual.type=GDK_VISUAL_STATIC_GRAY;
visual.depth=1;
visual.colormap_size=1;
visual.bits_per_rgb=1;
visual.red_mask=1;
visual.red_shift=1;
visual.red_prec=1;
visual.green_mask=2;
visual.green_shift=2;
visual.green_prec=1;
visual.blue_mask=4;
visual.blue_shift=3;
visual.blue_prec=1;
colmap2=gdk_colormap_new(&visual,TRUE); ←ここで落ちる
gdk_drawable_set_colormap(pixmap,colmap2);

pangocontext=gtk_widget_get_pango_context(widget);
pangolayout=pango_layout_new(pangocontext);
pangofontdesc=pango_font_description_new();
pango_font_description_set_family(pangofontdesc,"monospace");
pango_layout_set_font_description(pangolayout,pangofontdesc);
pango_layout_set_text(pangolayout,"TEST",4);

gdk_draw_layout_with_colors(pixmap,gc,0,0,pangolayout,gdkcol,NULL);
getimg=gdk_drawable_get_image(pixmap,0,0,xsize,ysize);

/* getimg->mem の内容をプログラムで使用する */

162 名前:160 mailto:sage [03/04/16 18:53 ID:p/eHtb4s]
大切なとこ間違えてたスマソ
× pixmap=gdk_pixmap_new(drawable,xsize,ysize);
○ pixmap=gdk_pixmap_new(drawable,xsize,ysize,8); /*深さ固定*/

163 名前:login:Penguin [03/04/16 20:10 ID:lo8mJ2VY]
gtk2ってUTF8で渡さないと文字書いてくれないですよね。
で教えて欲しいのですが、EUC-JPからUTF8に変換するには
普通 iconv を使うものなのですか? それとも mbstowcs とかでもOK?

とりあえず今は iconv 使って表示できてるけどムダなのかな。


164 名前:login:Penguin mailto:sage [03/04/16 20:27 ID:f73hW52k]
mbstowcs は wchar_t が UTF-8 であることを仮定しちゃうことになるので
使っちゃだめ。
iconv() の wrapper である g_iconv 系の関数か、g_locale_to_utf8() を使う。
前者は変換元の文字コードを明示的に指定したい場合。
後者は「locale の文字コード」から変換したい時。gconvert.h を参照のこと。



165 名前:160 mailto:sage [03/04/17 01:22 ID:LaltSFnA]
PangoとXftを組み合わせればなんとかなりそうという気がしたが
...どうやって使うのだろうか

XCreatePixmapでPixmap作成(Xは使いたくなかったが...)
XftDrawCreateAlphaでXftDraw作成
XftDrawColormapでカラーマップ作成
pango_xft_get_font_mapでPangoFontMap作成
pango_font_description_newでPangoFontDescription作成、必要な値をセット
pango_font_map_load_fontでフォント読み込み
script_engine_listでpangoエンジンIDを取得←このあたりよくわからん
script_engine_loadでロード
PangoEngineShape(←これはどうやって取得するのか...)で
文字列からPangoGlyphStringに変換
pango_xft_renderで文字列描画
XGetSubImageでイメージ取得、でいいのかな?

166 名前:山崎渉 mailto:(^^) [03/04/17 11:49 ID:KRn99/cy]
(^^)

167 名前:login:Penguin mailto:age [03/04/19 23:58 ID:OPO/Nk6v]
保全age

168 名前:山崎渉 mailto:(^^)sage [03/04/20 05:47 ID:X64WTq1+]
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

169 名前:login:Penguin mailto:sage [03/04/22 18:53 ID:f6Aef7e/]
>>164
> mbstowcs は wchar_t が UTF-8 であることを仮定しちゃうことになるので
> 使っちゃだめ。

どんなlibcをつかってんだ(w
UTF-8っつーのは最大6byteのマルチバイトなcharacter encoding schemeだそ。
union wchar_t{
uint64_t wc;
char utf8[8]; /* 先頭2byteおまけ */
} wchar_t;
みたいな実装にはお目にかかったことが無いけど?
# wchar_tがUCS2だったりUCS4だったりする実装は山ほど在るが。

>>163に答えるなら、内部エンコードを仮定云々は関係なしに
「mb/wcはコード変換機能ではない」だろうよ。




170 名前:160 mailto:sage [03/04/22 23:43 ID:N17I9atm]
(pangoを使って配列に文字描画結果を格納する)
gdk-pixbufを使って解決しますた
ウィンドゥと同じ深さのpixmapを用意して
そこに文字を描画して
gdk-pixbufにとりこむ
gdk-pixbufはハードにかかわらずRGB24bitで操作できる

pixmap=gdk_pixmap_new(window,xsize,ysize,-1);
pixbuf=gdk_pixbuf_new(GDK_COLORSPACE_RGB,TRUE,8,xsize,ysize);

pangocontext=gtk_widget_get_pango_context(widget);
pangolayout=pango_layout_new(pangocontext);
pangofontdesc=pango_font_description_new();
pango_font_description_set_family(pangofontdesc,"monospace");
pango_layout_set_font_description(pangolayout,pangofontdesc);
pango_layout_set_text(pangolayout,"TEST",4);

gdk_draw_layout_with_colors(pixmap,gc,0,0,pangolayout,gdkcol,NULL);
gdk_pixbuf_get_from_drawable(pixbuf,pixmap,NULL,0,0,xsize,ysize);

171 名前:160 mailto:sage [03/04/22 23:49 ID:N17I9atm]
↑これで配列に取り込まれるので
gchar *pos;
pos=gdk_pixbuf_get_pixels(pixbuf)+x*4+y*gdk_pixbuf_get_rowstride(pixbuf);
で、R:pos[0], G:pos[1], B:pos[2], A:pos[3]で(x,y)の値が取得可能。

XmbDrawStringとXGetSubImageでもできないことはないが、pangoに
こだわったのは、(プログラム操作する側をふくめて)フォントの
扱いが簡単になり、統一がとれるため。

ただ、アンチエイリアスフォントはこの方法できれいにとれるが
2値(ビットマップ)にしたいばあいがきれいにとれない....

172 名前:164 mailto:sage [03/04/26 03:02 ID:d+JpEtZU]
>>169
あ、UCS4 だ。UTF-8 じゃねぇや..ボケてた。
>「mb/wcはコード変換機能ではない」だろうよ。
が言いたかったことです。wchar_t の実装がどうなってるかを
仮定するな、ってことで。

173 名前:login:Penguin [03/04/29 04:55 ID:TV50G8uM]
Gtk でスプラインとかベジェとか、曲線を描きたいのですが、サンプルとか無い
でしょうか。Gtk 単体では難しそうなので、他のライブラリも必要かなと思うの
ですが。作りたいのは Flash みたいな Vector Animation です。

174 名前:login:Penguin mailto:sage [03/04/29 15:26 ID:37fqnSLQ]
DPS (Display PostScript)を使用するのがいいんじゃない?
使ったことないけど(^^;
www.xfree86.org/4.2.0/dps.html

175 名前:login:Penguin mailto:sage [03/04/29 18:48 ID:LuljFrkZ]
>>173
www.gyve.org/
はもうダメぽなので
sodipodi.sourceforge.net/
とか参考にどうよ、かなり萎えるTopだが。

176 名前:login:Penguin mailto:sage [03/04/29 21:12 ID:dHsFcWW5]
>>175
スクリーンショットがひどぃ...

177 名前:login:Penguin mailto:sage [03/04/29 22:05 ID:ER/8FD9H]
>>175
gyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

178 名前:login:Penguin [03/04/29 22:35 ID:/4ZC/4OS]
>175
ワラタ、腹筋硬直するぐらい

179 名前:login:Penguin mailto:sage [03/04/29 22:36 ID:AjRnLWEG]
参った・・・



180 名前:login:Penguin mailto:sage [03/04/29 22:39 ID:clC6rFXj]
精神的ブラクラ
sodipodi.sourceforge.net/index.php3?section=gallery/ain

181 名前:login:Penguin [03/04/29 22:40 ID:OyAr9ioi]
>174-175
ありがとうございます。
guppi や gtkextra も見てみましたが、GtkGLExt で OpenGL を使ってみようかな
と考えています。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<255KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef