Allow gradients default constructors.

This commit is contained in:
John Preston 2021-04-26 13:44:28 +04:00
parent 594572199c
commit db1df1b4bd

View file

@ -41,8 +41,9 @@ namespace details {
template <typename T, typename Derived> template <typename T, typename Derived>
class gradients { class gradients {
public: public:
gradients() = default;
gradients(base::flat_map<T, std::vector<QColor>> colors) { gradients(base::flat_map<T, std::vector<QColor>> colors) {
Expects(colors.size() > 0); Expects(!colors.empty());
for (const auto &[key, value] : colors) { for (const auto &[key, value] : colors) {
auto c = gradient_colors(std::move(value)); auto c = gradient_colors(std::move(value));
@ -50,7 +51,7 @@ public:
} }
} }
gradients(base::flat_map<T, gradient_colors> colors) { gradients(base::flat_map<T, gradient_colors> colors) {
Expects(colors.size() > 0); Expects(!colors.empty());
for (const auto &[key, c] : colors) { for (const auto &[key, c] : colors) {
_gradients.emplace(key, gradient_with_stops(std::move(c.stops))); _gradients.emplace(key, gradient_with_stops(std::move(c.stops)));
@ -58,6 +59,8 @@ public:
} }
QGradient gradient(T state1, T state2, float64 b_ratio) const { QGradient gradient(T state1, T state2, float64 b_ratio) const {
Expects(!_gradients.empty());
if (b_ratio == 0.) { if (b_ratio == 0.) {
return _gradients.find(state1)->second; return _gradients.find(state1)->second;
} else if (b_ratio == 1.) { } else if (b_ratio == 1.) {
@ -163,6 +166,7 @@ class linear_gradients final
using parent = details::gradients<T, linear_gradients<T>>; using parent = details::gradients<T, linear_gradients<T>>;
public: public:
linear_gradients() = default;
linear_gradients( linear_gradients(
base::flat_map<T, std::vector<QColor>> colors, base::flat_map<T, std::vector<QColor>> colors,
QPointF point1, QPointF point1,
@ -205,6 +209,7 @@ class radial_gradients final
using parent = details::gradients<T, radial_gradients<T>>; using parent = details::gradients<T, radial_gradients<T>>;
public: public:
radial_gradients() = default;
radial_gradients( radial_gradients(
base::flat_map<T, std::vector<QColor>> colors, base::flat_map<T, std::vector<QColor>> colors,
QPointF center, QPointF center,