mirror of
https://github.com/ArthurSonzogni/FTXUI.git
synced 2024-11-30 15:36:53 +08:00
53 lines
1.3 KiB
C++
53 lines
1.3 KiB
C++
|
#ifndef FTXUI_DOM_LINEAR_GRADIENT_HPP
|
||
|
#define FTXUI_DOM_LINEAR_GRADIENT_HPP
|
||
|
|
||
|
#include <optional>
|
||
|
#include <vector>
|
||
|
|
||
|
#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<float> position;
|
||
|
};
|
||
|
std::vector<Stop> 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
|
||
|
|
||
|
// 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.
|