1 /** 2 * Copyright (c) 2006-2019 LOVE Development Team 3 * 4 * This software is provided 'as-is', without any express or implied 5 * warranty. In no event will the authors be held liable for any damages 6 * arising from the use of this software. 7 * 8 * Permission is granted to anyone to use this software for any purpose, 9 * including commercial applications, and to alter it and redistribute it 10 * freely, subject to the following restrictions: 11 * 12 * 1. The origin of this software must not be misrepresented; you must not 13 * claim that you wrote the original software. If you use this software 14 * in a product, an acknowledgment in the product documentation would be 15 * appreciated but is not required. 16 * 2. Altered source versions must be plainly marked as such, and must not be 17 * misrepresented as being the original software. 18 * 3. This notice may not be removed or altered from any source distribution. 19 **/ 20 21 #pragma once 22 23 #include "stddef.h" 24 25 namespace love 26 { 27 28 enum PixelFormat 29 { 30 PIXELFORMAT_UNKNOWN, 31 32 // these are converted to an actual format by love 33 PIXELFORMAT_NORMAL, 34 PIXELFORMAT_HDR, 35 36 // "regular" formats 37 PIXELFORMAT_R8, 38 PIXELFORMAT_RG8, 39 PIXELFORMAT_RGBA8, 40 PIXELFORMAT_sRGBA8, 41 PIXELFORMAT_R16, 42 PIXELFORMAT_RG16, 43 PIXELFORMAT_RGBA16, 44 PIXELFORMAT_R16F, 45 PIXELFORMAT_RG16F, 46 PIXELFORMAT_RGBA16F, 47 PIXELFORMAT_R32F, 48 PIXELFORMAT_RG32F, 49 PIXELFORMAT_RGBA32F, 50 51 PIXELFORMAT_LA8, // Same as RG8, but accessed as (L, L, L, A) 52 53 // packed formats 54 PIXELFORMAT_RGBA4, // LSB->MSB: [a, b, g, r] 55 PIXELFORMAT_RGB5A1, // LSB->MSB: [a, b, g, r] 56 PIXELFORMAT_RGB565, // LSB->MSB: [b, g, r] 57 PIXELFORMAT_RGB10A2, // LSB->MSB: [r, g, b, a] 58 PIXELFORMAT_RG11B10F, // LSB->MSB: [r, g, b] 59 60 // depth/stencil formats 61 PIXELFORMAT_STENCIL8, 62 PIXELFORMAT_DEPTH16, 63 PIXELFORMAT_DEPTH24, 64 PIXELFORMAT_DEPTH32F, 65 PIXELFORMAT_DEPTH24_STENCIL8, 66 PIXELFORMAT_DEPTH32F_STENCIL8, 67 68 // compressed formats 69 PIXELFORMAT_DXT1, 70 PIXELFORMAT_DXT3, 71 PIXELFORMAT_DXT5, 72 PIXELFORMAT_BC4, 73 PIXELFORMAT_BC4s, 74 PIXELFORMAT_BC5, 75 PIXELFORMAT_BC5s, 76 PIXELFORMAT_BC6H, 77 PIXELFORMAT_BC6Hs, 78 PIXELFORMAT_BC7, 79 PIXELFORMAT_PVR1_RGB2, 80 PIXELFORMAT_PVR1_RGB4, 81 PIXELFORMAT_PVR1_RGBA2, 82 PIXELFORMAT_PVR1_RGBA4, 83 PIXELFORMAT_ETC1, 84 PIXELFORMAT_ETC2_RGB, 85 PIXELFORMAT_ETC2_RGBA, 86 PIXELFORMAT_ETC2_RGBA1, 87 PIXELFORMAT_EAC_R, 88 PIXELFORMAT_EAC_Rs, 89 PIXELFORMAT_EAC_RG, 90 PIXELFORMAT_EAC_RGs, 91 PIXELFORMAT_ASTC_4x4, 92 PIXELFORMAT_ASTC_5x4, 93 PIXELFORMAT_ASTC_5x5, 94 PIXELFORMAT_ASTC_6x5, 95 PIXELFORMAT_ASTC_6x6, 96 PIXELFORMAT_ASTC_8x5, 97 PIXELFORMAT_ASTC_8x6, 98 PIXELFORMAT_ASTC_8x8, 99 PIXELFORMAT_ASTC_10x5, 100 PIXELFORMAT_ASTC_10x6, 101 PIXELFORMAT_ASTC_10x8, 102 PIXELFORMAT_ASTC_10x10, 103 PIXELFORMAT_ASTC_12x10, 104 PIXELFORMAT_ASTC_12x12, 105 106 PIXELFORMAT_MAX_ENUM 107 }; 108 109 bool getConstant(PixelFormat in, const char *&out); 110 bool getConstant(const char *in, PixelFormat &out); 111 112 /** 113 * Gets whether the specified pixel format is a compressed type. 114 **/ 115 bool isPixelFormatCompressed(PixelFormat format); 116 117 /** 118 * Gets whether the specified pixel format is a depth or stencil type. 119 **/ 120 bool isPixelFormatDepthStencil(PixelFormat format); 121 122 /** 123 * Gets whether the specified pixel format is a depth type. 124 **/ 125 bool isPixelFormatDepth(PixelFormat format); 126 127 /** 128 * Gets whether the specified pixel format is a stencil type. 129 **/ 130 bool isPixelFormatStencil(PixelFormat format); 131 132 /** 133 * Gets the size in bytes of the specified pixel format. 134 * NOTE: Currently returns 0 for compressed formats. 135 **/ 136 size_t getPixelFormatSize(PixelFormat format); 137 138 /** 139 * Gets the number of color components in the given pixel format. 140 **/ 141 int getPixelFormatColorComponents(PixelFormat format); 142 143 } // love 144