[表示 : 全て 最新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プログラミング(小学館)を買ってきました。
これから読んでみます。

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 を使ってみようかな
と考えています。

182 名前:login:Penguin mailto:sage [03/04/29 22:49 ID:/4ZC/4OS]
>180
svgでここまで書かれると凄いものがあるな

183 名前:login:Penguin mailto:sage [03/04/30 05:22 ID:+Nekyn/i]
>>173
使ったことはないのだが、GNOMEならlibartを使うのが王道っぽい。

184 名前:login:Penguin mailto:age [03/04/30 13:31 ID:Cq88QVNL]
gyk+インスコ難い

185 名前:login:Penguin mailto:sage [03/04/30 22:31 ID:frxRUIpZ]
>183
これかなり良いですね。ちょっと試してみます。ありがとうございました。

186 名前:login:Penguin mailto:sage [03/05/01 03:56 ID:BcJCA4M8]
ほー、levien さんって GhostScript のメンテナーさんなんだ。なるへそ。
libart って gnome 無くても使えるみたいだね。fresco にも使われてる。

187 名前:login:Penguin mailto:sage [03/05/01 04:22 ID:v9irLuOR]
>>164

wchar_tをUnicodeと見なすのは悪だというのは、ダメハッカーの寝言。
このアプリではwchar_tはUnicodeに限定すると、宣言すればいいだけのこと。
どうせ、g_locale_to_utf8()も内部ではmbstowcs()呼んでるよ。
まあ、その場合でもglibの関数を使うべきだが、それはUTF-8仮定とか
が理由ではない。

>>173
ベジエなんて自分で書けるだろ。ほれ。
double x = (1-t)*(1-t)*p0.x + 2*t*(1-t)*p1.x + t*t*p2.x;
double y = (1-t)*(1-t)*p0.y + 2*t*(1-t)*p1.y + t*t*p2.y;
0<=t<=1な。

>>183の言うとおり、libartでもベジエをドローできる。
libartだとアンチエイリアスの機能もあるのでありがたくはある。




188 名前:login:Penguin mailto:sage [03/05/01 16:22 ID:N64qTJQU]
>>187 ソース読めない香具師ハケーン
glibは文字コード変換はiconvでやってますが何か?

g_convert_to_utf8 -> g_convert -> g_covert_with_iconv -> g_iconv -> iconv

MS-Win32のバヤイMultiByteToWideCharを使ってるがこいつは非POSIX関数だしな。
変換結果がUCS2(プッ16bitかよ)だと保証がある。
一旦MBCSからUCS2に変換して自前でUCS2->utf8変換書いた方が楽かもしれん。
あんまり褒められたコードとは思えんがな。

ちなみにSUSv4ではwchar_t is opaque objectと書いてありますが何か?

__UNICODE__とか__MBCS__とか__、C99の__STDC_ISO10646__を宣言するのは勝手だが、
MS-Win32のMSBC用バイナリ for Win9x/Me とUNICODE用バイナリ for NT/2k/XP のように
互換性の無いものになる & サポートしないplatformがあることは覚悟しとけ。



189 名前:188 mailto:sage [03/05/01 16:27 ID:N64qTJQU]
補足、Win32の場合__UNICODE__と__MBCS__で
リンクされる関数が別になるだけまだまし。
__STDC_ISO10646__の場合は同一インタフェースになるからな。
どこでブっ壊れるか判ったもんじゃない。

まあNetBSDのsys/cdefs.h内の__RENAMEマクロのような仕組みを使うとか
ldに細工するとかで、別シンボルを呼び分ける仕組みがlibcに用意されれば
Win32並に安全にはなる。




190 名前:山崎渉 mailto:(^^) [03/05/22 02:04 ID:p4opmoqv]
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―

191 名前:login:Penguin [03/06/01 21:11 ID:Mv7aj8Tw]
Ruby-Gtk+-2には、Ruby-GTK+-1.2のときにあったCListは無いよね?
CListと同じことを別の方法でするには、なんかいい方法ありますか?

192 名前:動画直リン [03/06/01 21:13 ID:+qVihZQ+]
homepage.mac.com/hitomi18/

193 名前:160 mailto:sage [03/06/01 22:02 ID:JkScEVpY]
>>191
Gtk2ではCListのかわりに
GtkTreeViewを使うことになっている。

C言語での話になるが、GtkListStoreをつくってそのなかに
表のデータをほうりこんでやり、
別にGtkTreeViewヴィジェットを作成して
gtk_tree_view_column_new_with_attributesで表示上の列と
データ上の列を対応づけ(アトリビュートの"text"に何列目の値を
表示するかを指定する)
gtk_tree_view_set_modelで、先に用意したGtkTreeViewrと
GtkListStoreを対応づける

おそらくRuby-Gtkでも同じようにできると思われ

194 名前:login:Penguin mailto:sage [03/06/02 05:57 ID:l0w8IOx1]
で、何作るの?
何つかってもそれは個人の自由だから良いが
目的があるのと無いのでは習得速度に雲泥の差がある。
最低限のライブラリの使い方を覚えたらさっさgladeでも使って
組んだ方が良いよ。
目的が無いとすぐ飽きるし飽きると忘れる、結局無駄な時間を過ごした事になる。
ある程度長い時間使ってないとモノにならない。
見た目にしろlibgtk自体いしろ結局”ガワ”でしかないのだから
ちゃんと日本語化されてるなら後は中身に心血を注ごう。

cだからめんどくさそうとか言う奴はgtk,gdk,glibのチュートリアルをだいたい
どんな事ができるかざっと眺める位にして後はgladeつかえ。


195 名前:191 mailto:sage [03/06/02 20:31 ID:H7/+JInF]
>>193=160
Ruby-GNOME2のソースについてたサンプルに、GtkTreeViewもありました。
どうやら、説明してくれた通りのようです。
ありがとうございました

>>194
MPlayerのフロントエンドを作ろうかと...
飽きないように、まったり作ろうと思ってます。

glade使ってますよ。便利ですね、あれは。
頭の中でゴチャゴチャ考えるのがいかに非効率的かわかります(^^;

196 名前:login:Penguin mailto:sage [03/06/05 00:27 ID:NeWdmQAa]
>>195
mplayerのフロントエンドなら2つ3つあるみたいだけどそれとどういう差別化をす
んの?
俺としてはフロントエンドによる速度低下を使い勝手が上回るような奴を希望。

197 名前:login:Penguin mailto:sage [03/06/08 11:46 ID:h1K8ATYr]
GTKで何か作りたいけどWinみたいにGUI主体じゃないから
作りたいものがない・・・
こういうツールが欲しいとかなんかないですか?

198 名前:login:Penguin mailto:sage [03/06/08 12:18 ID:NVYlBdnZ]
>>197
家計簿ほすぃ

199 名前:197 mailto:sage [03/06/08 17:11 ID:h1K8ATYr]
家計簿ですか、、Linuxで家計簿付ける人っているのだろうか。(^^;
需要があるかどうかわかりませんが勉強かねてそれらしいの作ってみます。



200 名前:login:Penguin mailto:sage [03/06/08 18:19 ID:TUPg9XW4]
>>199
>>198じゃないけどモノによっては期待する。
今OOo使って家計簿つけてるんだけど、なんかイマイチ。
機能を絞り込んだ「一人暮らしの男のための家計簿」みたいな感じだと俺は使うと思う。

201 名前:197 mailto:sage [03/06/08 21:38 ID:NVYlBdnZ]
>>199
>>200の「一人暮らしの男のための家計簿」ようなやつがほしい。

#さらに完成度が高まると、主婦層を狙ったキラーアプリにもなる!






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

前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