%type
システム定義マクロ
%ver
3.7
%date
2025/01/22
%note
このマクロはhspdef.as内で定義されています。
%group
標準定義マクロ
%author
onitama
%port
Win
Mac
Cli


%index
gmode_sub
色減算合成コピーモード

%inst
gmodeの第1引数に指定することで、画面コピーモードを色減算合成コピーモードに設定できます。

%sample
	screen 1 : picload dir_exe + "/sample/demo/logop.bmp"
	img_width = ginfo_winx
	img_height = ginfo_winy
	gsel 0
	color       : boxf img_width / 5, 0, img_width  * 2 / 5, ginfo_winy
	color 255   : boxf img_width * 2 / 5, 0, img_width * 3 / 5, ginfo_winy
	color ,255  : boxf img_width * 3 / 5, 0, img_width * 4 / 5, ginfo_winy
	color ,,255 : boxf img_width * 4 / 5, 0, img_width, ginfo_winy
	gmode gmode_sub, img_width, img_height, 256
	gcopy 1, 0, 0
	stop

%href
gmode
gmode_rgb0
gmode_mem
gmode_alpha
gmode_add
gmode_gdi
gmode_rgb0alpha
gmode_pixela
%index
gmode_add
色加算合成コピーモード

%inst
gmodeの第1引数に指定することで、画面コピーモードを色加算合成コピーモードに設定できます。

%sample
	screen 1 : picload dir_exe + "/sample/demo/logop.bmp"
	img_width = ginfo_winx
	img_height = ginfo_winy
	gsel 0
	color       : boxf img_width / 5, 0, img_width  * 2 / 5, ginfo_winy
	color 255   : boxf img_width * 2 / 5, 0, img_width * 3 / 5, ginfo_winy
	color ,255  : boxf img_width * 3 / 5, 0, img_width * 4 / 5, ginfo_winy
	color ,,255 : boxf img_width * 4 / 5, 0, img_width, ginfo_winy
	gmode gmode_add, img_width, img_height, 256
	gcopy 1, 0, 0
	stop

%href
gmode
gmode_rgb0
gmode_mem
gmode_alpha
gmode_sub
gmode_gdi
gmode_rgb0alpha
gmode_pixela
%index
gmode_gdi
通常のコピーモード

%inst
gmodeの第1引数に指定することで、画面コピーモードを通常のコピーモードに設定できます。
省略しても同じ結果が得られますので、省略しても構いません。

%sample
	buffer 1 : picload dir_exe + "/sample/demo/logop.bmp"
	img_width = ginfo_winx
	img_height = ginfo_winy
	gsel 0
	gmode gmode_gdi
	gcopy 1, 0, 0, img_width, img_height
	stop

%href
gmode
gmode_rgb0
gmode_mem
gmode_alpha
gmode_add
gmode_sub
gmode_rgb0alpha
gmode_pixela
%index
gmode_rgb0
透明色付きコピーモード

%inst
gmodeの第1引数に指定することで、画面コピーモードを透明色付きコピーモードに設定できます。

%sample
	screen 1 : picload dir_exe + "/sample/demo/logop.bmp"
	img_width = ginfo_winx
	img_height = ginfo_winy
	gsel 0
	gmode gmode_rgb0, img_width, img_height
	gcopy 1, 0, 0
	stop

%href
gmode
gmode_sub
gmode_mem
gmode_alpha
gmode_add
gmode_gdi
gmode_rgb0alpha
gmode_pixela
%index
gmode_mem
メモリ間コピーモード

%inst
gmodeの第1引数に指定することで、画面コピーモードをメモリ間コピーモードに設定できます。

%sample
	screen 1 : picload dir_exe + "/sample/demo/logop.bmp"
	img_width = ginfo_winx
	img_height = ginfo_winy
	gsel 0
	gmode gmode_mem, img_width, img_height
	gcopy 1, 0, 0
	stop

%href
gmode
gmode_rgb0
gmode_sub
gmode_alpha
gmode_add
gmode_gdi
gmode_rgb0alpha
gmode_pixela
%index
gmode_alpha
半透明合成コピーモード

