ホーム › Media.DirectShow › AM_PROPERTY_SPHLI
AM_PROPERTY_SPHLI
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| HLISS | WORD | 2 | +0 | +0 | ハイライト情報の開始シーケンス(HLISS)を示す値。 |
| Reserved | WORD | 2 | +2 | +2 | 予約フィールド。将来の拡張用で通常は0。 |
| StartPTM | DWORD | 4 | +4 | +4 | ハイライト表示開始の提示時刻(PTM)。 |
| EndPTM | DWORD | 4 | +8 | +8 | ハイライト表示終了の提示時刻(PTM)。 |
| StartX | WORD | 2 | +12 | +12 | ハイライト矩形の開始X座標。 |
| StartY | WORD | 2 | +14 | +14 | ハイライト矩形の開始Y座標。 |
| StopX | WORD | 2 | +16 | +16 | ハイライト矩形の終了X座標。 |
| StopY | WORD | 2 | +18 | +18 | ハイライト矩形の終了Y座標。 |
| ColCon | AM_COLCON | 4 | +20 | +20 | ハイライトの色とコントラスト情報(AM_COLCON)。 |
各言語での定義
#include <windows.h>
// AM_COLCON (x64 4 / x86 4 バイト)
typedef struct AM_COLCON {
BYTE _bitfield1;
BYTE _bitfield2;
BYTE _bitfield3;
BYTE _bitfield4;
} AM_COLCON;
// AM_PROPERTY_SPHLI (x64 24 / x86 24 バイト)
typedef struct AM_PROPERTY_SPHLI {
WORD HLISS;
WORD Reserved;
DWORD StartPTM;
DWORD EndPTM;
WORD StartX;
WORD StartY;
WORD StopX;
WORD StopY;
AM_COLCON ColCon;
} AM_PROPERTY_SPHLI;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct AM_COLCON
{
public byte _bitfield1;
public byte _bitfield2;
public byte _bitfield3;
public byte _bitfield4;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct AM_PROPERTY_SPHLI
{
public ushort HLISS;
public ushort Reserved;
public uint StartPTM;
public uint EndPTM;
public ushort StartX;
public ushort StartY;
public ushort StopX;
public ushort StopY;
public AM_COLCON ColCon;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure AM_COLCON
Public _bitfield1 As Byte
Public _bitfield2 As Byte
Public _bitfield3 As Byte
Public _bitfield4 As Byte
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure AM_PROPERTY_SPHLI
Public HLISS As UShort
Public Reserved As UShort
Public StartPTM As UInteger
Public EndPTM As UInteger
Public StartX As UShort
Public StartY As UShort
Public StopX As UShort
Public StopY As UShort
Public ColCon As AM_COLCON
End Structureimport ctypes
from ctypes import wintypes
class AM_COLCON(ctypes.Structure):
_fields_ = [
("_bitfield1", ctypes.c_ubyte),
("_bitfield2", ctypes.c_ubyte),
("_bitfield3", ctypes.c_ubyte),
("_bitfield4", ctypes.c_ubyte),
]
class AM_PROPERTY_SPHLI(ctypes.Structure):
_fields_ = [
("HLISS", ctypes.c_ushort),
("Reserved", ctypes.c_ushort),
("StartPTM", wintypes.DWORD),
("EndPTM", wintypes.DWORD),
("StartX", ctypes.c_ushort),
("StartY", ctypes.c_ushort),
("StopX", ctypes.c_ushort),
("StopY", ctypes.c_ushort),
("ColCon", AM_COLCON),
]#[repr(C)]
pub struct AM_COLCON {
pub _bitfield1: u8,
pub _bitfield2: u8,
pub _bitfield3: u8,
pub _bitfield4: u8,
}
#[repr(C)]
pub struct AM_PROPERTY_SPHLI {
pub HLISS: u16,
pub Reserved: u16,
pub StartPTM: u32,
pub EndPTM: u32,
pub StartX: u16,
pub StartY: u16,
pub StopX: u16,
pub StopY: u16,
pub ColCon: AM_COLCON,
}import "golang.org/x/sys/windows"
type AM_COLCON struct {
_bitfield1 byte
_bitfield2 byte
_bitfield3 byte
_bitfield4 byte
}
type AM_PROPERTY_SPHLI struct {
HLISS uint16
Reserved uint16
StartPTM uint32
EndPTM uint32
StartX uint16
StartY uint16
StopX uint16
StopY uint16
ColCon AM_COLCON
}type
AM_COLCON = record
_bitfield1: Byte;
_bitfield2: Byte;
_bitfield3: Byte;
_bitfield4: Byte;
end;
AM_PROPERTY_SPHLI = record
HLISS: Word;
Reserved: Word;
StartPTM: DWORD;
EndPTM: DWORD;
StartX: Word;
StartY: Word;
StopX: Word;
StopY: Word;
ColCon: AM_COLCON;
end;const AM_COLCON = extern struct {
_bitfield1: u8,
_bitfield2: u8,
_bitfield3: u8,
_bitfield4: u8,
};
const AM_PROPERTY_SPHLI = extern struct {
HLISS: u16,
Reserved: u16,
StartPTM: u32,
EndPTM: u32,
StartX: u16,
StartY: u16,
StopX: u16,
StopY: u16,
ColCon: AM_COLCON,
};type
AM_COLCON {.bycopy.} = object
_bitfield1: uint8
_bitfield2: uint8
_bitfield3: uint8
_bitfield4: uint8
AM_PROPERTY_SPHLI {.bycopy.} = object
HLISS: uint16
Reserved: uint16
StartPTM: uint32
EndPTM: uint32
StartX: uint16
StartY: uint16
StopX: uint16
StopY: uint16
ColCon: AM_COLCONstruct AM_COLCON
{
ubyte _bitfield1;
ubyte _bitfield2;
ubyte _bitfield3;
ubyte _bitfield4;
}
struct AM_PROPERTY_SPHLI
{
ushort HLISS;
ushort Reserved;
uint StartPTM;
uint EndPTM;
ushort StartX;
ushort StartY;
ushort StopX;
ushort StopY;
AM_COLCON ColCon;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; AM_PROPERTY_SPHLI サイズ: 24 バイト(x64)
dim st, 6 ; 4byte整数×6(構造体サイズ 24 / 4 切り上げ)
; HLISS : WORD (+0, 2byte) wpoke st,0,値 / 値 = wpeek(st,0)
; Reserved : WORD (+2, 2byte) wpoke st,2,値 / 値 = wpeek(st,2)
; StartPTM : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; EndPTM : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; StartX : WORD (+12, 2byte) wpoke st,12,値 / 値 = wpeek(st,12)
; StartY : WORD (+14, 2byte) wpoke st,14,値 / 値 = wpeek(st,14)
; StopX : WORD (+16, 2byte) wpoke st,16,値 / 値 = wpeek(st,16)
; StopY : WORD (+18, 2byte) wpoke st,18,値 / 値 = wpeek(st,18)
; ColCon : AM_COLCON (+20, 4byte) varptr(st)+20 を基点に操作(4byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global AM_COLCON
#field byte _bitfield1
#field byte _bitfield2
#field byte _bitfield3
#field byte _bitfield4
#endstruct
#defstruct global AM_PROPERTY_SPHLI
#field short HLISS
#field short Reserved
#field int StartPTM
#field int EndPTM
#field short StartX
#field short StartY
#field short StopX
#field short StopY
#field AM_COLCON ColCon
#endstruct
stdim st, AM_PROPERTY_SPHLI ; NSTRUCT 変数を確保
st->HLISS = 100
mes "HLISS=" + st->HLISS