#include "Halide.h"
#include <stdio.h>
public:
Input<uint8_t> offset{"offset"};
Input<Buffer<uint8_t, 2>> input{"input"};
Output<Buffer<uint8_t, 2>> brighter{"brighter"};
void generate() {
brighter(x, y) = input(x, y) + offset;
brighter.vectorize(x, 16).parallel(y);
}
};
public:
1.0f ,
0.0f ,
100.0f };
enum class Rotation {
None,
Clockwise,
CounterClockwise };
{"cw", Rotation::Clockwise},
{"ccw", Rotation::CounterClockwise}}};
Input<uint8_t> offset{"offset"};
Input<Buffer<uint8_t, 2>> input{"input"};
Output<Buffer<void, 2>> output{"output"};
void generate() {
brighter(x, y) = scale * (input(x, y) + offset);
switch ((Rotation)rotation) {
rotated(x, y) = brighter(x, y);
break;
case Rotation::Clockwise:
rotated(x, y) = brighter(y, 100 - x);
break;
case Rotation::CounterClockwise:
rotated(x, y) = brighter(100 - y, x);
break;
}
output(x, y) =
cast(output.type(), rotated(x, y));
output.vectorize(x, natural_vector_size(output.type()));
if (parallel) {
output.parallel(y);
}
rotated
.compute_at(output, y)
.vectorize(x, natural_vector_size(rotated.types()[0]));
}
}
};