CompositionHighlight.h [plain text]
#pragma once
#include "Color.h"
#include <wtf/Optional.h>
namespace WebCore {
struct CompositionHighlight {
CompositionHighlight() = default;
CompositionHighlight(unsigned startOffset, unsigned endOffset, const Color& c)
: startOffset(startOffset)
, endOffset(endOffset)
, color(c)
{
}
#if PLATFORM(IOS_FAMILY)
static constexpr auto defaultCompositionFillColor = SRGBA<uint8_t> { 175, 192, 227, 60 };
#else
static constexpr auto defaultCompositionFillColor = SRGBA<uint8_t> { 225, 221, 85 };
#endif
unsigned startOffset { 0 };
unsigned endOffset { 0 };
Color color { defaultCompositionFillColor };
template<class Encoder> void encode(Encoder&) const;
template<class Decoder> static Optional<CompositionHighlight> decode(Decoder&);
};
template<class Encoder>
void CompositionHighlight::encode(Encoder& encoder) const
{
encoder << startOffset;
encoder << endOffset;
encoder << color;
}
template<class Decoder>
Optional<CompositionHighlight> CompositionHighlight::decode(Decoder& decoder)
{
Optional<unsigned> startOffset;
decoder >> startOffset;
if (!startOffset)
return WTF::nullopt;
Optional<unsigned> endOffset;
decoder >> endOffset;
if (!endOffset)
return WTF::nullopt;
Optional<Color> color;
decoder >> color;
if (!color)
return WTF::nullopt;
return {{ *startOffset, *endOffset, *color }};
}
}