/* * Copyright (c) 2020, Andreas Kling * Copyright (c) 2021-2023, Sam Atkins * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include namespace Web::Painting { enum class BorderEdge : u8 { Top, Right, Bottom, Left, }; struct BorderDataDevicePixels { public: Color color { Color::Transparent }; CSS::LineStyle line_style { CSS::LineStyle::None }; DevicePixels width { 0 }; }; struct BordersDataDevicePixels { BorderDataDevicePixels top; BorderDataDevicePixels right; BorderDataDevicePixels bottom; BorderDataDevicePixels left; BorderDataDevicePixels& for_edge(BorderEdge edge) { switch (edge) { case BorderEdge::Top: return top; case BorderEdge::Right: return right; case BorderEdge::Bottom: return bottom; default: // BorderEdge::Left: return left; } } BorderDataDevicePixels const& for_edge(BorderEdge edge) const { return const_cast(*this).for_edge(edge); } }; struct BordersData { CSS::BorderData top; CSS::BorderData right; CSS::BorderData bottom; CSS::BorderData left; BordersDataDevicePixels to_device_pixels(DisplayListRecordingContext const& context) const; }; }