# module_pgd manual

v2.0 (mod:2 / cat:16 / func:50)

Top
func list
system
option
transform
index color
draw
info
icon/cursor

## はじめに

- 使い方

  このモジュールは Windows版のHSP3標準標準システム と A2D で使用できます。

  最も単純にpgdモデルを描画するコードは次の通りです。

        #include "module_pgd.hsp"
        v = $18001801,$E0300,$1,$200FF,$5C000402,$5C655C65,$A49AA465,$A49AA49A,$4655C9A,$3F
        pos 320,240
        pgd_Draw v, 0, 200, 200
        redraw 1

  画面に黒い四角形が表示されます。
  pgdモデルを変数 v に代入、pos で位置を指定し、描画命令の pgd_Draw を実行。
  このモジュールによる描画は redraw 1 で画面に反映されます。

  試しに v への代入を以下のものに書き換えて実行してみてください。

        v(0) = $40004001,$11B0300,$1,$B0B001FF,$2802FFB0,$0,$2000000,$70201
        v(8) = $68007200,$68007200,$6D007800,$6D007800,$6C007B00,$6C007D00,$6D008000,$6D008000
        v(16) = $68008600,$68008600,$68008600,$6D008700,$6F008700,$74008A00,$7E008C40,$7E007C00
        v(24) = $7E006BC0,$74006E00,$6F007100,$6D007100,$68007200,$68007200,$2020102,$80830000
        v(32) = $D5830073,$D57F0076,$807F0076,$2A7F0073,$2A830070,$80830070,$2010273,$79000002
        v(40) = $79007380,$750076D5,$750076D5,$75007380,$7900702A,$7900702A,$1027380,$402
        v(48) = $417E5277,$72843D79,$8AE871,$55900075,$F397A57A,$94E088,$D390008C,$3884890
        v(56) = $842C85,$967CA486,$C27E7E82,$7F627D,$27E5277,$50201,$86808AA4,$86808AA4
        v(64) = $89008C49,$89008C49,$89008C49,$84E9936A,$81379160,$791C8CE9,$798490CD,$78009300
        v(72) = $7466911A,$78F68933,$7F408E4D,$84A391AC,$86808AA4,$86808AA4,$4020102,$7C0000
        v(80) = $7B0077,$7A0079,$7A0078,$807A0079,$7B0079,$7C007A,$7D0078,$807E007A
        v(88) = $7E0079,$7E0079,$7D0078,$7C0079,$3F0477

  pgdモデルはどのように線を引きどのように塗るかというデータを数値化したものです。
  エディタで作成したpgdモデルはコード表示からコピーしたものをソースに直接埋め込むか、外部ファイルに出力したものを bload で変数に読み込みます。

  少し長いですがこちらを実行してみてください。
  アニメーションが再生されます。

        #include "module_pgd.hsp"
        v(0) = $40004002,$2B0300,$1010000,$10201,$0,$FF000000,$1,$B0B00000
        v(8) = $1FFB0,$0,$2000028,$93,$1000701,$0,$20000,$680072
        v(16) = $680072,$6D0078,$6D0078,$6C007B,$6C007D,$6D0080,$6D0080,$680086
        v(24) = $680086,$680086,$6D0087,$6F0087,$4074008A,$7E008C,$C07E007C,$7E006B
        v(32) = $74006E,$6F0071,$6D0071,$680072,$2680072,$103,$3000201,$0
        v(40) = $20000,$738083,$76D583,$76D57F,$73807F,$702A7F,$702A83,$80738083
        v(48) = $9896,$80830002,$D5830073,$D57F0076,$807F0076,$2A7F0073,$2A830077,$80830077
        v(56) = $312D0073,$20001,$738083,$76D583,$76D57F,$73807F,$702A7F,$702A83
        v(64) = $2738083,$173,$3000201,$0,$20000,$738079,$76D579,$76D575
        v(72) = $738075,$702A75,$702A79,$80738079,$9896,$80790002,$D5790073,$D5750076
        v(80) = $80750076,$2A750073,$2A790077,$80790077,$312D0073,$20001,$738079,$76D579
        v(88) = $76D575,$738075,$702A75,$702A79,$2738079,$1B7,$1000401,$0
        v(96) = $20000,$417E5277,$72843D79,$8AE871,$55900075,$F397A57A,$94E088,$D390008C
        v(104) = $3884890,$842C85,$967CA486,$C27E7E82,$7F627D,$27E5277,$293,$3000501
        v(112) = $0,$A4020600,$A486808A,$4986808A,$4989008C,$4989008C,$6A89008C,$6084E993
        v(120) = $E9813791,$CD791C8C,$798490,$1A780093,$33746691,$4D78F689,$AC7F408E,$A484A391
        v(128) = $A486808A,$86808A,$302625A,$808AA402,$808AA486,$8C4986,$8C4989,$8C4989
        v(136) = $3D928589,$A1902084,$948E697D,$798ACC78,$2A89EA75,$2B885E76,$B68BF378,$558E6278
        v(144) = $7D8FF57E,$808AA484,$808AA486,$F5E10086,$A4020005,$A486808A,$4986808A,$4989008C
        v(152) = $4989008C,$6A89008C,$6084E993,$E9813791,$CD791C8C,$798490,$1A780093,$33746691
        v(160) = $4D78F689,$AC7F408E,$A484A391,$A486808A,$286808A,$2D7,$1000401,$0
        v(168) = $20000,$77007C,$79007B,$78007A,$79007A,$79807A,$7A007B,$78007C
        v(176) = $7A007D,$79807E,$79007E,$78007E,$79007D,$477007C,$3F
        repeat -1
        	i++
        	await 16
        	redraw 0
        	rgbcolor $FFFFFF : boxf
        	pos 320,240
        	pgd_Draw v, double(i\120)/120, 200, 200
        	redraw 1
        loop

  アニメーションとして作成したpgdモデルは pgd_Draw に時間値(0.0~1.0)を与えて表示を変化させることができます。

  初期状態ではHSPのスクリーンやバッファを出力対象にしますが A2D のイメージに描画することもできます。

        #include "a2d.hsp"
        #include "module_pgd.hsp"
        v(0) = $80008001,$1A0300,$8D4D1603,$3A0C00FF,$D07CF4FF,$B67CF473,$102008D,$80000502
        v(8) = $80761E64,$80711E78,$807B1E7D,$80761E91,$80761E91,$80827591,$80827591,$8E7591
        v(16) = $96808A,$96807B,$8096806C,$808E7564,$80827564,$80827564,$80761E64,$4761E64
        v(24) = $7203,$1,$3202FF,$0,$1020000,$80000702,$806E8064,$806D0064
        v(32) = $6C0065,$6C0067,$6C0070,$6C0087,$806C008F,$806C0090,$806D0091,$806E8091
        v(40) = $80740091,$807B8091,$80800091,$8F0091,$96808A,$96807B,$8096806C,$808F0064
        v(48) = $80800064,$807B8064,$80740064,$26E8064,$40201,$71009180,$71009180,$71009834
        v(56) = $71009B7E,$71009B7E,$73809E00,$73809E00,$7D809E00,$80009B80,$80009180,$7C809180
        v(64) = $71009180,$71009180,$3F04
        pgd_RenderA2D
        alCreateImage 0, 128, 128
        pos 64,64
        pgd_Draw v, 0, 100, 100, M_PI/4
        alCreateImage 1, 128, 128
        pos 64,64
        pgd_Draw v, 0, 100, 100
        repeat 32
        	alCopyModeAlpha 0.01*rnd(100)
        	alCopyImageToScreen rnd(2), 0, rnd(640), rnd(480), 128, 128, 0, 0
        loop
        redraw 1

  pgd_RenderA2D で A2D のイメージを描画対象にします。
  pgd_RenderHSP で HSP のスクリーンやバッファを描画対象にします。
  どちらも描画命令を実行する際に選択されているイメージやバッファを自動判別します。

  その他オプションやトランスフォームなど様々な機能に関しては各サンプルを実行してみてください。

