LibGfx: Add ImageCursor type and Cursor variant

Besides standard cursors, we also need to support custom images. For
now, everything still uses StandardCursor.
This commit is contained in:
Sam Atkins 2025-02-17 15:49:05 +00:00 committed by Andreas Kling
commit 1990b2fc52
Notes: github-actions[bot] 2025-02-28 12:52:16 +00:00
8 changed files with 104 additions and 39 deletions

View file

@ -0,0 +1,40 @@
/*
* Copyright (c) 2025, Sam Atkins <sam@ladybird.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include <LibGfx/Cursor.h>
#include <LibIPC/Decoder.h>
#include <LibIPC/Encoder.h>
namespace Gfx {
bool ImageCursor::operator==(ImageCursor const& other) const
{
return hotspot == other.hotspot
&& bitmap.bitmap() == other.bitmap.bitmap();
}
}
namespace IPC {
template<>
ErrorOr<void> encode(Encoder& encoder, Gfx::ImageCursor const& image_cursor)
{
TRY(encoder.encode(image_cursor.bitmap));
TRY(encoder.encode(image_cursor.hotspot));
return {};
}
template<>
ErrorOr<Gfx::ImageCursor> decode(Decoder& decoder)
{
Gfx::ImageCursor result;
result.bitmap = TRY(decoder.decode<Gfx::ShareableBitmap>());
result.hotspot = TRY(decoder.decode<Gfx::IntPoint>());
return result;
}
}