**********************************************
  apdtool
  Copyright (c) 2020 Azel

  http://azsky2.html.xdomain.jp/
  <azelpg@gmail.com>
**********************************************

MIT ライセンスです。
詳しくは LICENSE ファイルをご覧ください。


=====================================
 * 概要
=====================================

APD(AzPaineter)/ADW(AzDrawing) ファイルのツールです。


- APD v1-v3、ADW v1-v2 のファイルを読み込めます。

- レイヤを合成した一枚絵画像を PNG/BMP/PSD に一括変換できます。

- 各レイヤのイメージを PNG/BMP/PSD で抽出できます。

- A16bit/A1bit レイヤのレイヤテクスチャを、
  テクスチャ画像のパスを元に指定色のレイヤに変換できます。
  (トーン画像をグレイスケールに変換できます)


※レイヤテクスチャが使用されている場合、別途テクスチャ画像が必要になります。
  その場合、オプションで、テクスチャ画像のディレクトリを指定してください。


=====================================
 * 動作環境
=====================================

unix 系OS

(以下で動作確認済み)
Linux/macOS/FreeBSD


=====================================
 * コンパイルに必要なもの
=====================================

C コンパイラ、make、各種ライブラリの開発用ファイルが必要です。

必要なライブラリ: zlib libpng


--- 各OS/ディストリビューションでの必要なパッケージ ---

(Debian/Ubuntu 系)

  gcc or clang, make zlib1g-dev libpng-dev

(RedHat 系)

  gcc or clang, make zlib-devel libpng-devel

(Arch Linux)

  gcc or clang, make libpng

(macOS)

  xcode libpng

(FreeBSD)

  gmake png
  [!] BSD make には非対応


=====================================
 * コンパイル・インストール
=====================================

ソースアーカイブの展開後、展開されたディレクトリ内に移動して、以下を実行してください。

$ ./configure
$ make
$ sudo make install

[!] FreeBSD の場合、make の代わりに gmake を実行。
[!] macOS の場合、make install 時にルート権限は不要。


--- 解説 ---

configure スクリプトで、実行環境に合わせた各種ファイルを生成し、
make コマンドで、Makefile を使って実行ファイルを生成します。
その後、make install で、各ファイルをインストールします。

デフォルトで '/usr/local/' 以下にインストールされます。


--- インストールされるファイル ---

PREFIX/bin に、実行ファイル (apdtool)。
PREFIX/doc/apdtool に、ドキュメントファイル。


--- configure オプション ---

./configure 時にオプションを指定できます。
詳しくは ./configure --help で、ヘルプを表示してください。

[例] /usr にインストール
$ ./configure --prefix=/usr


=====================================
 * コマンドラインオプション
=====================================

$ apdtool [opt] <FILE...>


入力ファイル (APD/ADW) は複数指定できます。

主に、「合成画像の出力」「レイヤ出力」「レイヤ情報表示」の3通りの処理タイプが存在し、
デフォルトで、合成画像の出力を行います。
複数の処理タイプが指定された場合、最後に指定されたものが実行されます。


-o,--output=[DIR or FILENAME]

    画像の出力ディレクトリ、または出力ファイル名を指定します。
    デフォルトでカレントディレクトリに出力します。

    <合成画像>
    既存のディレクトリパス名でない場合は、出力ファイル名として扱います。
    出力ファイル名指定の場合、その拡張子から出力フォーマットを判定します。
    ディレクトリ指定の場合、出力ファイル名は「入力ファイル名 + 拡張子」となります。

    <レイヤ出力>
    常にディレクトリ指定となります。

-i,--info

    レイヤの情報を出力します。
    画像の出力などは行われません。

-f,--format=[TYPE]

    合成画像/レイヤ画像の出力フォーマットを指定します。
    デフォルト:png

    png/bmp/psd


▼ 合成画像

-G,--gray

    合成画像時、グレイスケールで出力します。
    PNG/PSD の場合、8bit グレイスケールカラーとなります。

-M,--mono

    合成画像時、モノクロ2階調で出力します。
    PNG/PSD の場合、1bit グレイスケールカラーとなります。


▼ レイヤ出力

-l,--layer

    レイヤ画像を RGBA カラーで出力します。
    デフォルトで、フォルダを除く全レイヤが対象となります。

    出力ファイル名は、デフォルトで「入力ファイル名 + '_' + 連番 + 拡張子」となります。

-p,--layer-prefix=[PREFIX]

    レイヤ出力時、出力ファイル名の接頭語を指定します。
    ※出力ディレクトリは --output で指定してください。

    出力ファイル名は、「PREFIX + 連番 + 拡張子」となります。
    「-p ""」で空文字列を指定すると、連番のみにすることもできます。

-n,--layer-no=[n,n1-n2,...]

    レイヤ出力時、対象とするレイヤのインデックス番号を複数指定します。

    番号は 0 から始まり、"0,1,2" というように単体指定したり、
    "0-5,10-20" というように、範囲で指定することもできます。
    各値は ',' で区切ります。

    レイヤのインデックス番号は、--info で確認できます。

-z,--layer-no-tex

    レイヤ出力時、イメージにレイヤテクスチャを適用しません。


▼ レイヤテクスチャ

-s,--texpath-sys=[PATH]

    システムのテクスチャ画像のディレクトリパスを指定します。
    デフォルトでカレントディレクトリとなります。

-u,--texpath-user=[PATH]

    ユーザーのテクスチャ画像のディレクトリパスを指定します。
    デフォルトは「~/.azpainter/texture」となります。

-T,--texlist=[FILENAME]

    すべての入力ファイルのレイヤテクスチャのパスを、テキストファイルに出力します。
    FILENAME は、出力するテキストファイル名です。
    画像の出力は行われません。

-t,--texcol=[FILENAME]

    (合成画像/レイヤ出力時)
    FILENAME のテキストファイルから、テクスチャのパスと色情報を読み込みます。
    A16bit/A1bit のレイヤで使用されているレイヤテクスチャが、そのパスと一致した場合、
    レイヤの線の色を指定色に置き換えて、テクスチャを無効化します。

    トーン画像をグレイスケール色に変換したい場合に使います。

    テキスト内では、行頭が ';' の場合はコメントとして扱われます。
    1行に、テクスチャパスと、置き換える色情報を記述します。
    色の指定は2通りあります。

    path/file@[0-100] : 濃度指定(%)。0=白、100=黒
    path/file#[0-255] : 8bit 色値。0=黒、255=白

    例: tone/60_20.png@20 (20%濃度)

    行末が半角数字で、末尾から4文字以内に @ か # がある場合のみ有効となり、
    それ以外の行は無視されます (色置換は行われない)。

    [※注意点]
    置き換える対象のレイヤイメージが複数レイヤで重なっている場合、
    濃い濃度のテクスチャのレイヤが上から順番に配置されていないと、
    薄い色が濃い色の上に表示されてしまう場合があります。
    その場合は、元ファイルのレイヤの順番を入れ替えてください。

▼ ほか

-V,--version

    バージョン情報を表示します。

-h,--help

    ヘルプを表示します。