- 標準版とコンパクト版について

  - 標準版 module_pgd.hsp
    このモジュールの全機能が使えます。

  - コンパクト版 module_pgdc.hsp
    アニメーション、トランスフォーム、頂点配列取得を省略したバージョンです。
    コンパイル後のAXファイルサイズが小さくなります。
    ツール制作などでベクターアイコンやカーソルを使用したい場合に向いています。

- オプションについて

  オプション系の命令は様々な描画効果を与えます。
  標準オプション、レンダリングバッファ系、トランスフォーム系の3種類があります。

  - 標準オプション
    主にpgdモデル側の数値をいじります。
    他のオプションと競合することなく使用できます。

  - レンダリングバッファ系
    オプション(R)
    モジュール側で用意したバックバッファにレンダリングし、そのイメージを描画先に転送します。
    主にカラーマトリクス操作を挟みます。
    一部は処理負荷が大きく上がるので注意してください。
    いくつか併用できない組み合わせがあります。

  - トランスフォーム系
    オプション(T)
    描画するpgdモデルの頂点座標を操作して変化を与えます。
    これは最大4つまで組み合わせることができ、同じものも指定できます。
    設定順によって描画結果も変わります。
    トランスフォームの設定だけをリセットするには pgd_ResetTransform を使用してください。
    pgd_EnableTransform で有効/無効を切り替えることもできます。

    描画位置やサイズが大きく変化するため、オプション(R)とはほぼ併用不可となります。

- アイコンとカーソルについて

  pgdモデルからアイコンやカーソルを作成することができます。
  それぞれハンドルを返しますがモジュール側ではハンドルを管理しません。
  よって作成したアイコンやカーソルのハンドルは不要になったら削除する必要があります。
  削除用に pgd_DestroyIcon や pgd_DestroyCursor が用意されていますが、user32 の DestroyIcon や DestroyCursor でも削除できます。