%inst
gmodeの第1引数に指定することで、画面コピーモードを半透明合成コピーモードに設定できます。

%sample
	screen 1 : picload dir_exe + "/sample/demo/logop.bmp"
	img_width = ginfo_winx
	img_height = ginfo_winy
	gsel 0
	color       : boxf img_width / 5, 0, img_width  * 2 / 5, ginfo_winy
	color 255   : boxf img_width * 2 / 5, 0, img_width * 3 / 5, ginfo_winy
	color ,255  : boxf img_width * 3 / 5, 0, img_width * 4 / 5, ginfo_winy
	color ,,255 : boxf img_width * 4 / 5, 0, img_width, ginfo_winy
	gmode gmode_alpha, img_width, img_height, 128
	gcopy 1, 0, 0
	stop

%href
gmode
gmode_rgb0
gmode_mem
gmode_sub
gmode_add
gmode_gdi
gmode_rgb0alpha
gmode_pixela
%index
gmode_rgb0alpha
透明色付き半透明合成コピーモード

%inst
gmodeの第1引数に指定することで、画面コピーモードを透明色付き半透明合成コピーモードに設定できます。

%sample
	screen 1 : picload dir_exe + "/sample/demo/logop.bmp"
	img_width = ginfo_winx
	img_height = ginfo_winy
	gsel 0
	color   0,   0,   0 : boxf img_width / 5, 0, img_width  * 2 / 5, ginfo_winy
	color 255,   0,   0 : boxf img_width * 2 / 5, 0, img_width * 3 / 5, ginfo_winy
	color   0, 255,   0 : boxf img_width * 3 / 5, 0, img_width * 4 / 5, ginfo_winy
	color   0,   0, 255 : boxf img_width * 4 / 5, 0, img_width, ginfo_winy
	gmode gmode_rgb0alpha, img_width, img_height, 128
	color 0, 0, 0
	gcopy 1, 0, 0
	stop

%href
gmode
gmode_rgb0
gmode_mem
gmode_alpha
gmode_add
gmode_gdi
gmode_sub
gmode_pixela
%index
gmode_pixela
ピクセルアルファブレンドコピーモード

%inst
gmodeの第1引数に指定することで、画面コピーモードをピクセルアルファブレンドコピーモードに設定できます。

%sample
	screen 1 : picload dir_exe + "/sample/demo/logop.bmp"
	img_width = ginfo_winx
	img_height = ginfo_winy
	screen 1, img_width * 2, img_height : picload dir_exe + "/sample/demo/logop.bmp", 1
	repeat img_width
		hsvcolor cnt * 192 / ( img_width  ), 255, 255
		line img_width + cnt, img_height, img_width + cnt, 0
	loop
	gsel 0
	gmode gmode_pixela, img_width, img_height, 128
	gcopy 1, 0, 0
	stop

%href
gmode
gmode_rgb0
gmode_mem
gmode_alpha
gmode_add
gmode_gdi
gmode_rgb0alpha
gmode_sub
%index
objinfo_mode
モードおよびオプションデータを取得

%prm
(p1)
p1=0〜 : ウィンドウオブジェクトID

%inst
指定したウィンドウオブジェクトのモードおよびオプションデータを返します。

%sample
	button goto "sample", *dummy
	info = objinfo_mode( stat )
	mes "mode : " + ( info & 0xffff )
	mes "option : " + ( info >> 16 & 0xffff )

*dummy
	stop

%href
objinfo
objinfo_hwnd
objinfo_bmscr
%index
objinfo_bmscr
オブジェクトが配置されているBMSCR構造体のポインタを取得

%prm
(p1)
p1=0〜 : ウィンドウオブジェクトID

%inst
指定したウィンドウオブジェクトが配置されているBMSCR構造体のポインタを返します。

