ClipFrame.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  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. void clear_border_radii_clips() { m_border_radii_clips.clear(); }
  27. CSSPixelRect rect() const { return m_rect; }
  28. void set_rect(CSSPixelRect rect) { m_rect = rect; }
  29. private:
  30. CSSPixelRect m_rect;
  31. Vector<BorderRadiiClip> m_border_radii_clips;
  32. };
  33. }