- クリッピングについて

  クリッピングはあとに描画されるものに切り抜き効果を与えます。
  クリッピングの解除には pgd_ResetClip を使用してください。

  A2Dを使用する場合は alClipModeRect と alResetClipMode も同じ扱いです。

  注意点としてクリッピングに複数のグループを内包するpgdモデルを使用すると想定したクリッピングができない可能性があります。

  クリッピングには以下の定数を指定してください。

  - PGD_CLIP_AND 現在のクリッピング領域と AND 演算をする。
  - PGD_CLIP_OR 現在のクリッピング領域と OR 演算をする。
  - PGD_CLIP_XOR 現在のクリッピング領域と XOR 演算をする。
  - PGD_CLIP_DIFF 現在のクリッピング領域から取り除く。
  - PGD_CLIP_XDIFF PGD_CLIP_DIFFの逆。
  - PGD_CLIP_COPY 新しいクリッピング領域にする。

## 命令、関数リスト

category | funcName
--- | ---
システム | pgd_RenderHSP, pgd_RenderA2D, pgd_SetRenderMode,
オプション | pgd_ResetOption, pgd_AutoLineScaling, pgd_LineScaling, pgd_FixedFillColor, pgd_FixedLineColor, pgd_AlphaRate,
オプション(R) | pgd_AlphaBlend, pgd_AlphaRange, pgd_ColorInversion, pgd_ColorBalance, pgd_ColorSaturation, pgd_Gamma, pgd_RenderSize,
オプション 乱数 | pgd_Random, pgd_RandomX, pgd_RandomY,
オプション(T) | pgd_ResetTransform, pgd_EnableTransform, pgd_TransformRotate, pgd_TransformSphere, pgd_TransformSphereLens, pgd_TransformSphereLensEx, pgd_TransformLinearLens, pgd_TransformLinearLensEx, pgd_TransformTwist, pgd_TransformWave, pgd_TransformWaveEx, pgd_TransformFlap,
トランスフォーム補助 | pgd_TransformReady, pgd_Transform,
インデックスカラー | pgd_SetIndexColor, pgd_SetIndexColorv, pgd_GetIndexColor,
pgdモデル描画 | pgd_Draw, pgd_DrawStill, pgd_DrawAnimate,
pgdモデル情報取得 | pgd_GetArrayStill, pgd_GetArrayAnimate, pgd_GetFormat, pgd_GetViewX, pgd_GetViewY,
アイコンとカーソル | pgd_CreateIcon, pgd_CreateCursor, pgd_DestroyIcon, pgd_DestroyCursor,
その他 | pgd_CnvBin, pgd_ResetClip,

## module_pgd

- システム

  #### `pgd_RenderHSP` 描画出力先をHSPに設定する

        描画出力先をHSPのバッファに設定します。

  pgd_RenderA2D,

  #### `pgd_RenderA2D` 描画出力先をA2Dに設定する

        描画出力先をA2Dのイメージに設定します。

  pgd_RenderHSP,

  #### `pgd_SetRenderMode smoothing, pixeloffset` レンダリング品質の設定

  > `smoothing` スムージング (0=無し, 1=中品質, 2=高品質) (初期値 2)
  > `pixeloffset` ピクセルオフセット (0=無し, 1=Half) (初期値 1)

        描画出力時のスムージング（アンチエイリアス）とピクセルオフセットを設定します。
        エディタの描画設定と合わせてください。

- オプション

  #### `pgd_ResetOption` オプション設定をリセット

        オプション系の設定をリセットします。

  pgd_AutoLineScaling, pgd_LineScaling, pgd_FixedFillColor, pgd_FixedLineColor, pgd_AlphaRate, pgd_AlphaBlend, pgd_AlphaRange, pgd_ColorInversion, pgd_ColorBalance, pgd_ColorSaturation, pgd_Gamma, pgd_RenderSize, pgd_Random, pgd_RandomX, pgd_RandomY, pgd_ResetTransform, pgd_EnableTransform, pgd_TransformRotate, pgd_TransformSphere, pgd_TransformSphereLens, pgd_TransformSphereLensEx, pgd_TransformLinearLens, pgd_TransformLinearLensEx, pgd_TransformTwist, pgd_TransformWave, pgd_TransformWaveEx, pgd_TransformFlap,

  #### `pgd_AutoLineScaling flag` 線の自動スケーリング

  > `flag` 0=無効, 1=有効 (初期値 1)

        描画サイズに合わせた線の自動スケーリングを設定します。

  pgd_ResetOption,

  #### `pgd_LineScaling scale` 線の太さ倍率

  > `scale` 倍率 (初期値 1.0)

        線の太さの倍率を設定します。
        2.0にすれば2倍の太さになります。

  pgd_ResetOption,

  #### `pgd_FixedFillColor flag, color1, color2` 塗り色を固定色に設定

  > `flag` 0=無効, 1=有効 (初期値 0)
  > `color1` 色1
  > `color2` 色2

        塗り色を単色指定します。
        色1は単色、色2はグラデーション用です。
        色は $AARRGGBB で指定します。

  pgd_ResetOption,

  #### `pgd_FixedLineColor flag, color1, color2` 線の色を固定色に設定

  > `flag` 0=無効, 1=有効 (初期値 0)
  > `color1` 色1
  > `color2` 色2

        線の色を単色指定します。
        色1は単色、色2はグラデーション用です。
        色は $AARRGGBB で指定します。

  pgd_ResetOption,

  #### `pgd_AlphaRate alpha` 各色のアルファ値操作

  > `alpha` アルファ値の割合 (0~255) (初期値 255)

        塗りと線の色のアルファ値を変更します。
        pgd_AlphaBlend と似た効果です。
        例えば 128 を指定した場合、元のアルファ値 200 は約50％の 100 になります。
        これはレンダリングする際の色のアルファ値を変更するため、面や線が重なり合った部分が目立ちます。
        その代わりに処理負荷はほとんど上がりません。

  pgd_ResetOption, pgd_AlphaBlend,

