CanvasTextDrawingStyles.h 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. /*
  2. * Copyright (c) 2023, Bastiaan van der Plaat <bastiaan.v.d.plaat@gmail.com>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <LibWeb/HTML/Canvas/CanvasState.h>
  8. namespace Web::HTML {
  9. // https://html.spec.whatwg.org/multipage/canvas.html#canvastextdrawingstyles
  10. template<typename IncludingClass>
  11. class CanvasTextDrawingStyles {
  12. public:
  13. ~CanvasTextDrawingStyles() = default;
  14. void set_text_align(Bindings::CanvasTextAlign text_align) { my_drawing_state().text_align = text_align; }
  15. Bindings::CanvasTextAlign text_align() const { return my_drawing_state().text_align; }
  16. void set_text_baseline(Bindings::CanvasTextBaseline text_baseline) { my_drawing_state().text_baseline = text_baseline; }
  17. Bindings::CanvasTextBaseline text_baseline() const { return my_drawing_state().text_baseline; }
  18. protected:
  19. CanvasTextDrawingStyles() = default;
  20. private:
  21. CanvasState::DrawingState& my_drawing_state() { return reinterpret_cast<IncludingClass&>(*this).drawing_state(); }
  22. CanvasState::DrawingState const& my_drawing_state() const { return reinterpret_cast<IncludingClass const&>(*this).drawing_state(); }
  23. };
  24. }