/* * Copyright (c) 2023, MacDue * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include #include namespace Web::Painting { using ColorStopList = Vector; struct ColorStopData { ColorStopList list; Optional repeat_length; }; struct LinearGradientData { float gradient_angle; ColorStopData color_stops; }; struct ConicGradientData { float start_angle; ColorStopData color_stops; }; struct RadialGradientData { ColorStopData color_stops; }; LinearGradientData resolve_linear_gradient_data(Layout::Node const&, CSSPixelSize, CSS::LinearGradientStyleValue const&); ConicGradientData resolve_conic_gradient_data(Layout::Node const&, CSS::ConicGradientStyleValue const&); RadialGradientData resolve_radial_gradient_data(Layout::Node const&, CSSPixelSize, CSS::RadialGradientStyleValue const&); void paint_linear_gradient(PaintContext&, DevicePixelRect const&, LinearGradientData const&); void paint_conic_gradient(PaintContext&, DevicePixelRect const&, ConicGradientData const&, DevicePixelPoint position); void paint_radial_gradient(PaintContext&, DevicePixelRect const&, RadialGradientData const&, DevicePixelPoint position, DevicePixelSize size); }