mirror of
https://github.com/GerbilSoft/rom-properties.git
synced 2025-06-19 03:55:43 -04:00
Rework CONSTEXPR_IF_MSVC2022 into CONSTEXPR_MULTILINE and CONSTEXPR_MULTILINE_NO_MSVC.
gcc-4.9 on Debian 8 doesn't support multi-line constexpr functions. CONSTEXPR_MULTILINE enables constexpr for MSVC 2022 and gcc-5, and later versions. CONSTEXPR_MULTILINE_NO_MSVC enables constexpr for gcc-5 and later, but not MSVC. Needed for functions that use intrinsics, which (still) aren't marked as constexpr on MSVC.
This commit is contained in:
parent
44eba93a3e
commit
46c83d92c1
@ -84,8 +84,19 @@ typedef int64_t off64_t;
|
||||
#endif
|
||||
|
||||
// MSVC prior to MSVC 2022 does not support constexpr on multi-line functions.
|
||||
#if !defined(__cplusplus) || (defined(_MSC_VER) && _MSC_VER < 1930)
|
||||
# define CONSTEXPR_IF_MSVC2022
|
||||
// gcc doesn't support constexpr on multi-line functions before gcc-5. (requires C++14)
|
||||
#if !defined(__cplusplus)
|
||||
# define CONSTEXPR_MULTILINE
|
||||
#elif defined(_MSC_VER) && _MSC_VER < 1930
|
||||
# define CONSTEXPR_MULTILINE
|
||||
#elif defined(__GNUC__) && !defined(__clang__) && (__GNUC__ < 5 || __cplusplus < 201402L)
|
||||
# define CONSTEXPR_MULTILINE
|
||||
#else
|
||||
# define CONSTEXPR_IF_MSVC2022 constexpr
|
||||
# define CONSTEXPR_MULTILINE constexpr
|
||||
#endif
|
||||
|
||||
#ifdef _MSC_VER
|
||||
# define CONSTEXPR_MULTILINE_NO_MSVC
|
||||
#else /* !_MSC_VER */
|
||||
# define CONSTEXPR_MULTILINE_NO_MSVC CONSTEXPR_MULTILINE
|
||||
#endif
|
||||
|
@ -72,7 +72,7 @@ public:
|
||||
* @return PDP-swapped DWORD
|
||||
*/
|
||||
// FIXME: be32_to_cpu() and __swab16() are not constexpr on MSVC 2022.
|
||||
static inline CONSTEXPR_NO_MSVC uint32_t PDP_SWAP(uint32_t x)
|
||||
static inline CONSTEXPR_MULTILINE_NO_MSVC uint32_t PDP_SWAP(uint32_t x)
|
||||
{
|
||||
union {
|
||||
uint32_t d;
|
||||
|
@ -42,6 +42,20 @@
|
||||
# endif /* !__cplusplus */
|
||||
#endif /* !CONSTEXPR */
|
||||
|
||||
// MSVC prior to MSVC 2022 does not support constexpr on multi-line functions.
|
||||
// gcc doesn't support constexpr on multi-line functions before gcc-5. (requires C++14)
|
||||
#ifndef CONSTEXPR_MULTILINE
|
||||
# if !defined(__cplusplus)
|
||||
# define CONSTEXPR_MULTILINE
|
||||
# elif defined(_MSC_VER) && _MSC_VER < 1930
|
||||
# define CONSTEXPR_MULTILINE
|
||||
# elif defined(__GNUC__) && !defined(__clang__) && (__GNUC__ < 5 || __cplusplus < 201402L)
|
||||
# define CONSTEXPR_MULTILINE
|
||||
# else
|
||||
# define CONSTEXPR_MULTILINE constexpr
|
||||
# endif
|
||||
#endif /* !CONSTEXPR_MULTILINE */
|
||||
|
||||
#if defined(RP_CPU_I386) || defined(RP_CPU_AMD64)
|
||||
# include "librpcpuid/cpuflags_x86.h"
|
||||
/* MSVC does not support MMX intrinsics in 64-bit builds. */
|
||||
@ -124,12 +138,8 @@
|
||||
* @param f Float to byteswap
|
||||
* @return Byteswapped float
|
||||
*/
|
||||
ATTR_CONST
|
||||
#ifndef _MSC_VER
|
||||
static inline CONSTEXPR float __swabf(float f)
|
||||
#else /* _MSC_VER */
|
||||
ATTR_CONST CONSTEXPR_MULTILINE
|
||||
static inline float __swabf(float f)
|
||||
#endif /* !_MSC_VER */
|
||||
{
|
||||
union {
|
||||
uint32_t u32;
|
||||
|
@ -50,7 +50,7 @@ static char lc_decimal[8];
|
||||
/** File size formatting **/
|
||||
|
||||
template<typename T>
|
||||
static inline CONSTEXPR_IF_MSVC2022 int calc_frac_part_binary(T val, T mask)
|
||||
static inline CONSTEXPR_MULTILINE int calc_frac_part_binary(T val, T mask)
|
||||
{
|
||||
const float f = static_cast<float>(val & (mask - 1)) / static_cast<float>(mask);
|
||||
int frac_part = static_cast<int>(f * 1000.0f);
|
||||
@ -70,7 +70,7 @@ static inline CONSTEXPR_IF_MSVC2022 int calc_frac_part_binary(T val, T mask)
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
static inline CONSTEXPR_IF_MSVC2022 int calc_frac_part_decimal(T val, T divisor)
|
||||
static inline CONSTEXPR_MULTILINE int calc_frac_part_decimal(T val, T divisor)
|
||||
{
|
||||
const float f = static_cast<float>(val % divisor) / static_cast<float>(divisor);
|
||||
int frac_part = static_cast<int>(f * 1000.0f);
|
||||
|
@ -51,7 +51,7 @@ rp_image_ptr fromDreamcastVQ16(PixelFormat px_format,
|
||||
* @param width Texture width.
|
||||
* @return Number of palette entries.
|
||||
*/
|
||||
static inline CONSTEXPR_IF_MSVC2022 int calcDreamcastSmallVQPaletteEntries_NoMipmaps(int width)
|
||||
static inline CONSTEXPR_MULTILINE int calcDreamcastSmallVQPaletteEntries_NoMipmaps(int width)
|
||||
{
|
||||
if (width <= 16) {
|
||||
return 8*4;
|
||||
@ -70,7 +70,7 @@ static inline CONSTEXPR_IF_MSVC2022 int calcDreamcastSmallVQPaletteEntries_NoMip
|
||||
* @param width Texture width.
|
||||
* @return Number of palette entries.
|
||||
*/
|
||||
static inline CONSTEXPR_IF_MSVC2022 int calcDreamcastSmallVQPaletteEntries_WithMipmaps(int width)
|
||||
static inline CONSTEXPR_MULTILINE int calcDreamcastSmallVQPaletteEntries_WithMipmaps(int width)
|
||||
{
|
||||
if (width <= 16) {
|
||||
return 16*4;
|
||||
|
@ -285,7 +285,7 @@ struct ColorRGB {
|
||||
* @param color ColorRGB struct.
|
||||
* @return xRGB32 value. (Alpha channel set to 0xFF)
|
||||
*/
|
||||
static inline CONSTEXPR_IF_MSVC2022 uint32_t clamp_ColorRGB(ColorRGB color)
|
||||
static inline CONSTEXPR_MULTILINE uint32_t clamp_ColorRGB(ColorRGB color)
|
||||
{
|
||||
uint32_t xrgb32 = 0;
|
||||
if (color.B > 255) {
|
||||
|
@ -2,7 +2,7 @@
|
||||
* ROM Properties Page shell extension. (librptexture) *
|
||||
* PixelConversion.hpp: Pixel conversion inline functions. *
|
||||
* *
|
||||
* Copyright (c) 2016-2024 by David Korth. *
|
||||
* Copyright (c) 2016-2025 by David Korth. *
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later *
|
||||
***************************************************************************/
|
||||
|
||||
@ -62,7 +62,7 @@ static constexpr std::array<uint8_t, 8> c3_lookup = {{
|
||||
* @param px16 RGB565 pixel
|
||||
* @return ARGB32 pixel
|
||||
*/
|
||||
static inline CONSTEXPR_IF_MSVC2022 uint32_t RGB565_to_ARGB32(uint16_t px16)
|
||||
static inline CONSTEXPR_MULTILINE uint32_t RGB565_to_ARGB32(uint16_t px16)
|
||||
{
|
||||
// RGB565: RRRRRGGG GGGBBBBB
|
||||
// ARGB32: AAAAAAAA RRRRRRRR GGGGGGGG BBBBBBBB
|
||||
@ -80,7 +80,7 @@ static inline CONSTEXPR_IF_MSVC2022 uint32_t RGB565_to_ARGB32(uint16_t px16)
|
||||
* @param px16 BGR565 pixel
|
||||
* @return ARGB32 pixel
|
||||
*/
|
||||
static inline CONSTEXPR_IF_MSVC2022 uint32_t BGR565_to_ARGB32(uint16_t px16)
|
||||
static inline CONSTEXPR_MULTILINE uint32_t BGR565_to_ARGB32(uint16_t px16)
|
||||
{
|
||||
// RGB565: BBBBBGGG GGGRRRRR
|
||||
// ARGB32: AAAAAAAA RRRRRRRR GGGGGGGG BBBBBBBB
|
||||
@ -98,7 +98,7 @@ static inline CONSTEXPR_IF_MSVC2022 uint32_t BGR565_to_ARGB32(uint16_t px16)
|
||||
* @param px16 ARGB1555 pixel
|
||||
* @return ARGB32 pixel
|
||||
*/
|
||||
static inline CONSTEXPR_IF_MSVC2022 uint32_t ARGB1555_to_ARGB32(uint16_t px16)
|
||||
static inline CONSTEXPR_MULTILINE uint32_t ARGB1555_to_ARGB32(uint16_t px16)
|
||||
{
|
||||
// ARGB1555: ARRRRRGG GGGBBBBB
|
||||
// ARGB32: AAAAAAAA RRRRRRRR GGGGGGGG BBBBBBBB
|
||||
@ -118,7 +118,7 @@ static inline CONSTEXPR_IF_MSVC2022 uint32_t ARGB1555_to_ARGB32(uint16_t px16)
|
||||
* @param px16 ABGR1555 pixel
|
||||
* @return ARGB32 pixel
|
||||
*/
|
||||
static inline CONSTEXPR_IF_MSVC2022 uint32_t ABGR1555_to_ARGB32(uint16_t px16)
|
||||
static inline CONSTEXPR_MULTILINE uint32_t ABGR1555_to_ARGB32(uint16_t px16)
|
||||
{
|
||||
// ABGR1555: ABBBBBGG GGGRRRRR
|
||||
// ARGB32: AAAAAAAA RRRRRRRR GGGGGGGG BBBBBBBB
|
||||
@ -138,7 +138,7 @@ static inline CONSTEXPR_IF_MSVC2022 uint32_t ABGR1555_to_ARGB32(uint16_t px16)
|
||||
* @param px16 RGBA5551 pixel
|
||||
* @return ARGB32 pixel
|
||||
*/
|
||||
static inline CONSTEXPR_IF_MSVC2022 uint32_t RGBA5551_to_ARGB32(uint16_t px16)
|
||||
static inline CONSTEXPR_MULTILINE uint32_t RGBA5551_to_ARGB32(uint16_t px16)
|
||||
{
|
||||
// RGBA5551: RRRRRGGG GGBBBBBA
|
||||
// ARGB32: AAAAAAAA RRRRRRRR GGGGGGGG BBBBBBBB
|
||||
@ -158,7 +158,7 @@ static inline CONSTEXPR_IF_MSVC2022 uint32_t RGBA5551_to_ARGB32(uint16_t px16)
|
||||
* @param px16 BGRA5551 pixel
|
||||
* @return ARGB32 pixel
|
||||
*/
|
||||
static inline CONSTEXPR_IF_MSVC2022 uint32_t BGRA5551_to_ARGB32(uint16_t px16)
|
||||
static inline CONSTEXPR_MULTILINE uint32_t BGRA5551_to_ARGB32(uint16_t px16)
|
||||
{
|
||||
// BGRA5551: BBBBBGGG GGRRRRRA
|
||||
// ARGB32: AAAAAAAA RRRRRRRR GGGGGGGG BBBBBBBB
|
||||
@ -178,7 +178,7 @@ static inline CONSTEXPR_IF_MSVC2022 uint32_t BGRA5551_to_ARGB32(uint16_t px16)
|
||||
* @param px16 ARGB4444 pixel
|
||||
* @return ARGB32 pixel
|
||||
*/
|
||||
static inline CONSTEXPR_IF_MSVC2022 uint32_t ARGB4444_to_ARGB32(uint16_t px16)
|
||||
static inline CONSTEXPR_MULTILINE uint32_t ARGB4444_to_ARGB32(uint16_t px16)
|
||||
{
|
||||
// ARGB4444: AAAARRRR GGGGBBBB
|
||||
// ARGB32: AAAAAAAA RRRRRRRR GGGGGGGG BBBBBBBB
|
||||
@ -195,7 +195,7 @@ static inline CONSTEXPR_IF_MSVC2022 uint32_t ARGB4444_to_ARGB32(uint16_t px16)
|
||||
* @param px16 ABGR4444 pixel
|
||||
* @return ARGB32 pixel
|
||||
*/
|
||||
static inline CONSTEXPR_IF_MSVC2022 uint32_t ABGR4444_to_ARGB32(uint16_t px16)
|
||||
static inline CONSTEXPR_MULTILINE uint32_t ABGR4444_to_ARGB32(uint16_t px16)
|
||||
{
|
||||
// ARGB4444: AAAABBBB GGGGRRRR
|
||||
// ARGB32: AAAAAAAA RRRRRRRR GGGGGGGG BBBBBBBB
|
||||
@ -212,7 +212,7 @@ static inline CONSTEXPR_IF_MSVC2022 uint32_t ABGR4444_to_ARGB32(uint16_t px16)
|
||||
* @param px16 RGBA4444 pixel
|
||||
* @return ARGB32 pixel
|
||||
*/
|
||||
static inline CONSTEXPR_IF_MSVC2022 uint32_t RGBA4444_to_ARGB32(uint16_t px16)
|
||||
static inline CONSTEXPR_MULTILINE uint32_t RGBA4444_to_ARGB32(uint16_t px16)
|
||||
{
|
||||
// RGBA4444: RRRRGGGG BBBBAAAA
|
||||
// ARGB32: AAAAAAAA RRRRRRRR GGGGGGGG BBBBBBBB
|
||||
@ -229,7 +229,7 @@ static inline CONSTEXPR_IF_MSVC2022 uint32_t RGBA4444_to_ARGB32(uint16_t px16)
|
||||
* @param px16 BGRA4444 pixel
|
||||
* @return ARGB32 pixel
|
||||
*/
|
||||
static inline CONSTEXPR_IF_MSVC2022 uint32_t BGRA4444_to_ARGB32(uint16_t px16)
|
||||
static inline CONSTEXPR_MULTILINE uint32_t BGRA4444_to_ARGB32(uint16_t px16)
|
||||
{
|
||||
// RGBA4444: BBBBGGGG RRRRAAAA
|
||||
// ARGB32: AAAAAAAA RRRRRRRR GGGGGGGG BBBBBBBB
|
||||
@ -246,7 +246,7 @@ static inline CONSTEXPR_IF_MSVC2022 uint32_t BGRA4444_to_ARGB32(uint16_t px16)
|
||||
* @param px16 xRGB4444 pixel
|
||||
* @return ARGB32 pixel
|
||||
*/
|
||||
static inline CONSTEXPR_IF_MSVC2022 uint32_t xRGB4444_to_ARGB32(uint16_t px16)
|
||||
static inline CONSTEXPR_MULTILINE uint32_t xRGB4444_to_ARGB32(uint16_t px16)
|
||||
{
|
||||
// xRGB4444: xxxxRRRR GGGGBBBB
|
||||
// ARGB32: AAAAAAAA RRRRRRRR GGGGGGGG BBBBBBBB
|
||||
@ -263,7 +263,7 @@ static inline CONSTEXPR_IF_MSVC2022 uint32_t xRGB4444_to_ARGB32(uint16_t px16)
|
||||
* @param px16 xBGR4444 pixel
|
||||
* @return ARGB32 pixel
|
||||
*/
|
||||
static inline CONSTEXPR_IF_MSVC2022 uint32_t xBGR4444_to_ARGB32(uint16_t px16)
|
||||
static inline CONSTEXPR_MULTILINE uint32_t xBGR4444_to_ARGB32(uint16_t px16)
|
||||
{
|
||||
// xRGB4444: xxxxBBBB GGGGRRRR
|
||||
// ARGB32: AAAAAAAA RRRRRRRR GGGGGGGG BBBBBBBB
|
||||
@ -280,7 +280,7 @@ static inline CONSTEXPR_IF_MSVC2022 uint32_t xBGR4444_to_ARGB32(uint16_t px16)
|
||||
* @param px16 RGBx4444 pixel
|
||||
* @return ARGB32 pixel
|
||||
*/
|
||||
static inline CONSTEXPR_IF_MSVC2022 uint32_t RGBx4444_to_ARGB32(uint16_t px16)
|
||||
static inline CONSTEXPR_MULTILINE uint32_t RGBx4444_to_ARGB32(uint16_t px16)
|
||||
{
|
||||
// RGBx4444: RRRRGGGG BBBBxxxx
|
||||
// ARGB32: AAAAAAAA RRRRRRRR GGGGGGGG BBBBBBBB
|
||||
@ -297,7 +297,7 @@ static inline CONSTEXPR_IF_MSVC2022 uint32_t RGBx4444_to_ARGB32(uint16_t px16)
|
||||
* @param px16 BGRx4444 pixel
|
||||
* @return ARGB32 pixel
|
||||
*/
|
||||
static inline CONSTEXPR_IF_MSVC2022 uint32_t BGRx4444_to_ARGB32(uint16_t px16)
|
||||
static inline CONSTEXPR_MULTILINE uint32_t BGRx4444_to_ARGB32(uint16_t px16)
|
||||
{
|
||||
// RGBx4444: BBBBGGGG RRRRxxxx
|
||||
// ARGB32: AAAAAAAA RRRRRRRR GGGGGGGG BBBBBBBB
|
||||
@ -356,7 +356,7 @@ static inline CONSTEXPR_NO_MSVC uint32_t GR88_to_ARGB32(uint16_t px16)
|
||||
* @param px16 RGB5A3 pixel (Must be host-endian.)
|
||||
* @return ARGB32 pixel
|
||||
*/
|
||||
static inline CONSTEXPR_IF_MSVC2022 uint32_t RGB5A3_to_ARGB32(uint16_t px16)
|
||||
static inline CONSTEXPR_MULTILINE uint32_t RGB5A3_to_ARGB32(uint16_t px16)
|
||||
{
|
||||
// px16 high bit: if set, no alpha channel
|
||||
uint32_t px32 = (px16 & 0x8000U)
|
||||
@ -391,7 +391,7 @@ static inline CONSTEXPR_IF_MSVC2022 uint32_t RGB5A3_to_ARGB32(uint16_t px16)
|
||||
* @param px16 IA8 pixel
|
||||
* @return ARGB32 pixel
|
||||
*/
|
||||
static inline CONSTEXPR_IF_MSVC2022 uint32_t IA8_to_ARGB32(uint16_t px16)
|
||||
static inline CONSTEXPR_MULTILINE uint32_t IA8_to_ARGB32(uint16_t px16)
|
||||
{
|
||||
// FIXME: What's the component order of IA8?
|
||||
// Assuming I=MSB, A=LSB...
|
||||
@ -413,7 +413,7 @@ static inline CONSTEXPR_IF_MSVC2022 uint32_t IA8_to_ARGB32(uint16_t px16)
|
||||
* @param a4 A4 value
|
||||
* @return ARGB32 pixel
|
||||
*/
|
||||
static inline CONSTEXPR_IF_MSVC2022 uint32_t RGB565_A4_to_ARGB32(uint16_t px16, uint8_t a4)
|
||||
static inline CONSTEXPR_MULTILINE uint32_t RGB565_A4_to_ARGB32(uint16_t px16, uint8_t a4)
|
||||
{
|
||||
// RGB565: RRRRRGGG GGGBBBBB
|
||||
// ARGB32: AAAAAAAA RRRRRRRR GGGGGGGG BBBBBBBB
|
||||
@ -435,7 +435,7 @@ static inline CONSTEXPR_IF_MSVC2022 uint32_t RGB565_A4_to_ARGB32(uint16_t px16,
|
||||
* @param px16 BGR5A3 pixel (Must be host-endian.)
|
||||
* @return ARGB32 pixel
|
||||
*/
|
||||
static inline CONSTEXPR_IF_MSVC2022 uint32_t BGR5A3_to_ARGB32(uint16_t px16)
|
||||
static inline CONSTEXPR_MULTILINE uint32_t BGR5A3_to_ARGB32(uint16_t px16)
|
||||
{
|
||||
// px16 high bit: if set, no alpha channel
|
||||
uint32_t px32 = (px16 & 0x8000U)
|
||||
@ -472,7 +472,7 @@ static inline CONSTEXPR_IF_MSVC2022 uint32_t BGR5A3_to_ARGB32(uint16_t px16)
|
||||
* @param px16 RGB555 pixel
|
||||
* @return ARGB32 pixel
|
||||
*/
|
||||
static inline CONSTEXPR_IF_MSVC2022 uint32_t RGB555_to_ARGB32(uint16_t px16)
|
||||
static inline CONSTEXPR_MULTILINE uint32_t RGB555_to_ARGB32(uint16_t px16)
|
||||
{
|
||||
// RGB555: xRRRRRGG GGGBBBBB
|
||||
// ARGB32: AAAAAAAA RRRRRRRR GGGGGGGG BBBBBBBB
|
||||
@ -489,7 +489,7 @@ static inline CONSTEXPR_IF_MSVC2022 uint32_t RGB555_to_ARGB32(uint16_t px16)
|
||||
* @param px16 BGR555 pixel
|
||||
* @return ARGB32 pixel
|
||||
*/
|
||||
static inline CONSTEXPR_IF_MSVC2022 uint32_t BGR555_to_ARGB32(uint16_t px16)
|
||||
static inline CONSTEXPR_MULTILINE uint32_t BGR555_to_ARGB32(uint16_t px16)
|
||||
{
|
||||
// BGR555: xBBBBBGG GGGRRRRR
|
||||
// ARGB32: AAAAAAAA RRRRRRRR GGGGGGGG BBBBBBBB
|
||||
@ -603,7 +603,7 @@ static inline uint32_t RGB9_E5_to_ARGB32(uint32_t px32)
|
||||
* @param px16 BGR888_ABGR7888 pixel (Must be host-endian.)
|
||||
* @return ARGB32 pixel
|
||||
*/
|
||||
static inline CONSTEXPR_IF_MSVC2022 uint32_t BGR888_ABGR7888_to_ARGB32(uint32_t px32)
|
||||
static inline CONSTEXPR_MULTILINE uint32_t BGR888_ABGR7888_to_ARGB32(uint32_t px32)
|
||||
{
|
||||
// px32 high bit: if set, no alpha channel
|
||||
uint32_t argb = (px32 & 0x80000000U)
|
||||
@ -651,7 +651,7 @@ static inline constexpr uint32_t L8_to_ARGB32(uint8_t px8)
|
||||
* @param px8 A4L4 pixel
|
||||
* @return ARGB32 pixel
|
||||
*/
|
||||
static inline CONSTEXPR_IF_MSVC2022 uint32_t A4L4_to_ARGB32(uint8_t px8)
|
||||
static inline CONSTEXPR_MULTILINE uint32_t A4L4_to_ARGB32(uint8_t px8)
|
||||
{
|
||||
// A4L4: AAAALLLL
|
||||
// ARGB32: AAAAAAAA RRRRRRRR GGGGGGGG BBBBBBBB
|
||||
@ -681,7 +681,7 @@ static inline constexpr uint32_t L16_to_ARGB32(uint16_t px16)
|
||||
* @param px16 A8L8 pixel
|
||||
* @return ARGB32 pixel
|
||||
*/
|
||||
static inline CONSTEXPR_IF_MSVC2022 uint32_t A8L8_to_ARGB32(uint16_t px16)
|
||||
static inline CONSTEXPR_MULTILINE uint32_t A8L8_to_ARGB32(uint16_t px16)
|
||||
{
|
||||
// A8L8: AAAAAAAA LLLLLLLL
|
||||
// ARGB32: AAAAAAAA RRRRRRRR GGGGGGGG BBBBBBBB
|
||||
@ -697,7 +697,7 @@ static inline CONSTEXPR_IF_MSVC2022 uint32_t A8L8_to_ARGB32(uint16_t px16)
|
||||
* @param px16 L8A8 pixel
|
||||
* @return ARGB32 pixel
|
||||
*/
|
||||
static inline CONSTEXPR_IF_MSVC2022 uint32_t L8A8_to_ARGB32(uint16_t px16)
|
||||
static inline CONSTEXPR_MULTILINE uint32_t L8A8_to_ARGB32(uint16_t px16)
|
||||
{
|
||||
// FIXME: What's the component order of IA8?
|
||||
// Assuming I=MSB, A=LSB...
|
||||
|
@ -53,24 +53,6 @@ public:
|
||||
* @return Image, or nullptr on error.
|
||||
*/
|
||||
rp_image_const_ptr loadImage(void);
|
||||
|
||||
#if SYS_BYTEORDER == SYS_BIG_ENDIAN
|
||||
/**
|
||||
* Byteswap a float. (TODO: Move to byteswap_rp.h?)
|
||||
* @param f Float to byteswap.
|
||||
* @return Byteswapped flaot.
|
||||
*/
|
||||
static inline constexpr float __swabf(float f)
|
||||
{
|
||||
union {
|
||||
uint32_t u32;
|
||||
float f;
|
||||
} u32_f;
|
||||
u32_f.f = f;
|
||||
u32_f.u32 = __swab32(u32_f.u32);
|
||||
return u32_f.f;
|
||||
}
|
||||
#endif /* SYS_BYTEORDER == SYS_BIG_ENDIAN */
|
||||
};
|
||||
|
||||
FILEFORMAT_IMPL(ValveVTF3)
|
||||
|
@ -99,7 +99,7 @@ class XboxXPRPrivate final : public FileFormatPrivate
|
||||
* @param value
|
||||
* @return
|
||||
*/
|
||||
static CONSTEXPR_IF_MSVC2022 uint32_t fill_pattern(uint32_t pattern, uint32_t value)
|
||||
static CONSTEXPR_MULTILINE uint32_t fill_pattern(uint32_t pattern, uint32_t value)
|
||||
{
|
||||
uint32_t result = 0;
|
||||
uint32_t bit = 1;
|
||||
@ -130,7 +130,7 @@ class XboxXPRPrivate final : public FileFormatPrivate
|
||||
* @param bytes_per_pixel
|
||||
* @return
|
||||
*/
|
||||
static inline CONSTEXPR_IF_MSVC2022 unsigned int get_swizzled_offset(
|
||||
static inline CONSTEXPR_MULTILINE unsigned int get_swizzled_offset(
|
||||
unsigned int x, unsigned int y,
|
||||
uint32_t mask_x, uint32_t mask_y,
|
||||
unsigned int bytes_per_pixel)
|
||||
|
Loading…
Reference in New Issue
Block a user