﻿
-----------------------------------
  
	Module_pgd

-----------------------------------

■ 使い方

	このモジュールは 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 のスクリーンやバッファを描画対象にします。
	どちらも描画命令を実行する際に選択されているイメージやバッファを自動判別します。

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



■ 命令、関数一覧

	pgd_Init			初期化（#include時に自動実行します）
	pgd_Exit			解放処理（onexitにより自動実行します）

	pgd_RenderHSP		描画出力先をHSPのバッファに設定する
	pgd_RenderA2D		描画出力先をA2Dのバッファに設定する
	pgd_SetRenderMode	描画出力を設定する

	pgd_ResetOption		オプション系の設定をリセットする
	pgd_AutoLineScaling	オプション: 線の自動スケーリング設定
	pgd_LineScaling		オプション: 線のスケーリング倍率設定
	pgd_FixedFillColor		オプション: 塗りの色を単色指定する
	pgd_FixedLineColor		オプション: 線の色を単色指定する
	pgd_AlphaRate		オプション: 塗りと線の色のブレンド率を変更する
	pgd_Random		オプション: 乱数を設定
	pgd_RandomX		オプション: 乱数Xを設定
	pgd_RandomY		オプション: 乱数Yを設定

	pgd_AlphaBlend		オプション(R): ブレンド率を設定する（他のAlpha系と併用不可）
	pgd_AlphaRange		オプション(R): 出力時のα範囲を設定する（他のAlpha系と併用不可）
	pgd_ColorInversion		オプション(R): 色の反転（他のColor系と併用不可）
	pgd_ColorBalance		オプション(R): RGBの割合調整
	pgd_ColorSaturation	オプション(R): 彩度調整
	pgd_Gamma		オプション(R): ガンマ値を設定する
	pgd_RenderSize		オプション(R): レンダリングサイズを設定する

	pgd_ResetTransform	トランスフォーム系の設定をリセットする
	pgd_EnableTransform	トランスフォームの有効/無効を切り替える
	pgd_TransformRotate	オプション(T): 回転を設定
	pgd_TransformSphere	オプション(T): 球状変形
	pgd_TransformSphereLens	オプション(T): 球形レンズ
	pgd_TransformSphereLensEx	オプション(T): 球形レンズEx
	pgd_TransformLinearLens	オプション(T): 線形レンズ
	pgd_TransformLinearLensEx	オプション(T): 線形レンズEx
	pgd_TransformTwist	オプション(T): ねじり
	pgd_TransformWave	オプション(T): 波
	pgd_TransformWaveEx	オプション(T): 波Ex
	pgd_TransformFlap		オプション(T): はためき

	pgd_TransformReady	座標値トランスフォーム準備
	pgd_Transform		座標値をトランスフォーム

	pgd_SetIndexColor		インデックスカラーを設定する
	pgd_SetIndexColorv	インデックスカラーをまとめて設定する
	pgd_GetIndexColor()	インデックスカラーを取得する

	pgd_Draw		描画する
	pgd_DrawStill		静画形式を描画する
	pgd_DrawAnimate		動画形式を描画する

	pgd_GetArrayStill		静画形式の頂点配列を得る
	pgd_GetArrayAnimate	動画形式の頂点配列を得る

	pgd_GetFormat()		フォーマットを得る
	pgd_GetViewX()		ビューサイズXを得る
	pgd_GetViewY()		ビューサイズYを得る

	pgd_CreateIcon()		pgdからアイコンを作成
	pgd_CreateCursor()	pgdからカーソルを作成
	pgd_DestroyIcon		アイコンを削除
	pgd_DestroyCursor		カーソルを削除

	pgd_CnvBin		整数配列→文字列型のデータ変換

	pgd_ResetClip		クリッピングを解除する



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

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

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


■ オプション、オプション(R)、オプション(T)について

	オプション系の命令は様々な描画効果を与えます。
	標準オプション、レンダリングバッファ系、トランスフォーム系の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	新しいクリッピング領域にする。



----------------------------------


■ pgd_RenderHSP
■ pgd_RenderA2D

	それぞれ描画出力先を切り替えます。



■ pgd_SetRenderMode smoothing, pixeloffset

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

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



----------------------------------

■ pgd_ResetOption

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



■ pgd_AutoLineScaling flag

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

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


■ pgd_LineScaling scale

	scale	倍率 (初期値 1.0)

	オプション: 線の太さの倍率を設定します。
	2.0にすれば2倍の太さになります。



■ pgd_FixedFillColor flag, color1, color2

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

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



■ pgd_FixedLineColor flag, color1, color2

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

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



■ pgd_AlphaRate alpha

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

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



■ pgd_AlphaBlend alpha

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

	オプション(R): ブレンド率を設定します。（他のAlpha系と併用不可）
	pgd_AlphaRate と似た効果です。
	これはレンダリングバッファに描画し、画面に転送する際のカラーマトリクスでアルファ値を操作するため、
	自然な描画結果が得られます。

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



■ pgd_AlphaRange min, max

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

	オプション(R): 出力時のα範囲を設定します。（他のAlpha系と併用不可）
	例えば min=64, max=128 に設定するとα値が64以下のピクセルは 0 で透明になり、
	128以上のピクセルは 255 で不透明になり、64～128の範囲に0～255の階調が当てはめられます。
	設定値の範囲は 0~255 ですが min は max より 1 小さい値が限界値です。
	min=0, max=255 に設定すると通常の出力になります。

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



■ pgd_ColorInversion inv

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

	オプション(R): 色を反転します。（他のColor系と併用不可）
	1.0 で完全に反転します。

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