- オプション(R)

  #### `pgd_AlphaBlend alpha` ブレンド率を設定

  > `alpha` ブレンド率 (0~255) (初期値 255)

        オプション(R)Alpha
        他の(R)Alpha系と併用できません。

        ブレンド率を設定します。
        pgd_AlphaRate と似た効果です。
        これはレンダリングバッファに描画し、画面に転送する際のカラーマトリクスでアルファ値を操作するため、自然な描画結果が得られます。

        ※この設定は処理負荷が少し上がります。

  pgd_ResetOption, pgd_AlphaRate,

  #### `pgd_AlphaRange min, max` アルファ範囲を設定

  > `min` 最小 (0~254) (初期値 0)
  > `max` 最大 (0~255) (初期値 255)

        オプション(R)Alpha
        他の(R)Alpha系と併用できません。

        出力時のα範囲を設定します。
        例えば min=64, max=128 に設定するとα値が64以下のピクセルは 0 で透明になり、
        128以上のピクセルは 255 で不透明になり、64～128の範囲に0～255の階調が当てはめられます。
        設定値の範囲は 0~255 ですが min は max より 1 小さい値が限界値です。
        min=0, max=255 に設定すると通常の出力になります。

        ※この設定は処理負荷が非常に高いため、リアルタイム描画には向きません。

  pgd_ResetOption,

  #### `pgd_ColorInversion inv` 色を反転

  > `inv` 反転値 (0.0~1.0) (初期値 0.0)

        オプション(R)Color
        他の(R)Color系と併用できません。

        色を反転します。
        1.0 で完全に反転します。

        ※この設定は処理負荷が非常に高いため、リアルタイム描画には向きません。

  pgd_ResetOption,

  #### `pgd_ColorBalance rr, gr, br` 各色成分の割合設定

  > `r` Rの割合 (初期値 1.0)
  > `g` Gの割合 (初期値 1.0)
  > `b` Bの割合 (初期値 1.0)

        オプション(R)Color

        RGBの割合を調整します。
        各成分の割合を 1.0 を基準に指定します。
        0.0 ならその成分は 0 になり、 2.0 なら2倍になります。
        pgd_ColorSaturation と併用できます。

        ※この設定は処理負荷が少し上がります。

  pgd_ResetOption, pgd_ColorSaturation,

  #### `pgd_ColorSaturation sat` 彩度を調整

  > `sat` 彩度 (0.0~) (初期値 1.0)

        オプション(R)Color

        彩度を調整します。
        1.0 を基準に、増やすと鮮やかに、減らすと色褪せ、0.0でグレースケールになります。
        pgd_ColorBalance と併用できます。

        ※この設定は処理負荷が非常に高いため、リアルタイム描画には向きません。

  pgd_ResetOption, pgd_ColorBalance,

  #### `pgd_Gamma gamma` ガンマ値を設定

  > `gamma` ガンマ値 (初期値 1.0)

        オプション(R)

        ガンマ値を設定します。
        基準は 1.0 です。

        ※この設定は処理負荷が少し上がります。

  pgd_ResetOption,

  #### `pgd_RenderSize wr, hr` レンダリングサイズを設定

  > `wr` 横幅の割合 (初期値 1.0)
  > `hr` 縦幅の割合 (初期値 1.0)

        オプション(R)

        レンダリングサイズを設定します。
        例えば 0.25 に設定すると 32x32 ピクセルで出力されるpgdモデルは 8x8 でバックバッファにレンダリングされ、
        それを4倍拡大して描画先に出力します。

        ※この設定は設定サイズが大きいほど処理負荷が上がります。

  pgd_ResetOption,

- オプション 乱数

  #### `pgd_Random value` 乱数を設定

  > `value` 乱数範囲(0~32767) (初期値 0)

        頂点座標を操作する乱数を設定します。

        例えば 5 を指定すると頂点の座標が -2~+2の範囲でランダムになります。
        これは X と Y の両方に同じ値を設定します。

  pgd_ResetOption, pgd_RandomX, pgd_RandomY,

  #### `pgd_RandomX value` 乱数Xを設定

  > `value` 乱数範囲(0~32767) (初期値 0)

        頂点座標を操作する乱数を設定します。

        例えば 5 を指定すると頂点の座標が -2~+2の範囲でランダムになります。

  pgd_ResetOption, pgd_RandomY, pgd_Random,

  #### `pgd_RandomY value` 乱数Yを設定

  > `value` 乱数範囲(0~32767) (初期値 0)

        頂点座標を操作する乱数を設定します。

        例えば 5 を指定すると頂点の座標が -2~+2の範囲でランダムになります。

  pgd_ResetOption, pgd_RandomX, pgd_Random,

