v2.0 (mod:2 / cat:16 / func:50)
このモジュールは 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_RenderHSP 描画出力先をHSPに設定する 描画出力先をHSPのバッファに設定します。
pgd_RenderA2D 描画出力先をA2Dに設定する 描画出力先をA2Dのイメージに設定します。
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 線の自動スケーリング
flag0=無効, 1=有効 (初期値 1)
描画サイズに合わせた線の自動スケーリングを設定します。
pgd_LineScaling scale 線の太さ倍率
scale倍率 (初期値 1.0)
線の太さの倍率を設定します。
2.0にすれば2倍の太さになります。
pgd_FixedFillColor flag, color1, color2 塗り色を固定色に設定
flag0=無効, 1=有効 (初期値 0)
color1色1
color2色2
塗り色を単色指定します。
色1は単色、色2はグラデーション用です。
色は $AARRGGBB で指定します。
pgd_FixedLineColor flag, color1, color2 線の色を固定色に設定
flag0=無効, 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
他の(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_ColorInversion inv 色を反転
inv反転値 (0.0~1.0) (初期値 0.0)
オプション(R)Color
他の(R)Color系と併用できません。
色を反転します。
1.0 で完全に反転します。
※この設定は処理負荷が非常に高いため、リアルタイム描画には向きません。
pgd_ColorBalance rr, gr, br 各色成分の割合設定
rRの割合 (初期値 1.0)
gGの割合 (初期値 1.0)
bBの割合 (初期値 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_RenderSize wr, hr レンダリングサイズを設定
wr横幅の割合 (初期値 1.0)
hr縦幅の割合 (初期値 1.0)
オプション(R)
レンダリングサイズを設定します。
例えば 0.25 に設定すると 32x32 ピクセルで出力されるpgdモデルは 8x8 でバックバッファにレンダリングされ、
それを4倍拡大して描画先に出力します。
※この設定は設定サイズが大きいほど処理負荷が上がります。
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_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 トランスフォーム有効/無効化
flag0=無効, 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_TransformReady トランスフォームの準備 現在のカレントポジションを基準に座標値トランスフォームの準備をします。
これは pgd_Transform で座標値を変換する前に使用する命令です。
pgd_Draw などで描画する場合は不要です。
各トランスフォームを設定後、基準座標を pos 0,0 に設定し pgd_TransformReady を実行します。
その後 pgd_Transform を使用します。
pgd_Transform vx, vy 座標値をトランスフォーム
vx変換する座標値Xを格納した変数
vy変換する座標値Yを格納した変数
座標値にトランスフォームを適用します。
任意座標のトランスフォーム後の座標値が欲しい場合に使用します。
vx, vy に変換後の座標値が入力されます。
事前に 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_Draw pgd, Tval, sizeX, sizeY, rotate, clipFlag pgdモデルを描画
pgdpgdモデルを格納した変数
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_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_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 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_GetFormat( pgd) フォーマット形式取得
pgdpgdモデルを格納した変数
フォーマットは静画なら1、動画なら2を返します。
それ以外の場合は正しいpgdモデルではありません。
pgd_GetViewX( pgd) ビューサイズXを取得
pgdpgdモデルを格納した変数
エディタで作成した際のビューサイズXを得ます。
pgd_GetViewY( pgd) ビューサイズYを取得
pgdpgdモデルを格納した変数
エディタで作成した際のビューサイズYを得ます。
pgd_CreateIcon( pgd, Tval, sizeX, sizeY, rotate) アイコン作成
pgdpgdモデルを格納した変数
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) カーソル作成
pgdpgdモデルを格納した変数
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_DestroyCursor hCursor カーソル削除
hCursorカーソルハンドル
カーソルを削除します。
user32 の DestroyCursor でも削除できます。
pgd_CnvBin srcArray, dst 整数配列を文字列型変数に代入
srcArray元データを格納した整数型配列変数
dst出力先の文字列型変数
ソースに直接埋め込んだ整数配列形式のpgdモデルを文字列型に変換します。
文字列型配列で複数のpgdモデルを管理したい場合に使用してください。
外部ファイルからpgdモデルを読み込む場合は変換不要です。
pgd_ResetClip クリッピング解除 クリッピングを解除します。