API
Author: Masahiro Sakai

# gimp拡張ライブラリ

## モジュール

- Gimp
- Gimp::PDB

## クラス

Gimpモジュールで定義されています。

- ObjectID (IDとして扱われるオブジェクトの基底クラス)
  - Image
  - Drawable
    - Layer
    - Channel
      - LayerMask
  - Parasite
  - Display
  - Selection
  - Boundary
  - Path
- Color
- Region
- PixelRegion
- Tile
- Parasite
- FilePath

## 例外

Gimp::PDBで定義されています。

- ErrorStatus
  - ExecutionError
  - CallingError
  - Cancel
  - PassThrough

## Gimp

### 定数

PLUG_IN_INFO
  プラグイン情報を表していて、GIMPに登録されるオブジェクト。特異メソッドとしてinit, quit, query, run(name, *args)を定義すると、それらがGIMPから呼び出されます。

#### features関係

MAJOR_VERSION
  -
MINOR_VERSION
  -
MICRO_VERSION
  -
VERSION
  文字列です
HAVE_PROCEDURAL_DB_GET_DATA_SIZE
  この機能が使えるときに定義されています。
HAVE_PARASITES
  この機能が使えるときに定義されています。
HAVE_RESOLUTION_INFO
  この機能が使えるときに定義されています。
HAVE_DESTROY_PARAMDEFS
  この機能が使えるときに定義されています。Rubyレベルでは関係ないです。
HAVE_FEATURES_1_1_5
  この機能が使えるときに定義されています。
HAVE_DEFAULT_DISPLAY
  この機能が使えるときに定義されています。
HAVE_PIXEL_RGNS_REGISTER2
  この機能が使えるときに定義されています。Rubyレベルでは関係ないです。
HAVE_NEW_ENUMS
  この機能が使えるときに定義されています。

#### 国際化関係

LOCALEDIR
  -
ENABLE_NLS
  -

#### limits関係

MIN_IMAGE_SIZE
  -
MAX_IMAGE_SIZE
  -
MIN_RESOLUTION
  -
MAX_RESOLUTION
  -
CHECK_SIZE
  -
CHECK_SIZE_SM
  -
CHECK_DARK
  -
CHECK_LIGHT
  -

### モジュール関数

#### 主なもの

plugin_quit
  libgimpのgimp_quitを呼び出して、プラグインを即座に終了する。quitだとPDBの提供するものと名前が衝突するため、名前が変更してある。
version
  -
major_version
  -
minor_version
  -
micro_version
  -
main
  -
plugin_quit
  -
default_display
  -
install_procedure
  -
install_temp_proc
  -
uninstall_temp_proc
  -
run_procedure
  -
gamma
  -
install_cmap
  -
use_xshm
  -
color_cube
  -
min_colors
  -
progname
  -

#### 色空間関係

rgb_to_hsv
  -
hsv_to_rgb
  -
rgb_to_hls
  -
hls_to_rgb
  -
rgb_to_l
  -
rgb_to_hsv_double
  -
hsv_to_rgb_double
  -
rgb_to_hsv4
  -
hsv_to_rgb4
  -
intensity(r, g, b)
  -

#### 環境情報

directory
  -
personal_rc_file
  -
data_directory
  -
sysconf_directory
  GIMP側のバグのため、現在のWin32版では使用できません。
gtkrc
  -

#### features関係

check_version(major, minor, micro)
  指定されたバージョン以上なら真、そうでなければ偽

#### 国際化関係

gettext
  -
init_locale
  -

#### ユーティリティ

strescape(source, exception = nil)
strecompress(source)

## FilePath

### インクルードしているモジュール

- Enumerable

### クラスメソッド

perse(path, max_paths, check = false)
  コンストラクタ

### メソッド

to_s
  -
to_a
  -
user_writable_dir
  -
each
  -
[]
  -

## PDB

PDBを顕すモジュール。(将来はただのオブジェクトにするかも)
Gimp::PDB.extension_guash(RUN_NONINTERACTIVE, "/usr/share/pixmaps/")
といった風に記述できます。

## Image

### クラスメソッド

new(width, height, type)
  -

## Layer

FloatingSelectionもこのクラスで扱います。フローティングセレクショッンは、gimp-floating-sel-to-layerでただのレイヤに変換できてしまうので、独立したクラスにし得ないためです。

### クラスメソッド

new(image, width, height, type, name[, opacity[, mode]])
new(image, name, width, height, type[, opacity[, mode]])
  引数の順番は、libgimpのものとPDBのものを両方サポートしており、文字列であるnameの位置で判別される。opacityとmodeの省略値は100とNORMAL_MODE

## Channel

### クラスメソッド

new(image, width, height, name, opacity, color)
new(image, name, width, height, opacity, color)
  引数の順番は、libgimpのものとPDBのものを両方サポートしており、文字列であるnameの位置で判別される。

# gimpui拡張ライブラリ

## モジュール

- Gimp::UI

## クラス

Gimp::UIモジュールで定義されている

- ChainButton < Gtk::Table
- ColorButton < Gtk::Button
- Pixmap < Gtk::Pixmap
- FileSelection < Gtk::Button
- PathEditor < Gtk::VBox
- SizeEntry < Gtk::Table
- UnitMenu < Gtk::OptionMenu

## モジュール関数

ウィジェットを作成するたぐいのものが多いですが、Gtkレベルでもクラスとして扱われていないので、そのままモジュール関数にしてあります。(強引にクラス化することも可能でしょうが、直接の親クラスはヘッダファイルには書かれていないし、privateなもんだと思ってるんで・・・)