- オプション(T)

  #### `pgd_ResetTransform` トランスフォーム設定をリセット

        トランスフォーム系の設定をリセットします。
        pgd_ResetOption でもリセットできますが、この命令はトランスフォーム系のみリセットします。

  pgd_ResetOption, pgd_EnableTransform, pgd_TransformRotate, pgd_TransformSphere, pgd_TransformSphereLens, pgd_TransformSphereLensEx, pgd_TransformLinearLens, pgd_TransformLinearLensEx, pgd_TransformTwist, pgd_TransformWave, pgd_TransformWaveEx, pgd_TransformFlap,

  #### `pgd_EnableTransform flag` トランスフォーム有効/無効化

  > `flag` 0=無効, 1=有効

        現在設定されているトランスフォームを一時的に有効/無効化します。

  pgd_ResetOption, pgd_ResetTransform, pgd_TransformRotate, pgd_TransformSphere, pgd_TransformSphereLens, pgd_TransformSphereLensEx, pgd_TransformLinearLens, pgd_TransformLinearLensEx, pgd_TransformTwist, pgd_TransformWave, pgd_TransformWaveEx, pgd_TransformFlap,

  #### `pgd_TransformRotate rad` 回転を設定

  > `rad` 回転角度 (単位ラジアン) (初期値 0.0)

        オプション(T)

        回転を設定します。

        各描画命令の回転角度指定と似ていますが、これは任意タイミングでの回転ができます。

        他のトランスフォームを使用する場合この回転を最初に指定すればモデル自体を回転できます。
        使用しないのであれば各描画命令の回転のほうが低コストです。

  pgd_ResetOption, pgd_ResetTransform, pgd_EnableTransform,

  #### `pgd_TransformSphere px, py, size, power` 球状変形を設定

  > `px` 基点位置X
  > `py` 基点位置Y
  > `size` 球の半径
  > `power` 変形係数

        オプション(T)

        球の形に変形させます。
        変形係数は 1.0 の時にほぼ完全な球形になります。
        0.5にすると半球になります。

  pgd_ResetOption, pgd_ResetTransform, pgd_EnableTransform,

  #### `pgd_TransformSphereLens px, py, start, end, power` 球状レンズ変形を設定

  > `px` 基点位置X
  > `py` 基点位置Y
  > `start` 開始距離
  > `end` 終了距離
  > `power` 変形係数

        オプション(T)

        指定位置から一定距離の範囲にレンズを通したような効果を与えます。
        分かりやすく言うと虫眼鏡のような効果になります。
        変形係数が 0.0 以上の場合は凹レンズ、以下の場合は凸レンズのような変形を行います。

  pgd_ResetOption, pgd_ResetTransform, pgd_EnableTransform, pgd_TransformSphereLensEx,

  #### `pgd_TransformSphereLensEx px, py, start, end, angle, powerx, powery` 球状レンズ変形を設定

  > `px` 基点位置X
  > `py` 基点位置Y
  > `start` 開始距離
  > `end` 終了距離
  > `angle` 角度
  > `powerx` 変形係数X
  > `powery` 変形係数Y

        オプション(T)

        pgd_TransformSphereLens の拡張版です。
        angle=0.0, powerx=powery の場合に pgd_TransformSphereLens と同じ効果になります。

  pgd_ResetOption, pgd_ResetTransform, pgd_EnableTransform, pgd_TransformSphereLens,

  #### `pgd_TransformLinearLens px, py, start, end, angle, power` 線形レンズ変形を設定

  > `px` 基点位置X
  > `py` 基点位置Y
  > `start` 開始距離
  > `end` 終了距離
  > `angle` 角度
  > `power` 変形係数

        オプション(T)

        基点位置を通る指定角度+90度の直線の指定範囲にレンズを通したような効果を与えます。
        分かりやすく言うと細長い棒状のレンズのような効果になります。
        変形係数が 0.0 以上の場合は凹レンズ、以下の場合は凸レンズのような変形を行います。

  pgd_ResetOption, pgd_ResetTransform, pgd_EnableTransform, pgd_TransformLinearLensEx,

  #### `pgd_TransformLinearLensEx px, py, start, end, angle, powerx, powery` 線形レンズ変形を設定

  > `px` 基点位置X
  > `py` 基点位置Y
  > `start` 開始距離
  > `end` 終了距離
  > `angle` 角度
  > `powerx` 変形係数
  > `powery` 変形係数

        オプション(T)

        pgd_TransformLinearLens の拡張版です。
        変形係数Yが 0.0 の場合は pgd_TransformLinearLens と同じ効果になります。

  pgd_ResetOption, pgd_ResetTransform, pgd_EnableTransform, pgd_TransformLinearLens,

  #### `pgd_TransformTwist px, py, size, angle` ねじりを設定

  > `px` 基点位置X
  > `py` 基点位置Y
  > `size` 半径
  > `angle` 最大ねじり角度 (単位ラジアン)

        オプション(T)

        基点位置から半径の範囲をねじります。
        ねじり角度は基点位置からの距離依存で、外側で 0 、中心で最大になります。

  pgd_ResetOption, pgd_ResetTransform, pgd_EnableTransform,

  #### `pgd_TransformWave sx, sy, xoffset, angle` 波を設定

  > `sx` 波の幅
  > `sy` 波の高さ
  > `xoffset` 波の幅のオフセット
  > `angle` 波の角度 (単位ラジアン)

        オプション(T)

        全体に波のようなうねりを与えます。
        波形は正弦波です。

  pgd_ResetOption, pgd_ResetTransform, pgd_EnableTransform, pgd_TransformWaveEx,

  #### `pgd_TransformWaveEx sx, sy, xoffset, angle, angle2` 波を設定

  > `sx` 波の幅
  > `sy` 波の高さ
  > `xoffset` 波の幅のオフセット
  > `angle` 波の角度 (単位ラジアン)
  > `angle2` 波の角度 (単位ラジアン)

        オプション(T)

        pgd_TransformWave の拡張版です。
        angle2 で波形に回転を与えることでより自然なうねりになります。

  pgd_ResetOption, pgd_ResetTransform, pgd_EnableTransform, pgd_TransformWave,

  #### `pgd_TransformFlap sx, sy, xoffset, angle, angle2, ax, ay, decay, prm` はためきを設定

  > `sx` 波の幅
  > `sy` 波の高さ
  > `xoffset` 波の幅のオフセット
  > `angle` 波の角度 (単位ラジアン)
  > `angle2` 波の角度 (単位ラジアン)
  > `ax` 固定基点X
  > `ay` 固定基点Y
  > `decay` 減衰距離
  > `prm` パラメータ

        オプション(T)

        pgd_TransformWave 系に近いものです。
        旗のはためきのような動きを再現します。
        ax,ay は動きを固定する位置の指定です。
        固定基点を0.0、減衰距離を1.0として距離で動きに減衰をかけます。（減衰距離以上は動きがより大きくなります）

        減衰距離はその絶対値を距離とするため正負どちらでも指定ができますが、正数を指定すると固定タイプが線形、負数を指定すると円形になります。
        線形の場合はパラメータを直線の角度（ラジアン）として扱い、円形の場合は円の半径として扱います。

  pgd_ResetOption, pgd_ResetTransform, pgd_EnableTransform,

