# pdic2c.pl

## 説明

`pdic2c.pl` は、図形認識サンプルデモcharacterRecognition-2 を実行して得られたテキスト形式のパターンデータを、プログラムで直接使える C 言語のソースファイル形式に変換するサンプルツールです。

## 使用方法

### 起動コマンド

`% perl pdic2c.pl [-ch] [-C OUTPUT_SOURCE] [-H OUTPUT_HEADER] [-i INCLUDE_FILE] [-p PREFIX] NORMALIZE_SIZE [PATTERN_FILES]...`

`PATTERN_FILES` で指定されたファイルに記述されているテキストデータを見本図形の辞書データとして解釈し、 C 言語のソースファイルとヘッダファイルを連続して標準出力に出力します。`NORMALIZE_SIZE` には出力データの正規化サイズを指定します。 `PATTERN_FILES` は省略可能で、省略時には標準入力から読まれます。

オプションとして `-c, -h` のどちらかが指定されると、ソースファイル、ヘッダファイルのいずれかのみを出力します。無指定の場合は両者共に出力されます。 また、`-C, -H` の各オプションを指定すると、標準出力の代わりに、出力先のソースファイル名、ヘッダファイル名を指定することができます。

ソースファイルの中にはヘッダファイルを #include するコードが含まれますが、このパス名を指定するのが `-i` オプションです。 `-i` オプションが無かった場合には、`-H` オプションで指定されたパス名のファイル名部分のみが使用されます。 何も指定されていなかった場合は、"patternDict.h" が使用されます。

`-p` オプションで生成するソースファイルの中の識別子に付けるプレフィックスを指定することが可能です。

### 図形辞書テキストデータ書式

`pdic2c.pl` は、テキストデータを以下の書式のもとに1行1項目として解釈します。

      line   ::= "PatternName" Kind Correction NormalizeSize '|' stroke+
      stroke ::= point+ '|'
      point  ::= '(' X ',' Y ')'

書式 | 意味 | 詳細
--- | --- | ---
`"Pattern Name"` | 項目名称 | この項目の表す図形の名称です。名称の出現順に `code` 値が 0 から順番に割り振られ、`code` と名称の対応関係が `PatternName` 配列として出力されます。
`Kind` | 文字種 | `PRCPrototypeEntry` の `kind` に出力される値です。
`Correction` | 補正値 | `PRCPrototypeEntry` の `correction` に出力される値です。
`NormalizeSize` | 正規化サイズ | この項目は左上が`(0, 0)`で右下が`(NormalizeSize-1, NormalizeSize-1)`であるようなバウンディングボックスを想定した値であることを表します。`pdic2c.pl` の引数と異なる場合は、引数にサイズを合わせるようにこの項目の続く座標値を拡縮させてから出力します。
`'|'` | 画の切れ目 | 縦棒のところで、一回ペンが上がって画が切れたことを表します。
`(X, Y)` | 座標 | パターンの座標を表します。スクリーン座標とあわせるために、左上が `(0, 0)` であることに気をつけてください。
# ... | コメント | 明示的なコメント行と解釈し、なにも行わずに読み捨てます。

このツールの利用シナリオとして、まず図形認識サンプルデモ `characterRecognition-2` で Y ボタンを押したときにデバッグ出力に出力されるパターンデータを切り貼りして、テキスト形式の図形見本データを作成します。そのテキストファイルを `pdic2c.pl` に通すことにより、図形認識 API で使用する図形見本一覧のソースコードを生成することができます。

標準出力に全て出力した場合は、前半が図形一覧を利用する他のソースコードのためのヘッダファイル、後半が具体的なデータが入った ソースファイルとなっています。適宜分割して書き換えながら使用してください。

## 場所

`$TwlSDK/tools/bin/pdic2c.pl`

## 参照

`図形認識サンプルデモ characterRecognition-2`

## 履歴

2005/10/04 引数の追加による追記
2004/10/28 regularize を normalize に変更
2004/06/30 初版