12#include "sml/math/vec2.h" 
   13#include "sml/math/rectangle.h" 
   14#include "sml/graphics_wrapper/texture.h" 
   21        virtual void fillLine(
const Sml::Vec2i& start,
 
   22                              const Sml::Vec2i& end,
 
   23                              const Sml::Rectangle<int32_t>& targetRegion) 
const = 0;
 
   25        virtual void fillArea(
const Sml::Rectangle<int32_t>& area,
 
   26                              const Sml::Rectangle<int32_t>& targetRegion) 
const = 0;
 
   28        virtual void fillPoint(
const Sml::Vec2i& point,
 
   29                               const Sml::Rectangle<int32_t>& targetRegion) 
const = 0;
 
   38        ColorFill(Sml::Color color = Sml::COLOR_TRANSPARENT);
 
   40        virtual void fillLine(
const Sml::Vec2i& start,
 
   41                              const Sml::Vec2i& end,
 
   42                              const Sml::Rectangle<int32_t>& targetRegion) 
const override;
 
   44        virtual void fillArea(
const Sml::Rectangle<int32_t>& area,
 
   45                              const Sml::Rectangle<int32_t>& targetRegion) 
const override;
 
   47        virtual void fillPoint(
const Sml::Vec2i& point,
 
   48                               const Sml::Rectangle<int32_t>& targetRegion) 
const override;
 
   50        Sml::Color getColor() 
const;
 
   51        void setColor(Sml::Color color);
 
   70            Stop(
float offset, Sml::Color color);
 
   72            float getOffset() 
const;
 
   73            const Sml::Vec4f& getColorVector() 
const;
 
   74            Sml::Color getColor() 
const;
 
   76            bool operator<(
const Stop& other) 
const;
 
   80            Sml::Vec4f m_Color  = Sml::colorToNormalized(Sml::COLOR_TRANSPARENT);
 
   94        void addStop(
const Stop& stop);
 
   96        void setDirection(Direction direction);
 
   98        virtual void fillLine(
const Sml::Vec2i& start,
 
   99                              const Sml::Vec2i& end,
 
  100                              const Sml::Rectangle<int32_t>& targetRegion) 
const override;
 
  102        virtual void fillArea(
const Sml::Rectangle<int32_t>& area,
 
  103                              const Sml::Rectangle<int32_t>& targetRegion) 
const override;
 
  105        virtual void fillPoint(
const Sml::Vec2i& point,
 
  106                               const Sml::Rectangle<int32_t>& targetRegion) 
const override;
 
  109        std::vector<Stop> m_Stops;
 
  110        Direction         m_Direction = Direction::HORIZONTAL;