%sample
	button goto "sample", *dummy
	p_bmscr = objinfo_bmscr( stat )
	mes "objectが配置されているBMSCR構造体のポインタ : " + p_bmscr
	mref bmscr, 67
	mes "mrefで得られる値（" + varptr( bmscr ) + "）と同等"

*dummy
	stop

%href
objinfo
objinfo_mode
objinfo_hwnd
%index
objinfo_hwnd
ウィンドウオブジェクトのハンドルを取得

%prm
(p1)
p1=0〜 : ウィンドウオブジェクトID

%inst
指定したウィンドウオブジェクトのハンドルを返します。

%sample
	button goto "sample", *dummy
	obj_hwnd = objinfo_hwnd( stat )
	mes "ウィンドウオブジェクトのハンドル : " + obj_hwnd

*dummy
	stop

%href
objinfo
objinfo_mode
objinfo_bmscr
%index
screen_normal
通常のウィンドウを作成

%inst
screen命令の第4引数に指定することで、通常のウィンドウを作成できます。
省略しても同じ結果が得られますので、省略しても構いません。

%sample
// ウィンドウID0の通常のウィンドウを作成
	screen 0, 640, 480, screen_normal

// 省略しても同じ結果が得られる
	screen 1, 320, 240
	stop

%href
screen
screen_palette
screen_hide
screen_fixedsize
screen_tool
screen_frame

%index
screen_palette
パレットモードのウィンドウを作成

%inst
screen命令の第4引数に指定することで、パレットモードのウィンドウを作成できます。
他のマクロと組み合わせて指定する場合は、その和または論理和を指定してください。

%sample
// ウィンドウID0のウィンドウをパレットモードで作成
	screen 0, 640, 480, screen_palette
	stop

%href
screen
screen_normal
screen_hide
screen_fixedsize
screen_tool
screen_frame

%index
screen_hide
非表示のウィンドウを作成

%inst
screen命令の第4引数に指定することで、非表示のウィンドウを作成できます。
他のマクロと組み合わせて指定する場合は、その和または論理和を指定してください。

%sample
// ウィンドウID0のウィンドウを非表示で作成
	screen 0, 640, 480, screen_hide
	stop

%href
screen
screen_normal
screen_palette
screen_fixedsize
screen_tool
screen_frame
%index
screen_fixedsize
サイズ固定ウィンドウを作成

%inst
screen命令の第4引数に指定することで、サイズ固定のウィンドウを作成できます。
他のマクロと組み合わせて指定する場合は、その和または論理和を指定してください。

%sample
// ウィンドウID0のウィンドウをサイズ固定で作成
	screen 0, 640, 480, screen_fixedsize
	stop

%href
screen
screen_normal
screen_palette
screen_hide
screen_tool
screen_frame
%index
screen_tool
ツールウィンドウを作成

%inst
screen命令の第4引数に指定することで、ツールウィンドウを作成できます。
他のマクロと組み合わせて指定する場合は、その和または論理和を指定してください。

%sample
// ウィンドウID0のツールウィンドウを作成
	screen 0, 640, 480, screen_tool
	stop

%href
screen
screen_normal
screen_palette
screen_hide
screen_fixedsize
screen_frame

%index
screen_frame
深い縁のあるウィンドウを作成

%inst
screen命令の第4引数に指定することで、深い縁のあるウィンドウを作成できます。
他のマクロと組み合わせて指定する場合は、その和または論理和を指定してください。

%sample
// ウィンドウIDの深い縁のあるウィンドウを作成
	screen 0, 640, 480, screen_frame
	stop

%href
screen
screen_normal
screen_palette
screen_hide
screen_fixedsize
screen_tool

%index
font_normal
通常のスタイルでフォント設定

%inst
font命令の第3引数に指定することで、通常のスタイルでフォントを設定することができます。
省略しても同じ結果が得られますので、省略しても構いません。

%sample
// サイズ12のMSゴシックを設定
	font msgothic, 24, font_normal
	mes "サイズ24のMSゴシック（通常のスタイル）"

// 省略しても同じ結果が得られる
	font msgothic, 24
	mes "サイズ24のMSゴシック（通常のスタイル）"
	stop

