/* * Copyright (c) 2023, Sam Atkins * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include namespace Gfx { struct [[gnu::packed]] FourCC { FourCC() = default; constexpr FourCC(char const name[4]) { cc[0] = name[0]; cc[1] = name[1]; cc[2] = name[2]; cc[3] = name[3]; } static constexpr FourCC from_u32(u32 value) { FourCC result; result.cc[0] = static_cast(value >> 24); result.cc[1] = static_cast(value >> 16); result.cc[2] = static_cast(value >> 8); result.cc[3] = static_cast(value); return result; } bool operator==(FourCC const&) const = default; bool operator!=(FourCC const&) const = default; u32 to_u32() const { return (static_cast(cc[0]) << 24) | (static_cast(cc[1]) << 16) | (static_cast(cc[2]) << 8) | static_cast(cc[3]); } char cc[4]; }; }