CanvasGradient.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /*
  2. * Copyright (c) 2022, Andreas Kling <kling@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <AK/RefCounted.h>
  8. #include <LibGfx/Color.h>
  9. #include <LibWeb/Bindings/Wrappable.h>
  10. namespace Web::HTML {
  11. class CanvasGradient final
  12. : public RefCounted<CanvasGradient>
  13. , public Bindings::Wrappable {
  14. public:
  15. using WrapperType = Bindings::CanvasGradientWrapper;
  16. enum class Type {
  17. Linear,
  18. Radial,
  19. Conic,
  20. };
  21. static NonnullRefPtr<CanvasGradient> create_radial(double x0, double y0, double r0, double x1, double y1, double r1);
  22. static NonnullRefPtr<CanvasGradient> create_linear(double x0, double y0, double x1, double y1);
  23. static NonnullRefPtr<CanvasGradient> create_conic(double start_angle, double x, double y);
  24. DOM::ExceptionOr<void> add_color_stop(double offset, String const& color);
  25. ~CanvasGradient();
  26. private:
  27. explicit CanvasGradient(Type);
  28. Type m_type {};
  29. struct ColorStop {
  30. double offset { 0 };
  31. Gfx::Color color;
  32. };
  33. Vector<ColorStop> m_color_stops;
  34. };
  35. }