英語とプログラミング

プログラミングを勉強しているとき、
途中で英語の説明になっていることがあります
フリーソフト、Linuxをつかうときに
特に多いのです
ただ、英語が読めるようになると、かなり上達すると思われます
新しい機能のほとんどが英語での説明になることがありますし
海外のニュースもよめるようになるので
かなり便利になります
海外旅行などにいくときにも非常に役立つのでは?
そんなわけで今回は英語の勉強をするときに参考に成りそうな
サイトを発見しましたので紹介です
Web/DB プログラミング徹底解説
というページで
プログラミング系英語例文集
を発見しました

GTK+ プログラミング

[PukiWiki] GTK/GNOMEによるGUIプログラミング
以前公開されていたPDFファイルが、改訂され
書籍販売されるようです

この本で勉強して、アプリケーションをつくれるように
なろうと思っています
ちなみに、Windows のアプリケーションであって
Linux にないものをつくれないかな?
と思って調べてみました
WindowsプログラマのためのLinuxプログラミング ~GTK+-2.0とWindowsAPIの比較~
というページが見つかりました
世の中、オープンソースによって、
どんどん開発環境がよくなっているような気がします
スキルアップして
いろいろできるようになると、楽しくなりそうです

プログラミングの勉強

今日は、プログラミングの勉強について 検索してみました
google で
プログラミング 英語 勉強
と検索してみると
プログラミング初心者入門講座
をみつけました
質問等を掲示板などで書き込んでいると
りんした先が英語のサイトということがよくあります
とくに、Linux の情報関連
エラーメッセージを検索すると、ほとんど英語です
でも、英語でかいてあるから意味不明! で終わらず
読めるようになれば、かなりのスキルアップになりそうです
がんばって英語のサイトを読めるようになりたいものです
現在、まぐまぐでメルマガを使って勉強中

ウィジェット

スクロール機能つきウィンドウ
GtkScrolledWindow
アライメントウィジェット
GtkAligment
コンテナウィジェットでウィジェット作成時に
バックするウィジェットの配置位置と、ウィジェットの拡大率を指定する
スピンボタンウィジェット
GtkSpinButton
gtk_scrolled_window_new()
スクロールウィンドウを作成
gtk_scrolled_window_set_policy()
スクロールバーの表示設定をする
スクロールバーの表示設定は以下から選択
GTK_POLICY_ALWAYS
常にスクロールバーを表示
GTK_POLICY_AUTOMATIC
子ウィジェットの大きさに応じて表示
GTK_POLICY_NEVER
表示しない
gtk_scrolled_window_set_shadow_type()
ウィンドウ内の装飾の設定をする
gtk_alignment_new()
GtkAlignmentウィジェットを作成
gtk_spin_button_new()
スピンボタンウィジェットを作成

GtkDrawingArea

gdk_pixbuf_new_from_file()
ウィンドウに表示するための画像をファイルから読み込む
gtk_widget_set_size_request()
ウィジェットの大きさを設定する
gdk_draw_pixbuf()
画像データを描画
第1引数 drawable
画像データを描画するドローアブルを指定
例:ソース5ー2ではGtkDrawingArea の windowsメンバをドローアブルに指定
第2引数 gc
指定せずNULLでもよい
第3、4引数
ドローアブルのどの座標から描画を開始するか指定
第5引数~第8引数
描画する画像の範囲(開始座標と幅、高さ)を指定
width,height に -1を指定すると、自動的に画面全体の幅、高さになる
gdk_window_set_back_pixmap()
画像データを GdkWindowの背景として設定
gdk_window_clear()
画像の再描画
gdk_pixbuf_render_pixmap_and_mask()
GdkPixbufデータから、ピックスマップと ビットマップを作成する
gdk_pixbuf_composite_color()
を使って透明部分にタイル柄を描画して
透明部分を演出
void gdk_pixbuf_comnposite_color(
const GdkPixbuf *src, //入力画像
GdkPixbuf *dest, //出力画像
int dest_x, //入力が像の描画を開始するx座標
int dest_y, //入力画像の描画を開始するy画像
int dest_width, //描画する幅
int dest_height, //描画する高さ
double offset_x, //入力が像のオフセットのx座標
double offset_y, //入力が像のオフセットのy画像
double scale_x, //入力が像のx方向の拡大率
double scale_y, //入力画像のy方向の拡大率
GdkInterpType interp_type, //画素数の内挿方法
int overall_alpha, //透明度の設定
int check_x, //チェッカーボードのオフセットのx座標
int check_y, //チェッカーボードのオフセットのy座標
int check_size, //チェッカーボードの大きさ
guint32 color1, //チェッカーボードの色1
guint32 color2); //チェッカーボードの色2

画像書き込み

gdk_pixbuf_save()
GdkPixbuf形式の画像データをファイルに保存
GdkPixbuf構造体からは
画像の大きさ プレーン数、画素値などの情報を取得できる
gdk_pixbuf_get_width
画像の幅をかえす

gdk_pixbuf_get_height

画像の高さをかえす
gdk_pixbuf_get_n_channels
画像のチャネル(プレーン)数をかえす
RGB画像=3
アルファチャネル=4
gdk_pixbuf_get_has_alpha
画像がアルファチャネルをもつかどうか調べる
アルファチャネルを持つ場合=TRUE
そうでないなら=FALSE
gdk_pixbuf_get_rowstride
画像の1行分のバイト数をかえす
gdk_pixbuf_get_pixels
画像データの先頭ポインタをかえす

画像ファイルの読み書き

GdkPixbuf
画像ファイルの読み書きなど
画像データの扱いを担当するらいぶらり
★画像の読み書き
gdk_pixbuf_new_from_file()
画像ファイルから画像データを読み込む
GdkPixbuf* gdk_pixbuf_new_from_file(

const char *filename,
GError **error);

★GError は以下の様に定義される
関数の引数に与えるときは、値をNULLに初期化してから与えること
typedef struct{
GQuark domain;
gint code;
gchar *message;
}GError;
gdk_pixbuf_new()
画像サイズなどを指定して GdkPixbuf構造体を生成
gdk_pixbuf_new_from_data()
画像データからGdkPixbuf構造体を生成
画像データは guchar型の1次元配列として与える

GdkPixbufDestroyNogify

画像データを開放する関数を与える

gdk_pixbuf_new_from_xpm_data()

XPMデータからGdkPixbuf構造体を生成

gdk_pixbuf_new_from_inline()

インラインデータからGdkPixbuf構造体を生成
GdkPixbuf* Gdk_pixbuf_new_from_inline(
gint data_length, //データの長さ(-1にすると全データを使用
const guint *data;
gboolean copy_pixels, //TRUEならデータをローカルにコピー
GError **error);
★インラインデータは gdk-pixbuf-csource というコマンドラインツールから作成できる

ピックスマップへの描画

gdk_window_set_back_pixmap()
ピックスマップの貼り付けをする
ピックスマップをウィンドウの背景として設定する関数
void gdk_window_set_back_pixmap(
GdkWindow *window, //貼り付けるウィンドウ
GdkPixmap *pixmap, //貼り付ける描画
gboolean parent_relative);

gdk_window_clear()

設定した背景でウィンドウを描画する
void gdk_window_clear(GdkWindow *window);
ピックスマップの描画は
gdk_draw_drawable()でもできる
void gdk_draw_drawable(
GdkDrawable *drawable,
GdkGC *gc,
gint xsrc,
gint ysrc,
gint xdest,
gint ydest,
gint width, //幅
gint height); //高さ