%href
font
font_bold
font_italic
font_underline
font_strikeout
font_antialias
%index
font_bold
太文字でフォント設定

%inst
font命令の第3引数に指定することで、太文字のフォントを設定することができます。
他のマクロと組み合わせて指定する場合は、その和または論理和を指定してください。

%sample
// サイズ24のMSゴシックを設定
	font msgothic, 24, font_normal
	mes "サイズ24のMSゴシック（通常のスタイル）"

// サイズ24で太文字のMSゴシックを設定
	font msgothic, 24, font_bold
	mes "サイズ24のMSゴシック（太文字）"
	stop

%href
font
font_normal
font_italic
font_underline
font_strikeout
font_antialias
%index
font_italic
イタリック体でフォント設定

%inst
font命令の第3引数に指定することで、イタリック体のフォントを設定することができます。
他のマクロと組み合わせて指定する場合は、その和または論理和を指定してください。

%sample
// サイズ24のMSゴシックを設定
	font msgothic, 24, font_normal
	mes "サイズ24のMSゴシック（通常のスタイル）"

// サイズ24でイタリック体MSmsゴシックを設定
	font msgothic, 24, font_italic
	mes "サイズ24のMSゴシック（イタリック体）"
	stop

%href
font
font_normal
font_bold
font_underline
font_strikeout
font_antialias
%index
font_underline
下線付きでフォント設定

%inst
font命令の第3引数に指定することで、下線付きのフォントを設定することができます。
他のマクロと組み合わせて指定する場合は、その和または論理和を指定してください。

%sample
// サイズ24のMSゴシックを設定
	font msgothic, 24, font_normal
	mes "サイズ24のMSゴシック（通常のスタイル）"

// サイズ24で下線付きのMSゴシックを設定
	font msgothic, 24, font_underline
	mes "サイズ24のMSゴシック（下線付き）"
	stop

%href
font
font_normal
font_bold
font_italic
font_strikeout
font_antialias
%index
font_strikeout
打ち消し線付きでフォント設定

%inst
font命令の第3引数に指定することで、打ち消し線付きのフォントを設定することができます。
他のマクロと組み合わせて指定する場合は、その和または論理和を指定してください。

%sample
// サイズ24のMSゴシックを設定
	font msgothic, 24, font_normal
	mes "サイズ24のMSゴシック（通常のスタイル）"

// サイズ24で打ち消し線付きのMSゴシックを設定
	font msgothic, 24, font_strikeout
	mes "サイズ24のMSゴシック（打ち消し線付き）"
	stop

%href
font
font_normal
font_bold
font_italic
font_underline
font_antialias
%index
font_antialias
アンチエイリアスでフォント設定

%inst
font命令の第3引数に指定することで、アンチエイリアスのフォントを設定することができます。
他のマクロと組み合わせて指定する場合は、その和または論理和を指定してください。

%sample
// サイズ24のMSゴシックを設定
	font msgothic, 24, font_normal
	mes "サイズ24のMSゴシック（通常のスタイル）"

// サイズ24でアンチエイリアスのMSゴシックを設定
	font msgothic, 24, font_antialias
	mes "サイズ24のMSゴシック（アンチエイリアス）"
	stop

%href
font
font_normal
font_bold
font_italic
font_underline
font_strikeout


%index
objmode_normal
HSP標準フォントを設定

%inst
objmode命令の第1引数に指定することで、オブジェクト制御命令で使用されるフォントをHSP標準フォントに設定することができます。
省略しても同じ結果が得られますので、省略しても構いません。

%sample
	s = "オブジェクト制御命令で使用されるフォントのサンプル"

// オブジェクト制御命令で使用されるフォントをHSP標準フォントに設定
	objmode objmode_normal
	mesbox s, ginfo_winx, ginfo_winy / 2

// 省略しても同じ結果が得られる
	objmode objmode_normal
	mesbox s, ginfo_winx, ginfo_winy / 2

	stop