export_image(image, drawable, format_name, capabilities)
  capabilitiesはEXPORT_CAN_HANDLE_RGB, EXPORT_CAN_HANDLE_GRAY, EXPORT_CAN_HANDLE_INDEXED, EXPORT_CAN_HANDLE_ALPHA, EXPORT_CAN_HANDLE_LAYERS, EXPORT_CAN_HANDLE_LAYERS_AS_ANIMATION, EXPORT_CAN_HANDLE_NEEDS_ALPHAのビット和です。返り値は、EXPORT_CANCEL, EXPORT_IGNORE, EXPORT_EXPORTのいずれかです。
help_enable_tooltips
  -
help_disable_tooltips
  -
context_help
  -
help_set_help_data(widget, tooltip, help_data)
  -
image_menu_new(constraint = nil, active_image = nil) {|image| ...}
  constraintはimageとdrawableを引数に取り、弾きたい場合にfalseを返すProcオブジェクトです。
drawable_menu_new(constraint = nil, active_drawable = nil) {|drawable| ...}
  -
layer_menu_new(constraint = nil, active_layer = nil) {|layer| ...}
  -
channel_menu_new(constraint = nil, active_channel = nil) {|channel| ...}
  -
brush_select_widget(dname, ibrush, opacity, spacing, paint_mode) {|name, opacity, spacing, paint_mode, width, height, mask_data, dialog_closing| ...}
  set_popup, close_popupの2つの特異メソッドを定義したウィジェットを返します。ブラシが変更されたときにブロックが呼ばれます。[BUG: mask_dataには常にnilが入っています]
pattern_select_widget(dname, ipattern) {|name, width, height, bpp, mask_data, dialog_closing| ...}
  set_popup, close_popupの2つの特異メソッドを定義したウィジェットを返します。パターンが変更されたときにブロックが呼ばれます。[BUG: mask_dataには常にnilが入っています]
gradient_select_widget(gname, igradient) {name, width, grad_data, dialog_closing| ...}
  set_popup, close_popupの2つの特異メソッドを定義したウィジェットを返します。グラディエントが変更されたときにブロックが呼ばれます。[BUG: dialog_dataには常にnilが入っています]
query_string_box(title, help_proc, help_data, message, initial, object, signal) {|value|...}
  文字列を入力させるためのダイアログを作って返します。ユーザーがOKを選択したときにブロックが呼び出されます。[BUG: help_procは無視されます]
query_int_box(title, help_proc, help_data, message, initial, lower, upper, object, signal) {|value|...}
  整数を入力させるためのダイアログを作って返します。ユーザーがOKを選択したときにブロックが呼び出されます。[BUG: help_procは無視されます]
query_double_box(title, help_proc, help_data, message, initial, lower, upper, digits, object, signal) {|value|...}
  実数を入力させるためのダイアログを作って返します。ユーザーがOKを選択したときにブロックが呼び出されます。[BUG: help_procは無視されます]
query_size_box(title, help_proc, help_data, message, initial, lower, upper, digits, unit, resolution, dot_for_dot, object, signal) {|size, unit|...}
  サイズを入力させるためのダイアログを作って返します。ユーザーがOKを選択したときにブロックが呼び出されます。[BUG: help_procは無視されます]
query_boolean_box(title, help_proc, help_data, eek, message, true_button, false_button, object, signal) {|value|...}
  論理値を入力させるためのダイアログを作って返します。ユーザーがボタンをクリックしたときにブロックが呼び出されます。[BUG: help_procは無視されます]
spin_button_new(value, lower, upper, step_increment, page_increment, page_size, climb_rate, digits)
  -
scale_entry_new(table, column, row, text, scale_usize, spinbutton_usize, value, lower, upper, step_increment, page_increment, digits, constrain, unconstrained_lower, unconstrained_upper, help_data)
  引数が多いので注意。label, scale, scale_adj, spinbutton, spinbutton_adjの5つの特異メソッドの定義されたウィジェットを返します。
random_seed_new(seed, use_time)
  spinbutton, spinbutton_adj, togglebutton, seed, use_timeの6つのメソッドの定義されたウィジェットを返します。
coordinates_new(unit, unit_format, menu_show_pixels, menu_show_percent, spinbutton_usize, update_policy, chainbutton_active, chain_constrains_ratio,
xlabel, x, xres, lower_boundary_x, upper_boundary_x, xsize_0, xsize_100,
y, yres, lower_boundary_y, upper_boundary_y, ysize_0, ysize_100)
  引数が多いので注意。chainbuttonという特異メソッドの定義されたウィジェットを返します。
mem_size_entry_new(adjustment)
  作成されたウィジェットには、部品を返すspinbutton, spinbutton_adj, optionmenuという三つの特異メソッドが定義されています。
pixmap_button_new(xpm_data, text)
  -
table_attach_aligned(table, column, row, label_text, xalign, yalign, widget, colspan, left_align)
  -

### ChainButton

#### 定数

TOP
  -
LEFT
  -
BUTTON
  -
RIGHT
  -

#### クラスメソッド

new([position])
  -

#### メソッド

position
  -
button
  -
line1
  -
line2
  -
pixmap
  -
broken
  -
broken_mask
  -
chain
  -
active
active=(state)
  -

### ColorButton

#### クラスメソッド

new(title, width, height, color)
  colorは3要素または4要素(α付き)の配列で、0〜255の整数と0〜1の実数のいずれかのみを要素に持ちます。

#### メソッド

update
  内部に保持されたデータが変更されたときに、更新します。Rubyレベルでは不要です。
color
color=(rhs)
  代入する際には、newに渡したcolorと同じ形式でなくてはなりません。
bpp
  -
double?
  色を実数で保持しているか?

#### シグナル

color_changed
  -