- トランスフォーム補助

  #### `pgd_TransformReady` トランスフォームの準備

        現在のカレントポジションを基準に座標値トランスフォームの準備をします。

        これは pgd_Transform で座標値を変換する前に使用する命令です。
        pgd_Draw などで描画する場合は不要です。

        各トランスフォームを設定後、基準座標を pos 0,0 に設定し pgd_TransformReady を実行します。
        その後 pgd_Transform を使用します。

  pgd_Transform,

  #### `pgd_Transform vx, vy` 座標値をトランスフォーム

  > `vx` 変換する座標値Xを格納した変数
  > `vy` 変換する座標値Yを格納した変数

        座標値にトランスフォームを適用します。
        任意座標のトランスフォーム後の座標値が欲しい場合に使用します。
        vx, vy に変換後の座標値が入力されます。

        事前に pgd_TransformReady を使用してください。

  pgd_TransformReady,

- インデックスカラー

  #### `pgd_SetIndexColor index, color` インデックスカラーを設定

  > `index` 設定先インデックス (0~63)
  > `color` 設定する色

        任意のインデックスの色を設定します。
        インデックスは0~63番まで使用でき、それぞれに任意の色を設定できます。

        色は $AARRGGBB で指定します。

  pgd_SetIndexColorv, pgd_GetIndexColor,

  #### `pgd_SetIndexColorv array` インデックスカラーをまとめて設定

  > `array` 設定する色を格納した整数型配列変数

        インデックスの色を配列変数でまとめて設定します。
        例えば配列数が 5 の場合はインデックス0~4番まで設定されます。

        色は $AARRGGBB で指定します。

  pgd_SetIndexColor, pgd_GetIndexColor,

  #### `pgd_GetIndexColor( index)` インデックスカラーを取得

  > `index` インデックス

        任意のインデックスカラーの色を取得します。

  pgd_SetIndexColor, pgd_SetIndexColorv,

