diff --git a/Libraries/LibGfx/CMakeLists.txt b/Libraries/LibGfx/CMakeLists.txt index 923356b3e6..b4028c691d 100644 --- a/Libraries/LibGfx/CMakeLists.txt +++ b/Libraries/LibGfx/CMakeLists.txt @@ -53,6 +53,7 @@ set(SOURCES SharedImage.cpp SharedImageBuffer.cpp ShareableBitmap.cpp + ShapeFeature.cpp Size.cpp SkiaBackendContext.cpp SkiaUtils.cpp diff --git a/Libraries/LibGfx/ShapeFeature.cpp b/Libraries/LibGfx/ShapeFeature.cpp new file mode 100644 index 0000000000..2b9753bcdf --- /dev/null +++ b/Libraries/LibGfx/ShapeFeature.cpp @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2026-present, the Ladybird developers. + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include +#include +#include + +namespace IPC { + +template<> +ErrorOr encode(Encoder& encoder, Gfx::ShapeFeature const& feature) +{ + TRY(encoder.append(reinterpret_cast(feature.tag), sizeof(feature.tag))); + TRY(encoder.encode(feature.value)); + return {}; +} + +template<> +ErrorOr decode(Decoder& decoder) +{ + Gfx::ShapeFeature feature {}; + TRY(decoder.decode_into(Bytes { reinterpret_cast(feature.tag), sizeof(feature.tag) })); + feature.value = TRY(decoder.decode()); + return feature; +} + +} diff --git a/Libraries/LibGfx/ShapeFeature.h b/Libraries/LibGfx/ShapeFeature.h index 8d0b2a1d7a..11dba9b2b9 100644 --- a/Libraries/LibGfx/ShapeFeature.h +++ b/Libraries/LibGfx/ShapeFeature.h @@ -7,6 +7,7 @@ #pragma once #include +#include namespace Gfx { @@ -22,6 +23,16 @@ using ShapeFeatures = Vector; } +namespace IPC { + +template<> +ErrorOr encode(Encoder&, Gfx::ShapeFeature const&); + +template<> +ErrorOr decode(Decoder&); + +} + namespace AK { template<>