LibGfx: Make FourCC more useful

A few small changes that didn't seem to deserve separate commits:
- Mark it as packed to remove compiler complaints when it's a member of
  a packed struct.
- Add a default constructor for places where we fill in a struct
  gradually.
- Restrict the constructor to exactly 4-character string literals.
- Add a to_u32() method for the one place that needs that.
This commit is contained in:
Sam Atkins 2023-11-20 17:01:09 +00:00 committed by Andreas Kling
parent 2c24192e1f
commit 0423225290
Notes: sideshowbarker 2024-07-17 04:34:25 +09:00

View file

@ -8,8 +8,10 @@
namespace Gfx {
struct FourCC {
constexpr FourCC(char const* name)
struct [[gnu::packed]] FourCC {
FourCC() = default;
constexpr FourCC(char const name[4])
{
cc[0] = name[0];
cc[1] = name[1];
@ -20,6 +22,14 @@ struct FourCC {
bool operator==(FourCC const&) const = default;
bool operator!=(FourCC const&) const = default;
u32 to_u32() const
{
return (static_cast<u8>(cc[0]) << 24)
| (static_cast<u8>(cc[1]) << 16)
| (static_cast<u8>(cc[2]) << 8)
| static_cast<u8>(cc[3]);
}
char cc[4];
};