- pgdモデル描画

  #### `pgd_Draw pgd, Tval, sizeX, sizeY, rotate, clipFlag` pgdモデルを描画

  > `pgd` pgdモデルを格納した変数
  > `Tval` アニメーション再生位置 (0.0~1.0)
  > `sizeX` 出力サイズX
  > `sizeY` 出力サイズY
  > `rotate` 回転角度 (単位ラジアン)
  > `clipFlag` クリッピング (0~n)

        描画命令です。
        pgdモデルの形式を自動判別します。

        カレントポジションを中心に sizeX,sizeY の大きさで描画します。
        描画内容は redraw 1 で画面に反映されます。

        sizeX,sizeY はエディタで書き出した際の ビューサイズ をそのまま指定すると等倍になります。

        clipFlagに次の定数を指定するとクリッピング処理になりパス自体は描画されません。

        	PGD_CLIP_AND	現在のクリッピング領域と AND 演算をする。
        	PGD_CLIP_OR	現在のクリッピング領域と OR 演算をする。
        	PGD_CLIP_XOR	現在のクリッピング領域と XOR 演算をする。
        	PGD_CLIP_DIFF	現在のクリッピング領域から取り除く。
        	PGD_CLIP_XDIFF	PGD_CLIP_DIFFの逆
        	PGD_CLIP_COPY	新しいクリッピング領域にする。

  pgd_DrawStill, pgd_DrawAnimate,

  #### `pgd_DrawStill pgd, sizeX, sizeY, rotate, clipFlag` 静画pgdモデルを描画

  > `pgd` 静画形式のpgdモデルを格納した変数
  > `sizeX` 出力サイズX
  > `sizeY` 出力サイズY
  > `rotate` 回転角度 (単位ラジアン)
  > `clipFlag` クリッピング (0~n)

        静画形式用の描画命令です。
        カレントポジションを中心に sizeX,sizeY の大きさで描画します。
        描画内容は redraw 1 で画面に反映されます。

        sizeX,sizeY はエディタで書き出した際の ビューサイズ をそのまま指定すると等倍になります。

        clipFlagに次の定数を指定するとクリッピング処理になりパス自体は描画されません。

        	PGD_CLIP_AND	現在のクリッピング領域と AND 演算をする。
        	PGD_CLIP_OR	現在のクリッピング領域と OR 演算をする。
        	PGD_CLIP_XOR	現在のクリッピング領域と XOR 演算をする。
        	PGD_CLIP_DIFF	現在のクリッピング領域から取り除く。
        	PGD_CLIP_XDIFF	PGD_CLIP_DIFFの逆。
        	PGD_CLIP_COPY	新しいクリッピング領域にする。

  pgd_Draw, pgd_DrawAnimate,

  #### `pgd_DrawAnimate pgd, Tval, sizeX, sizeY, rotate, clipFlag` 動画pgdモデルを描画

  > `pgd` 動画形式のpgdモデルを格納した変数
  > `Tval` アニメーション再生位置 (0.0~1.0)
  > `sizeX` 出力サイズX
  > `sizeY` 出力サイズY
  > `rotate` 回転角度 (単位ラジアン)
  > `clipFlag` クリッピング (0~n)

        動画形式用の描画命令です。
        カレントポジションを中心に sizeX,sizeY の大きさで描画します。
        描画内容は redraw 1 で画面に反映されます。

        Tval は再生位置を 0.0~1.0 の範囲で指定します。

        sizeX,sizeY はエディタで書き出した際の ビューサイズ をそのまま指定すると等倍になります。

        clipFlagに次の定数を指定するとクリッピング処理になりパス自体は描画されません。

        	PGD_CLIP_AND	現在のクリッピング領域と AND 演算をする。
        	PGD_CLIP_OR	現在のクリッピング領域と OR 演算をする。
        	PGD_CLIP_XOR	現在のクリッピング領域と XOR 演算をする。
        	PGD_CLIP_DIFF	現在のクリッピング領域から取り除く。
        	PGD_CLIP_XDIFF	PGD_CLIP_DIFFの逆。
        	PGD_CLIP_COPY	新しいクリッピング領域にする。

  pgd_Draw, pgd_DrawStill,

