// Copyright 2023 Arthur Sonzogni. All rights reserved. // Use of this source code is governed by the MIT license that can be found in // the LICENSE file. #ifndef FTXUI_DOM_LINEAR_GRADIENT_HPP #define FTXUI_DOM_LINEAR_GRADIENT_HPP #include #include #include "ftxui/screen/color.hpp" // for Colors namespace ftxui { /// @brief A class representing the settings for linear-gradient color effect. /// /// Example: /// ```cpp /// LinearGradient() /// .Angle(45) /// .Stop(Color::Red, 0.0) /// .Stop(Color::Green, 0.5) /// .Stop(Color::Blue, 1.0); /// ``` /// /// There are also shorthand constructors: /// ```cpp /// LinearGradient(Color::Red, Color::Blue); /// LinearGradient(45, Color::Red, Color::Blue); /// ``` struct LinearGradient { float angle = 0.f; struct Stop { Color color = Color::Default; std::optional position; }; std::vector stops; // Simple constructor LinearGradient(); LinearGradient(Color begin, Color end); LinearGradient(float angle, Color begin, Color end); // Modifier using the builder pattern. LinearGradient& Angle(float angle); LinearGradient& Stop(Color color, float position); LinearGradient& Stop(Color color); }; } // namespace ftxui #endif // FTXUI_DOM_LINEAR_GRADIENT_HPP