2009年09月02日

Brush Dynamics

Google Summer of Code 2009のBrush DynamicsブランチのGimpを動かしてみました。

gimp-dynamicsはGoogle Summer of Code 2009のプロジェクトの中の一つです。
コンパイルして動かしてみた感じでは、このようになりました。

こちらは、普通のブラシツールのツールオプションです。
ツールオプションからブラシの動的変化(ja.po翻訳だとブラシ感度の調整)が消えて、シンプルになっているのが分かります。
gimp-dynamics-brush.png

それがどこに行ったのかというと、別の独立したダイアログになっています。
それに加えて、他の動的変化するパラメータも追加されています。何が変わっているのかは自分で比較してみるほうがいいでしょう。
gimp-dynamics-dynamics.png

このBrush Dynamicsですが、Wikiのほうに仕様が書いてあります。

Paint dynamics specification (gui.gimp.org)

まだWikiに書いてあるようなことまではできなくて、その前段階なのでしょうか。
プリセットを使えるようになるのはいいことだと思います。

この改良はGIMP-2.8には実装が間に合わないと思います。しかし、この改良によってブラシでの表現力がさらに向上しそうなので、今後の改良を見守りたいところです。



● コンパイル方法


まずは現状確認です。現在ローカルにあるブランチを調べました。ローカルブランチは、初期状態だとmasterだけがあります。
そして次にリモートに存在するブランチを調べています。

$ git branch
* master

$ git branch -r
〜〜〜〜〜省略〜〜〜〜〜
origin/soc-2006-healing-brush
origin/soc-2006-perspective-clone
origin/soc-2006-vector-layers
origin/soc-2008-python
origin/soc-2008-tagging
origin/soc-2008-text
origin/soc-2009-dynamics
origin/soc-2009-siox-drb
origin/tiny-fu-1-0
origin/weskaggs


どうやらorigin/soc-2009-dynamicsがお目当てのブランチだと予想できます。origin/soc-2009-siox-drbのほうは、GSoCのSIOXの機能拡張です。

ローカルにsoc-2009-dynamicsブランチを作成してリモートのorigin/soc-2009-dynamicsブランチを入れるために
$ git checkout -b soc-2009-dynamics origin/soc-2009-dynamics
とやれば良いはずなのに、overwrittenどうのこうのとエラーメッセージが出て対処法が分からなかったために次のようにしました。
ここの部分は何がどうなっていてどうすればよかったのか分からないので、もし知っていたら教えてください。

$ git checkout -m -b soc-2009-dynamics origin/soc-2009-dynamics
M app/paint/gimpdynamicsoptions.c
M app/widgets/gimpdynamicseditor.c
Branch soc-2009-dynamics set up to track remote branch refs/remotes/origin/soc-2009-dynamics.
Switched to a new branch 'soc-2009-dynamics'

$ git branch
master
* soc-2009-dynamics


soc-2009-dynamicsブランチができたようなのでソースを取得してみようとすると、コンフリクト中だと警告を受けました。
よってローカルの状態をdynamicsの開発を開始する直前の状態に戻してやります。git logを見てみると、7/27のコミットがそうなのでその直前の7/26のコミットした状態に戻してやっています。
開発直前の状態に戻してから、それ以降のdynamicsの変更を反映させています。

$ git pull
You are in the middle of a conflicted merge.

$ git log

commit 99e3d8891c4eeef234cfe4df164b4ad56e6c2a64
Author: zhenfeng zhao
Date: Mon Jul 27 14:22:11 2009 -0300

Two files added as working on gimp dynamics objects.

new file: gimpdynamicsoptions.c
new file: gimpdynamicsoptions.h

commit 6a574ab1929ca82e30bd084bc54309e6fa37c9c6
Author: Michael Natterer
Date: Sun Jul 26 21:05:53 2009 +0200

Bug 589783 – Finnish translation typo


$ git reset --hard 6a574ab1929ca82e30bd084bc54309e6fa37c9c6
HEAD is now at 6a574ab Bug 589783 – Finnish translation typo

$ git pull
Updating 6a574ab..30382a5
Fast forward
app/actions/Makefile.am | 6 +-
app/actions/actions.c | 4 +
app/actions/dialogs-actions.c | 8 +
app/actions/dynamics-editor-actions.c | 98 ++++
app/actions/dynamics-editor-actions.h | 27 +
app/dialogs/dialogs-constructors.c | 11 +
app/dialogs/dialogs-constructors.h | 3 +
app/dialogs/dialogs.c | 4 +
app/menus/menus.c | 14 +-
app/menus/plug-in-menus.c | 7 +
app/paint/Makefile.am | 2 +
app/paint/gimpdynamicsoptions.c | 1031 +++++++++++++++++++++++++++++++++
app/paint/gimpdynamicsoptions.h | 103 ++++
app/paint/paint-types.h | 2 +
app/pdb/makefile.msc | 1 +
app/widgets/Makefile.am | 2 +
app/widgets/gimpdynamicseditor.c | 374 +++----------
app/widgets/gimpdynamicseditor.h | 12 +-
app/widgets/gimphelp-ids.h | 2 +
app/widgets/widgets-types.h | 2 +-
devel-docs/app/app-sections.txt | 16 +
etc/ps-menurc | 1 +
libgimpwidgets/gimpstock.h | 1 +
menus/Makefile.am | 1 +
menus/dialogs-menuitems.xml | 1 +
menus/dynamics-editor-menu.xml | 8 +
menus/image-menu.xml.in | 7 +
27 files changed, 1442 insertions(+), 306 deletions(-)
create mode 100644 app/actions/dynamics-editor-actions.c
create mode 100644 app/actions/dynamics-editor-actions.h
create mode 100644 app/paint/gimpdynamicsoptions.c
create mode 100644 app/paint/gimpdynamicsoptions.h
create mode 100644 menus/dynamics-editor-menu.xml


この後はいつものようにコンパイル&インストールでいいのですが、このままではmasterとsoc-2009-dynamicsの二つのブランチを取り扱うことになるので、コンパイル作業の場所を分離してやることにします。
まず前準備として、既にその場でconfigureやmakeを実行したことがあるのなら
$ make distclean
して、makeによって作られたファイルをすべて削除しておきましょう。

私は次のようなディレクトリ構成にしておきました。このあたりの構成は自分のお好みで。

src/git/gimp ← gitで取得したソースがあるディレクトリ
src/git/gimp-master ← masterブランチの作業ディレクトリ
src/git/gimp-dyanmics ← soc-2009-dynamicsブランチの作業ディレクトリ


$ cd ..
$ mkdir gimp-master
$ mkdir gimp-dynamics
$ cd gimp-dynamics
$ ../gimp/autogen.sh --prefix=/usr/local/gimp-dyanmics CFLAGS=-O3


あとはいつものようにコンパイルです。src/git/gimp-dynamicsの作業ディレクトリの中にMakefileや*.oファイルが作成され、src/git/gimpの方にはそれらのファイルが無く、コンパイルで生成されるファイル群とは分離できているはずです。
ブランチの変更は、src/git/gimp に移動しておいてから次のようにします。
$ git checkout master
Switched to branch 'master'

$ git branch
* master
soc-2009-dynamics


soc-2009-dynamicsからmasterブランチへと移動しているのが分かります。
cheackoutでブランチを移動、branchで現在どのブランチにセットされているのかを確認、です。
ブランチを変更してから、git pullでそのブランチのソースを取得する、という流れになります。
posted by いっちー at 23:32| Comment(0) | Futuer Gimp | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。