- pgdモデル情報取得

  #### `pgd_GetArrayStill retData, retNum, retFmt, pgd, sizeX, sizeY, rotate` 頂点データを取得

  > `retData` 頂点データを格納する実数型配列変数
  > `retNum` 各パスの頂点数を格納する整数型配列変数
  > `retFmt` 各パスのフォーマットを格納する整数型配列変数
  > `pgd` 静画形式のpgdモデルを格納した変数
  > `sizeX` 出力サイズX
  > `sizeY` 出力サイズY
  > `rotate` 回転角度 (単位ラジアン)

        静画形式の頂点配列取得命令です。

        retData は x1, y1, x2, y2, x3.... という具合に頂点座標が連続します。
        retNum は各パスの頂点数が代入されます。
        retFmt は各パスのフォーマットが代入されます。（パスごとにフォーマットは固定になります）
        stat にパスの数を返します。
        これは retNum,retFmt の有効配列長です。

        パスのフォーマットは次の通りです。

        	0	直線
        		直線は頂点(x1,y1)の連続になり、retNum*2の配列数になります。
        		座標は全て0,0 を原点とした絶対座標です。

        	1	ベジェ曲線
        		ベジェ曲線は最初に始点(x1,y1)を取り(apx1,apy1, apx2,apy2, x2,y2)が連続します。
        		データ数は retNum*6+2 の配列数になります。
        		座標は全て0,0 を原点とした絶対座標です。

        例
        フォーマットが 0,0 で retNum が 4,6 だった場合、パス1が4*2個、パス2が6*2個になります。
        この場合 retData(0)~retData(7) がパス1の直線配列、
        retData(8)~retData(19)がパス2の直線配列になります。

        フォーマットが 1,0 で retNum が 4,6 だった場合、パス1が4*6+2個、パス2が6*2個になります。
        この場合 retData(0)~retData(25) がパス1のベジェ曲線配列、
        retData(26)~retData(37)がパス2の直線配列になります。

        パスにCloseFigureが指定されている場合、始点と同じ座標の最後の点が追加されます。

  pgd_GetArrayAnimate,

  #### `pgd_GetArrayAnimate retData, retNum, retFmt, pgd, Tval, sizeX, sizeY, rotate` 頂点データを取得

  > `retData` 頂点データを格納する実数型配列変数
  > `retNum` 各パスの頂点数を格納する整数型配列変数
  > `retFmt` 各パスのフォーマットを格納する整数型配列変数
  > `pgd` 動画形式のpgdモデルを格納した変数
  > `Tval` アニメーション再生位置 (0.0~1.0)
  > `sizeX` 出力サイズX
  > `sizeY` 出力サイズY
  > `rotate` 回転角度 (単位ラジアン)

        動画形式の頂点配列取得命令です。

        retData は x1, y1, x2, y2, x3.... という具合に頂点座標が連続します。
        retNum は各パスの頂点数が代入されます。
        retFmt は各パスのフォーマットが代入されます。（パスごとにフォーマットは固定になります）
        stat にパスの数を返します。
        これは retNum,retFmt の有効配列長です。

        パスのフォーマットは次の通りです。

        	0	直線
        		直線は頂点(x1,y1)の連続になり、retNum*2の配列数になります。
        		座標は全て0,0 を原点とした絶対座標です。

        	1	ベジェ曲線
        		ベジェ曲線は最初に始点(x1,y1)を取り(apx1,apy1, apx2,apy2, x2,y2)が連続します。
        		データ数は retNum*6+2 の配列数になります。
        		座標は全て0,0 を原点とした絶対座標です。

        例
        フォーマットが 0,0 で retNum が 4,6 だった場合、パス1が4*2個、パス2が6*2個になります。
        この場合 retData(0)~retData(7) がパス1の直線配列、
        retData(8)~retData(19)がパス2の直線配列になります。

        フォーマットが 1,0 で retNum が 4,6 だった場合、パス1が4*6+2個、パス2が6*2個になります。
        この場合 retData(0)~retData(25) がパス1のベジェ曲線配列、
        retData(26)~retData(37)がパス2の直線配列になります。

        パスにCloseFigureが指定されている場合、始点と同じ座標の最後の点が追加されます。

  pgd_GetArrayStill,

  #### `pgd_GetFormat( pgd)` フォーマット形式取得

  > `pgd` pgdモデルを格納した変数

        フォーマットは静画なら1、動画なら2を返します。
        それ以外の場合は正しいpgdモデルではありません。

  pgd_GetViewX, pgd_GetViewY,

  #### `pgd_GetViewX( pgd)` ビューサイズXを取得

  > `pgd` pgdモデルを格納した変数

        エディタで作成した際のビューサイズXを得ます。

  pgd_GetViewY, pgd_GetFormat,

  #### `pgd_GetViewY( pgd)` ビューサイズYを取得

  > `pgd` pgdモデルを格納した変数

        エディタで作成した際のビューサイズYを得ます。

  pgd_GetViewX, pgd_GetFormat,

- アイコンとカーソル

  #### `pgd_CreateIcon( pgd, Tval, sizeX, sizeY, rotate)` アイコン作成

  > `pgd` pgdモデルを格納した変数
  > `Tval` アニメーション再生位置 (0.0~1.0)
  > `sizeX` 出力サイズX
  > `sizeY` 出力サイズY
  > `rotate` 回転角度 (単位ラジアン)

        pgdモデルからアイコンを作成しアイコンハンドルを返します。
        アイコンハンドルは使い終わった後に pgd_DestroyIcon や user32 の DestroyIcon で削除してください。

  pgd_CreateCursor, pgd_DestroyIcon,

  #### `pgd_CreateCursor( pgd, Tval, sizeX, sizeY, rotate, hotspotX, hotspotY)` カーソル作成

  > `pgd` pgdモデルを格納した変数
  > `Tval` アニメーション再生位置 (0.0~1.0)
  > `sizeX` 出力サイズX
  > `sizeY` 出力サイズY
  > `rotate` 回転角度 (単位ラジアン)
  > `hotspotX` カーソルの先端座標X
  > `hotspotY` カーソルの先端座標Y

        pgdモデルからカーソルを作成しカーソルハンドルを返します。
        カーソルハンドルは使い終わった後に pgd_DestroyCursor や user32 の DestroyCursor で削除してください。

  pgd_CreateIcon, pgd_DestroyCursor,

  #### `pgd_DestroyIcon hIcon` アイコン削除

  > `hIcon` アイコンハンドル

        アイコンを削除します。
        user32 の DestroyIcon でも削除できます。

  pgd_CreateIcon,

  #### `pgd_DestroyCursor hCursor` カーソル削除

  > `hCursor` カーソルハンドル

        カーソルを削除します。
        user32 の DestroyCursor でも削除できます。

  pgd_CreateCursor,

- その他

  #### `pgd_CnvBin srcArray, dst` 整数配列を文字列型変数に代入

  > `srcArray` 元データを格納した整数型配列変数
  > `dst` 出力先の文字列型変数

        ソースに直接埋め込んだ整数配列形式のpgdモデルを文字列型に変換します。
        文字列型配列で複数のpgdモデルを管理したい場合に使用してください。
        外部ファイルからpgdモデルを読み込む場合は変換不要です。

  #### `pgd_ResetClip` クリッピング解除

        クリッピングを解除します。