PaintableFragment.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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/Layout/LineBoxFragment.h>
  8. #include <LibWeb/Layout/Node.h>
  9. #include <LibWeb/Painting/BorderRadiiData.h>
  10. #include <LibWeb/PixelUnits.h>
  11. namespace Web::Painting {
  12. class PaintableFragment {
  13. friend class ViewportPaintable;
  14. public:
  15. explicit PaintableFragment(Layout::LineBoxFragment const&);
  16. Layout::Node const& layout_node() const { return m_layout_node; }
  17. Paintable const& paintable() const { return *m_layout_node->paintable(); }
  18. int start() const { return m_start; }
  19. int length() const { return m_length; }
  20. CSSPixels baseline() const { return m_baseline; }
  21. CSSPixelPoint offset() const { return m_offset; }
  22. void set_offset(CSSPixelPoint offset) { m_offset = offset; }
  23. CSSPixelSize size() const { return m_size; }
  24. BorderRadiiData const& border_radii_data() const { return m_border_radii_data; }
  25. void set_border_radii_data(BorderRadiiData const& border_radii_data) { m_border_radii_data = border_radii_data; }
  26. Vector<ShadowData> const& shadows() const { return m_shadows; }
  27. void set_shadows(Vector<ShadowData>&& shadows) { m_shadows = shadows; }
  28. CSSPixelRect const absolute_rect() const;
  29. Gfx::GlyphRun const& glyph_run() const { return *m_glyph_run; }
  30. CSSPixelRect selection_rect(Gfx::Font const&) const;
  31. CSSPixels width() const { return m_size.width(); }
  32. CSSPixels height() const { return m_size.height(); }
  33. int text_index_at(CSSPixels) const;
  34. StringView string_view() const;
  35. private:
  36. JS::NonnullGCPtr<Layout::Node const> m_layout_node;
  37. CSSPixelPoint m_offset;
  38. CSSPixelSize m_size;
  39. CSSPixels m_baseline;
  40. int m_start;
  41. int m_length;
  42. Painting::BorderRadiiData m_border_radii_data;
  43. NonnullRefPtr<Gfx::GlyphRun> m_glyph_run;
  44. Vector<ShadowData> m_shadows;
  45. };
  46. }