ClipFrame.h 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. /*
  2. * Copyright (c) 2024, Aliaksandr Kalenik <kalenik.aliaksandr@gmail.com>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <LibWeb/Painting/BorderRadiiData.h>
  8. #include <LibWeb/PixelUnits.h>
  9. namespace Web::Painting {
  10. struct BorderRadiiClip {
  11. CSSPixelRect rect;
  12. BorderRadiiData radii;
  13. };
  14. struct ClipFrame : public RefCounted<ClipFrame> {
  15. Vector<BorderRadiiClip> const& border_radii_clips() const { return m_border_radii_clips; }
  16. void add_border_radii_clip(BorderRadiiClip border_radii_clip)
  17. {
  18. for (auto& existing_clip : m_border_radii_clips) {
  19. if (border_radii_clip.rect == existing_clip.rect) {
  20. existing_clip.radii.union_max_radii(border_radii_clip.radii);
  21. return;
  22. }
  23. }
  24. m_border_radii_clips.append(border_radii_clip);
  25. }
  26. CSSPixelRect rect() const { return m_rect; }
  27. void set_rect(CSSPixelRect rect) { m_rect = rect; }
  28. private:
  29. CSSPixelRect m_rect;
  30. Vector<BorderRadiiClip> m_border_radii_clips;
  31. };
  32. }