39constexpr void GenerateRamp(InputIter begin, InputIter end, T offset, U slope) {
40 typename std::iterator_traits<InputIter>::value_type counter = offset;
41 typename std::iterator_traits<InputIter>::value_type delta = slope;
88 using C =
typename std::iterator_traits<InputIter>::value_type;
90 typename C::value_type cast_offset = offset;
91 if (sample_id % 2 == 0) {
92 GenerateRamp(begin, end, C(cast_offset, cast_offset + 1), C(+2, +2));
94 GenerateRamp(begin, end, C(-cast_offset, -cast_offset - 1), C(-2, -2));
96 }
else if constexpr (std::is_signed_v<C>) {
97 C cast_offset = offset;
98 if (sample_id % 2 == 0) {
104 C cast_offset = offset;
105 if (sample_id % 2 == 0) {
108 GenerateRamp(begin, end, std::numeric_limits<C>::max() - cast_offset, -1);
constexpr void GenerateRamp(InputIter begin, InputIter end, T offset, U slope)
Generates a ramp of values.
Definition patternGeneration.hpp:39
constexpr void GenerateAlternatingRamp(InputIter begin, InputIter end, std::uint32_t sample_id, T offset)
Generates a ramp of values alternating on the sample ID.
Definition patternGeneration.hpp:87