Source code for bethesda_structs.contrib.dds

# Copyright (c) 2018 Stephen Bunn <stephen@bunn.io>
# MIT License <https://choosealicense.com/licenses/mit/>

from enum import IntEnum

from construct import Enum, Array, Const, Struct, Default, Int32ul, FlagsEnum


[docs]def MAKEFOURCC(ch0: str, ch1: str, ch2: str, ch3: str) -> int: """Implementation of Window's `MAKEFOURCC`. This is simply just returning the bytes of the joined characters. `MAKEFOURCC(*"DX10")` can also be implemented by `Bytes(b"DX10")`. Args: ch0 (str): First char ch1 (str): Second char ch2 (str): Third char ch3 (str): Fourth char Returns: int: The integer representation of given characters. **Reference**: `Microsoft <https://goo.gl/bjtMFA>`__ """ return (ord(ch0) << 0) | (ord(ch1) << 8) | (ord(ch2) << 16) | (ord(ch3) << 24)
[docs]class DXGIFormats(IntEnum): """The format enum for DXGI files. """ DXGI_FORMAT_UNKNOWN = 0 DXGI_FORMAT_R32G32B32A32_TYPELESS = 1 DXGI_FORMAT_R32G32B32A32_FLOAT = 2 DXGI_FORMAT_R32G32B32A32_UINT = 3 DXGI_FORMAT_R32G32B32A32_SINT = 4 DXGI_FORMAT_R32G32B32_TYPELESS = 5 DXGI_FORMAT_R32G32B32_FLOAT = 6 DXGI_FORMAT_R32G32B32_UINT = 7 DXGI_FORMAT_R32G32B32_SINT = 8 DXGI_FORMAT_R16G16B16A16_TYPELESS = 9 DXGI_FORMAT_R16G16B16A16_FLOAT = 10 DXGI_FORMAT_R16G16B16A16_UNORM = 11 DXGI_FORMAT_R16G16B16A16_UINT = 12 DXGI_FORMAT_R16G16B16A16_SNORM = 13 DXGI_FORMAT_R16G16B16A16_SINT = 14 DXGI_FORMAT_R32G32_TYPELESS = 15 DXGI_FORMAT_R32G32_FLOAT = 16 DXGI_FORMAT_R32G32_UINT = 17 DXGI_FORMAT_R32G32_SINT = 18 DXGI_FORMAT_R32G8X24_TYPELESS = 19 DXGI_FORMAT_D32_FLOAT_S8X24_UINT = 20 DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS = 21 DXGI_FORMAT_X32_TYPELESS_G8X24_UINT = 22 DXGI_FORMAT_R10G10B10A2_TYPELESS = 23 DXGI_FORMAT_R10G10B10A2_UNORM = 24 DXGI_FORMAT_R10G10B10A2_UINT = 25 DXGI_FORMAT_R11G11B10_FLOAT = 26 DXGI_FORMAT_R8G8B8A8_TYPELESS = 27 DXGI_FORMAT_R8G8B8A8_UNORM = 28 DXGI_FORMAT_R8G8B8A8_UNORM_SRGB = 29 DXGI_FORMAT_R8G8B8A8_UINT = 30 DXGI_FORMAT_R8G8B8A8_SNORM = 31 DXGI_FORMAT_R8G8B8A8_SINT = 32 DXGI_FORMAT_R16G16_TYPELESS = 33 DXGI_FORMAT_R16G16_FLOAT = 34 DXGI_FORMAT_R16G16_UNORM = 35 DXGI_FORMAT_R16G16_UINT = 36 DXGI_FORMAT_R16G16_SNORM = 37 DXGI_FORMAT_R16G16_SINT = 38 DXGI_FORMAT_R32_TYPELESS = 39 DXGI_FORMAT_D32_FLOAT = 40 DXGI_FORMAT_R32_FLOAT = 41 DXGI_FORMAT_R32_UINT = 42 DXGI_FORMAT_R32_SINT = 43 DXGI_FORMAT_R24G8_TYPELESS = 44 DXGI_FORMAT_D24_UNORM_S8_UINT = 45 DXGI_FORMAT_R24_UNORM_X8_TYPELESS = 46 DXGI_FORMAT_X24_TYPELESS_G8_UINT = 47 DXGI_FORMAT_R8G8_TYPELESS = 48 DXGI_FORMAT_R8G8_UNORM = 49 DXGI_FORMAT_R8G8_UINT = 50 DXGI_FORMAT_R8G8_SNORM = 51 DXGI_FORMAT_R8G8_SINT = 52 DXGI_FORMAT_R16_TYPELESS = 53 DXGI_FORMAT_R16_FLOAT = 54 DXGI_FORMAT_D16_UNORM = 55 DXGI_FORMAT_R16_UNORM = 56 DXGI_FORMAT_R16_UINT = 57 DXGI_FORMAT_R16_SNORM = 58 DXGI_FORMAT_R16_SINT = 59 DXGI_FORMAT_R8_TYPELESS = 60 DXGI_FORMAT_R8_UNORM = 61 DXGI_FORMAT_R8_UINT = 62 DXGI_FORMAT_R8_SNORM = 63 DXGI_FORMAT_R8_SINT = 64 DXGI_FORMAT_A8_UNORM = 65 DXGI_FORMAT_R1_UNORM = 66 DXGI_FORMAT_R9G9B9E5_SHAREDEXP = 67 DXGI_FORMAT_R8G8_B8G8_UNORM = 68 DXGI_FORMAT_G8R8_G8B8_UNORM = 69 DXGI_FORMAT_BC1_TYPELESS = 70 DXGI_FORMAT_BC1_UNORM = 71 DXGI_FORMAT_BC1_UNORM_SRGB = 72 DXGI_FORMAT_BC2_TYPELESS = 73 DXGI_FORMAT_BC2_UNORM = 74 DXGI_FORMAT_BC2_UNORM_SRGB = 75 DXGI_FORMAT_BC3_TYPELESS = 76 DXGI_FORMAT_BC3_UNORM = 77 DXGI_FORMAT_BC3_UNORM_SRGB = 78 DXGI_FORMAT_BC4_TYPELESS = 79 DXGI_FORMAT_BC4_UNORM = 80 DXGI_FORMAT_BC4_SNORM = 81 DXGI_FORMAT_BC5_TYPELESS = 82 DXGI_FORMAT_BC5_UNORM = 83 DXGI_FORMAT_BC5_SNORM = 84 DXGI_FORMAT_B5G6R5_UNORM = 85 DXGI_FORMAT_B5G5R5A1_UNORM = 86 DXGI_FORMAT_B8G8R8A8_UNORM = 87 DXGI_FORMAT_B8G8R8X8_UNORM = 88 DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM = 89 DXGI_FORMAT_B8G8R8A8_TYPELESS = 90 DXGI_FORMAT_B8G8R8A8_UNORM_SRGB = 91 DXGI_FORMAT_B8G8R8X8_TYPELESS = 92 DXGI_FORMAT_B8G8R8X8_UNORM_SRGB = 93 DXGI_FORMAT_BC6H_TYPELESS = 94 DXGI_FORMAT_BC6H_UF16 = 95 DXGI_FORMAT_BC6H_SF16 = 96 DXGI_FORMAT_BC7_TYPELESS = 97 DXGI_FORMAT_BC7_UNORM = 98 DXGI_FORMAT_BC7_UNORM_SRGB = 99 DXGI_FORMAT_AYUV = 100 DXGI_FORMAT_Y410 = 101 DXGI_FORMAT_Y416 = 102 DXGI_FORMAT_NV12 = 103 DXGI_FORMAT_P010 = 104 DXGI_FORMAT_P016 = 105 DXGI_FORMAT_420_OPAQUE = 106 DXGI_FORMAT_YUY2 = 107 DXGI_FORMAT_Y210 = 108 DXGI_FORMAT_Y216 = 109 DXGI_FORMAT_NV11 = 110 DXGI_FORMAT_AI44 = 111 DXGI_FORMAT_IA44 = 112 DXGI_FORMAT_P8 = 113 DXGI_FORMAT_A8P8 = 114 DXGI_FORMAT_B4G4R4A4_UNORM = 115 DXGI_FORMAT_P208 = 130 DXGI_FORMAT_V208 = 131 DXGI_FORMAT_V408 = 132 DXGI_FORMAT_FORCE_UINT = 0xFFFFFFFF
[docs]class D3D10ResourceDimension(IntEnum): """The dimension enum for D3D10 resources. """ D3D10_RESOURCE_DIMENSION_UNKNOWN = 0 D3D10_RESOURCE_DIMENSION_BUFFER = 1 D3D10_RESOURCE_DIMENSION_TEXTURE1D = 2 D3D10_RESOURCE_DIMENSION_TEXTURE2D = 3 D3D10_RESOURCE_DIMENSION_TEXTURE3D = 4
[docs]class D3D10ResourceMiscFlag(IntEnum): """The miscellaneous flags for D3D10 resources. """ D3D10_RESOURCE_MISC_GENERATE_MIPS = 0x00000001 D3D10_RESOURCE_MISC_SHARED = 0x00000002 D3D10_RESOURCE_MISC_TEXTURECUBE = 0x00000004 D3D10_RESOURCE_MISC_SHARED_KEYEDMUTEX = 0x00000010 D3D10_RESOURCE_MISC_GDI_COMPATIBLE = 0x00000020
DXGI_FORMAT = Enum(Int32ul, DXGIFormats) """The ``DXGI_FORMAT`` structure. **Reference**: `Microsoft <https://goo.gl/zast7X>`__ """ D3D10_RESOURCE_DIMENSION = Enum(Int32ul, D3D10ResourceDimension) """The ``D3D10_RESOURCE_DIMENSION`` structure. **Reference**: `Microsoft <https://goo.gl/ijDpqi>`__ """ D3D10_RESOURCE_MISC_FLAG = FlagsEnum(Int32ul, D3D10ResourceMiscFlag) """The ``D3D10_RESOURCE_MISC_FLAG`` structure. **Reference**: `Microsoft <https://goo.gl/MazAYd>`__ """ DDS_PIXELFORMAT = Struct( "dwSize" / Const(32, Int32ul), "dwFlags" / Default( FlagsEnum( Int32ul, DDPF_ALPHAPIXELS=0x00000001, DDPF_ALPHA=0x00000002, DDPF_FOURCC=0x00000004, DDPF_RBG=0x00000040, DDPF_YUV=0x00000200, DDPF_LUMINANCE=0x00020000, ), 0, ), "dwFourCC" / Default(Int32ul, 0), "dwRGBBitCount" / Default(Int32ul, 0), "dwRBitMask" / Default(Int32ul, 0), "dwGBitMask" / Default(Int32ul, 0), "dwBBitMask" / Default(Int32ul, 0), "dwABitMask" / Default(Int32ul, 0), ) """The ``DDS_PIXELFORMAT`` structure. **Reference**: `Microsoft <https://goo.gl/1N5KYC>`__ """ DDS_HEADER = Struct( "dwSize" / Const(124, Int32ul), "dwFlags" / FlagsEnum( Int32ul, DDSD_CAPS=0x00000001, DDSD_HEIGHT=0x00000002, DDSD_WIDTH=0x00000004, DDSD_PITCH=0x00000008, DDSD_PIXELFORMAT=0x00001000, DDSD_MIPMAPCOUNT=0x00020000, DDSD_LINEARSIZE=0x00080000, DDSD_DEPTH=0x00800000, ), "dwHeight" / Int32ul, "dwWidth" / Int32ul, "dwPitchOrLinearSize" / Int32ul, "dwDepth" / Default(Int32ul, 0), "dwMipMapCount" / Default(Int32ul, 0), "dwReserved1" / Default(Array(11, Int32ul), [0] * 11), "ddspf" / DDS_PIXELFORMAT, "dwCaps" / FlagsEnum( Int32ul, DDSCAPS_COMPLEX=0x00000008, DDSCAPS_TEXTURE=0x00001000, DDSCAPS_MIPMAP=0x00400000, ), "dwCaps2" / Default( FlagsEnum( Int32ul, DDSCAPS2_CUBEMAP=0x00000200, DDSCAPS2_CUBEMAP_POSITIVEX=0x00000400, DDSCAPS2_CUBEMAP_NEGATIVEX=0x00000800, DDSCAPS2_CUBEMAP_POSITIVEY=0x00001000, DDSCAPS2_CUBEMAP_NEGATIVEY=0x00002000, DDSCAPS2_CUBEMAP_POSITIVEZ=0x00004000, DDSCAPS2_CUBEMAP_NEGATIVEZ=0x00008000, DDSCAPS2_VOLUME=0x00200000, ), 0, ), "dwCaps3" / Default(Int32ul, 0), "dwCaps4" / Default(Int32ul, 0), "dwReserved2" / Default(Int32ul, 0), ) """The ``DDS_HEADER`` structure. **Reference**: `Microsoft <https://goo.gl/mJzLkj>`__ """ DDS_HEADER_DX10 = Struct( "dxgiFormat" / Default(DXGI_FORMAT, 0), "resourceDimension" / Default(D3D10_RESOURCE_DIMENSION, 0), "miscFlag" / Default(D3D10_RESOURCE_MISC_FLAG, 0), "arraySize" / Default(Int32ul, 0), "miscFlags2" / Default( FlagsEnum( Int32ul, DDS_ALPHA_MODE_UNKNOWN=0x00000000, DDS_ALPHA_MODE_STRAIGHT=0x00000001, DDS_ALPHA_MODE_PREMULTIPLIED=0x00000002, DDS_ALPHA_MODE_OPAQUE=0x00000003, DDS_ALPHA_MODE_CUSTOM=0x00000004, ), 0, ), ) """The ``DDS_HEADER_DX10`` structure. **Reference**: `Microsoft <https://goo.gl/1RM6MV>`__ """