■ pgd_ColorBalance rr, gr, br

	rr, gr, br	各色成分の割合 (初期値 1.0)

	オプション(R): RGBの割合を調整します。
	各成分の割合を 1.0 を基準に指定します。
	0.0 ならその成分は 0 になり、 2.0 なら2倍になります。

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



■ pgd_ColorSaturation sat

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

	オプション(R): 彩度を調整します。
	1.0 を基準に、増やすと鮮やかに、減らすと色褪せ、0.0でグレースケールになります。

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



■ pgd_Gamma gamma

	gamma	ガンマ値 (初期値 1.0)

	オプション(R): ガンマ値を設定します。

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



■ pgd_RenderSize wr, hr

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

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

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



----------------------------------

■ pgd_Random value
■ pgd_RandomX value
■ pgd_RandomY value
	
	value	乱数範囲(0~32767) (初期値 0)

		オプション: 頂点座標を操作する乱数を設定します。
		頂点座標にランダム性を与えます。
		例えば 5 を指定すると頂点の座標が -2~+2の範囲でランダムになります。
		pgd_Random は X と Y の両方に同じ値を設定します。



----------------------------------

■ pgd_ResetTransform

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



■ pgd_EnableTransform flag

	flag	0=無効, 1=有効

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



■ pgd_TransformRotate rad

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

	オプション(T): 回転を設定します。

	各描画命令の回転角度指定と似ていますが、これは任意タイミングでの回転ができます。
	
	他のトランスフォームを使用する場合この回転を最初に指定すればモデル自体を回転できます。
	使用しないのであれば各描画命令の回転のほうが低コストです。



■ pgd_TransformSphere px, py, size, power

	px,py	基点位置
	size	球の半径
	power	変形係数

	オプション(T): 球の形に変形させます。
	変形係数は 1.0 の時にほぼ完全な球形になります。
	0.5にすると半球になります。



■ pgd_TransformSphereLens	 px, py, start, end, power

	px,py	基点位置
	start	開始距離
	end	終了距離
	power	変形係数

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



■ pgd_TransformSphereLensEx px, py, start, end, angle, powerx, powery

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

	オプション(T): pgd_TransformSphereLens の拡張版です。
	angle=0.0, powerx=powery の場合に pgd_TransformSphereLens と同じ効果になります。



■ pgd_TransformLinearLens px, py, start, end, angle, power

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

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



■ pgd_TransformLinearLensEx px, py, start, end, angle, powerx, powery

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

	オプション(T): pgd_TransformLinearLens の拡張版です。
	変形係数Yが 0.0 の場合は pgd_TransformLinearLens と同じ効果になります。



■ pgd_TransformTwist  px, py, size, angle

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

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



■ pgd_TransformWave sx, sy, xoffset, angle

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

	オプション(T): 全体に波のようなうねりを与えます。
	波形は正弦波です。



■ pgd_TransformWaveEx sx, sy, xoffset, angle, angle2

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

	オプション(T): pgd_TransformWave の拡張版です。
	angle2 で波形に回転を与えることでより自然なうねりになります。



■ pgd_TransformFlap sx, sy, xoffset, angle, angle2, ax, ay, decay, prm

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

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

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



----------------------------------

■ pgd_TransformReady

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

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

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



■ pgd_Transform vx, vy

	vx, vy	変換する座標値を格納した変数

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

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



----------------------------------

■ pgd_SetIndexColor index, color

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

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

	色は $AARRGGBB で指定します。



■ pgd_SetIndexColorv array

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

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



■ pgd_GetIndexColor( index)

	index	取得するインデックス (0~63)

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



----------------------------------

■ pgd_Draw pgd, Tval, sizeX, sizeY, rotate, clipFlag

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

	描画命令です。
	pgdモデルの形式を自動判別します。
	各引数の詳細は形式別の描画命令を参照してください。



■ pgd_DrawStill pgd, sizeX, sizeY, rotate, clipFlag

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

	静画形式用の描画命令です。
	カレントポジションを中心に sizeX,sizeY の大きさで描画します。
	描画内容は redraw 1 を実行しないと画面に反映されない点に注意してください。

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

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



■ pgd_DrawAnimate pgd, Tval, sizeX, sizeY, rotate, clipFlag

	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 はエディタで書き出した際の view size をそのまま指定すると等倍になります。

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



■ pgd_GetArrayStill retData, retNum, retFmt, pgd, sizeX, sizeY, rotate

■ pgd_GetArrayAnimate retData, retNum, retFmt, pgd, Tval, sizeX, sizeY, rotate

	静画/動画形式それぞれの頂点配列取得命令です。

	retData	頂点データを格納する実数型配列変数
	retNum	各パスの頂点数を格納する整数型配列変数
	retFmt	各パスのフォーマットを格納する整数型配列変数

	他は各描画命令と同じ引数です。
	カレントポジションは無視されます。

	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_GetFormat( pgd)
■ pgd_GetViewX( pgd)
■ pgd_GetViewY( pgd)

	それぞれ各情報をpgdモデルから得ます。

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

	ビューサイズはエディタで作成した際のビューサイズです。



----------------------------------

■ 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, Tval, sizeX, sizeY, rotate, hotspotX, hotspotY)

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

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



■ pgd_DestroyIcon hIcon

	hIcon	アイコンハンドル

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



■ pgd_DestroyCursor hCursor

	hCursor	カーソルハンドル

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



----------------------------------

■ pgd_CnvBin srcArray, dst

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

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



■ pgd_ResetClip

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
















