Win32 API 日本語リファレンス
ホームGraphics.Dxgi.Common › DXGI_GAMMA_CONTROL_CAPABILITIES

DXGI_GAMMA_CONTROL_CAPABILITIES

構造体
サイズx64: 4116 バイト / x86: 4116 バイト

サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。

フィールド

フィールドサイズx64x86説明
ScaleAndOffsetSupportedBOOL4+0+0スケールとオフセットの調整に対応するかを示すブール値。
MaxConvertedValueFLOAT4+4+4変換後に取り得る最大値。
MinConvertedValueFLOAT4+8+8変換後に取り得る最小値。
NumGammaControlPointsDWORD4+12+12ガンマ制御点の数。
ControlPointPositionsFLOAT4100+16+16各ガンマ制御点の位置を表す配列。

各言語での定義

#include <windows.h>

// DXGI_GAMMA_CONTROL_CAPABILITIES  (x64 4116 / x86 4116 バイト)
typedef struct DXGI_GAMMA_CONTROL_CAPABILITIES {
    BOOL ScaleAndOffsetSupported;
    FLOAT MaxConvertedValue;
    FLOAT MinConvertedValue;
    DWORD NumGammaControlPoints;
    FLOAT ControlPointPositions[1025];
} DXGI_GAMMA_CONTROL_CAPABILITIES;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DXGI_GAMMA_CONTROL_CAPABILITIES
{
    [MarshalAs(UnmanagedType.Bool)] public bool ScaleAndOffsetSupported;
    public float MaxConvertedValue;
    public float MinConvertedValue;
    public uint NumGammaControlPoints;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1025)] public float[] ControlPointPositions;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DXGI_GAMMA_CONTROL_CAPABILITIES
    <MarshalAs(UnmanagedType.Bool)> Public ScaleAndOffsetSupported As Boolean
    Public MaxConvertedValue As Single
    Public MinConvertedValue As Single
    Public NumGammaControlPoints As UInteger
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=1025)> Public ControlPointPositions() As Single
End Structure
import ctypes
from ctypes import wintypes

class DXGI_GAMMA_CONTROL_CAPABILITIES(ctypes.Structure):
    _fields_ = [
        ("ScaleAndOffsetSupported", wintypes.BOOL),
        ("MaxConvertedValue", ctypes.c_float),
        ("MinConvertedValue", ctypes.c_float),
        ("NumGammaControlPoints", wintypes.DWORD),
        ("ControlPointPositions", ctypes.c_float * 1025),
    ]
#[repr(C)]
pub struct DXGI_GAMMA_CONTROL_CAPABILITIES {
    pub ScaleAndOffsetSupported: i32,
    pub MaxConvertedValue: f32,
    pub MinConvertedValue: f32,
    pub NumGammaControlPoints: u32,
    pub ControlPointPositions: [f32; 1025],
}
import "golang.org/x/sys/windows"

type DXGI_GAMMA_CONTROL_CAPABILITIES struct {
	ScaleAndOffsetSupported int32
	MaxConvertedValue float32
	MinConvertedValue float32
	NumGammaControlPoints uint32
	ControlPointPositions [1025]float32
}
type
  DXGI_GAMMA_CONTROL_CAPABILITIES = record
    ScaleAndOffsetSupported: BOOL;
    MaxConvertedValue: Single;
    MinConvertedValue: Single;
    NumGammaControlPoints: DWORD;
    ControlPointPositions: array[0..1024] of Single;
  end;
const DXGI_GAMMA_CONTROL_CAPABILITIES = extern struct {
    ScaleAndOffsetSupported: i32,
    MaxConvertedValue: f32,
    MinConvertedValue: f32,
    NumGammaControlPoints: u32,
    ControlPointPositions: [1025]f32,
};
type
  DXGI_GAMMA_CONTROL_CAPABILITIES {.bycopy.} = object
    ScaleAndOffsetSupported: int32
    MaxConvertedValue: float32
    MinConvertedValue: float32
    NumGammaControlPoints: uint32
    ControlPointPositions: array[1025, float32]
struct DXGI_GAMMA_CONTROL_CAPABILITIES
{
    int ScaleAndOffsetSupported;
    float MaxConvertedValue;
    float MinConvertedValue;
    uint NumGammaControlPoints;
    float[1025] ControlPointPositions;
}

HSP用 定義

HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; DXGI_GAMMA_CONTROL_CAPABILITIES サイズ: 4116 バイト(x64)
dim st, 1029    ; 4byte整数×1029(構造体サイズ 4116 / 4 切り上げ)
; ScaleAndOffsetSupported : BOOL (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; MaxConvertedValue : FLOAT (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; MinConvertedValue : FLOAT (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; NumGammaControlPoints : DWORD (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; ControlPointPositions : FLOAT (+16, 4100byte)  varptr(st)+16 を基点に操作(4100byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global DXGI_GAMMA_CONTROL_CAPABILITIES
    #field bool ScaleAndOffsetSupported
    #field float MaxConvertedValue
    #field float MinConvertedValue
    #field int NumGammaControlPoints
    #field float ControlPointPositions 1025
#endstruct

stdim st, DXGI_GAMMA_CONTROL_CAPABILITIES        ; NSTRUCT 変数を確保
st->ScaleAndOffsetSupported = 100
mes "ScaleAndOffsetSupported=" + st->ScaleAndOffsetSupported