PerlDxLib PyDxLibをVer1.01にしました

PerlDxLib PyDxLibをVer1.01にしました

Ver.1.01の変更内容としては以下になります。

YoshichiのJunk置き場

・Ver.1.01
int型のポインタ引数対応
(GetMousePointなどが使用できるようになる)

KeyInputString
GetKeyInputString
KeyInputSingleCharString
FileRead_gets
EnumFontName
を使用できるようにラッパー側を改造


使い方としては、サンプルを見てほしいのですが
簡単な解説はとりあえず、ここで。

■解説
Perlで解説しますが、Pythonも同じように使用できます。

GetMousePoint(int *, int *);を使用する場合、以下のようにします。

my $dx = DxLib::SwigDxLib->new();
~
my $x = DxLib::new_intp(); # new_intpでint型のアドレスを保持します。
my $y = DxLib::new_intp();

$dx->GetMousePoint($x, $y); # ここでは、普通にアドレスを指定

#値を取り出すときはDxLib::intp_valueを使用します。
$dx->DrawRotaGraph(DxLib::intp_value($x), DxLib::intp_value($y), $size, 0.0, $image, 1, 0);

# 使用したら、deleteして解放してあげます
DxLib::delete_intp($x);
DxLib::delete_intp($y);

と、まぁメモリ管理するのかよ!
って言いたくなりますが、ごめんなさいorz
(Swigが悪いんだ。。。)


KeyInputString
GetKeyInputString
KeyInputSingleCharString
FileRead_gets
EnumFontName
(char *になっていて、値が書き換わるもの)に関しては、
ラッパー側で無理やり修正いれました。
上記の関数で引数に「char *buf」が入っている箇所は省略してください。
なので以下のように使用します。
(注意 上記関数は仕様を変更する可能性もあります)

$dx->KeyInputString(0, 16, 30, 0); #第4引数のchar *StrBufferは省略
my $name = $dx->{m_KeyInputString}; # メンバ変数から取り出す。

上記関数を使用後、ラッパー側で作成したメンバ変数(m_関数名)に
アクセスして値を取り出します。
publicでアクセスできるので値を代入することもできますが
(ラッパーの中を見てもらえればわかると思いますが)やめてくださいとだけ。。。

本来であれば、もっとしっかりと実装するべだったのですね。