/* * Copyright (c) 2025, Aliaksandr Kalenik * * SPDX-License-Identifier: BSD-2-Clause */ #include #include #include #include namespace Web::Painting { ScrollStateSnapshot ScrollStateSnapshot::create(Vector const& scroll_frames, double device_pixels_per_css_pixel) { ScrollStateSnapshot snapshot; auto scale = static_cast(device_pixels_per_css_pixel); snapshot.m_device_offsets.ensure_capacity(scroll_frames.size()); for (auto const& scroll_frame : scroll_frames) { auto const& offset = scroll_frame.own_offset(); snapshot.m_device_offsets.unchecked_append(offset.to_type() * scale); } return snapshot; } ScrollStateSnapshot ScrollStateSnapshot::create_from_device_offsets(Vector&& device_offsets) { ScrollStateSnapshot snapshot; snapshot.m_device_offsets = move(device_offsets); return snapshot; } } namespace IPC { template<> ErrorOr encode(Encoder& encoder, Web::Painting::ScrollStateSnapshot const& snapshot) { TRY(encoder.encode(snapshot.device_offsets())); return {}; } template<> ErrorOr decode(Decoder& decoder) { return Web::Painting::ScrollStateSnapshot::create_from_device_offsets(TRY(decoder.decode>())); } }