%href
objmode
objmode_guifont
objmode_usefont
objmode_usecolor

%index
objmode_guifont
デフォルトGUIフォントを設定

%inst
objmode命令の第1引数に指定することで、オブジェクト制御命令で使用されるフォントをデフォルトGUIフォントに設定することができます。

%sample
	s = "オブジェクト制御命令で使用されるフォントのサンプル"

// オブジェクト制御命令で使用されるフォントをデフォルトGUIフォントに設定
	objmode objmode_guifont
	mesbox s, ginfo_winx, ginfo_winy

	stop

%href
objmode
objmode_normal
objmode_usefont
objmode_usecolor


%index
objmode_usefont
font命令で選択されているフォントを設定

%inst
objmode命令の第1引数に指定することで、オブジェクト制御命令で使用されるフォントをfont命令で選択されているフォントに設定することができます。

%sample
	s = "オブジェクト制御命令で使用されるフォントのサンプル"

// オブジェクト制御命令で使用されるフォントをfont命令で選択されているフォントに設定
	objmode objmode_usefont

	font msmincho, 24
	mesbox s, ginfo_winx, ginfo_winy / 2

	font msgothic, 18, font_italic
	mesbox s, ginfo_winx, ginfo_winy / 2

	stop

%href
objmode
objmode_normal
objmode_guifont
objmode_usecolor


%index
objmode_usecolor
objcolor命令で選択されている色を設定

%inst
objmode命令の第1引数に指定することで、オブジェクト制御命令で使用される色をcolor命令、objcolor命令で指定されている色に設定することができます。

%href
objmode
objmode_normal
objmode_guifont
objmode_usefont



%index
msgothic
MSゴシックフォント

%group
システム変数

%inst
MSゴシックを示すフォントを示すキーワードです。
font命令で指定するフォント名として使用することができます。

%href
msmincho

;---------------------------------------------------------------------
%index
msmincho
MS明朝フォント

%group
システム変数

%inst
MS明朝を示すフォントを示すキーワードです。
font命令で指定するフォント名として使用することができます。

%href
msgothic

;---------------------------------------------------------------------
%index
and
論理積(演算子)

%group
標準定義マクロ

%inst
論理積を示す演算子「&」と同様に使用することができるマクロです。

%href
or
xor
not

;---------------------------------------------------------------------
%index
or
論理和(演算子)

%group
標準定義マクロ

%inst
論理和を示す演算子「|」と同様に使用することができるマクロです。

%href
and
xor
not

;---------------------------------------------------------------------
%index
xor
排他的論理和(演算子)

%group
標準定義マクロ

%inst
排他的論理和を示す演算子「^」と同様に使用することができるマクロです。

%href
and
or
not

;---------------------------------------------------------------------
%index
not
否定(演算子)

%group
標準定義マクロ

%inst
否定を示す演算子「!」と同様に使用することができるマクロです。

%href
and
or
xor

;---------------------------------------------------------------------
%index
M_PI
円周率

%inst
円周率を表す定数です。3.14159265358979323846が定義されています。

%group
数学定数

%href
rad2deg
deg2rad


;---------------------------------------------------------------------
%index
rad2deg
ラジアンを度に変換

%prm
(p1)
p1 : 度に変換する角度（ラジアン）

%inst
角度の単位をラジアンから度へ変換します。
弧度法で表された角度を度数法での角度に変換するとも言えます。

%sample
	tmp = M_PI
	mes str(tmp) + "ラジアンは" + rad2deg(tmp) + "°です。"
	stop

%href
M_PI
deg2rad


;---------------------------------------------------------------------
%index
deg2rad
度をラジアンに変換

%prm
(p1)
p1 : ラジアンに変換する角度（度）

%inst
角度の単位を度からラジアンへ変換します。
度数法で表された角度を弧度法での角度に変換するとも言えます。

%sample
	tmp = 90
	mes str(tmp) + "°は" + deg2rad(tmp) + "ラジアンです。"
	stop

%href
M_PI
rad2deg


