
This iterates the fragments of the containing block, and paints their outlines if they are descendants of the InlineNode. If multiple fragments are adjacent, eg: ```html <span><b>Well</b> hello <i>friends!</i></span> ``` ...then we get a double-thick outline between "Well", " hello " and "friends!", but we can come back to this after we implement non-rectangular outlines for the `outline` CSS property.
24 lines
625 B
C++
24 lines
625 B
C++
/*
|
|
* Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <LibWeb/Layout/Box.h>
|
|
|
|
namespace Web::Layout {
|
|
|
|
class InlineNode : public NodeWithStyleAndBoxModelMetrics {
|
|
public:
|
|
InlineNode(DOM::Document&, DOM::Element&, NonnullRefPtr<CSS::StyleProperties>);
|
|
virtual ~InlineNode() override;
|
|
|
|
virtual void paint(PaintContext&, PaintPhase) override;
|
|
virtual void paint_fragment(PaintContext&, const LineBoxFragment&, PaintPhase) const override;
|
|
|
|
virtual void split_into_lines(InlineFormattingContext&, LayoutMode) override;
|
|
};
|
|
|
|
}
|