Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1d317d14 authored by Jason Sams's avatar Jason Sams
Browse files

Cleanup image processing example script.

parent aa82768b
Loading
Loading
Loading
Loading
+10 −22
Original line number Diff line number Diff line
@@ -5,38 +5,26 @@ struct color_s {
    char a;
};

void filter(struct color_s *in, struct color_s *out, struct vecF32_3_s *luminanceVector) {
    struct vecF32_3_s pixel;
    pixel.x = (in->r & 0xFF) / 255.0f;
    pixel.y = (in->g & 0xFF) / 255.0f;
    pixel.z = (in->b & 0xFF) / 255.0f;

    float luminance = vec3Dot(luminanceVector, &pixel);
    luminance = maxf(0.0f, luminance - Params->threshold);
    vec3Scale(&pixel, signf(luminance));

    out->a = in->a;
    out->r = pixel.x * 255.0f;
    out->g = pixel.y * 255.0f;
    out->b = pixel.z * 255.0f;
}

void main() {
    int t = uptimeMillis();

    struct color_s *in = (struct color_s *) InPixel;
    struct color_s *out = (struct color_s *) OutPixel;

    struct vecF32_3_s luminanceVector;
    luminanceVector.x = 0.2125f;
    luminanceVector.y = 0.7154f;
    luminanceVector.z = 0.0721f;

    int count = Params->inWidth * Params->inHeight;
    int i;
    float threshold = (Params->threshold * 255.f);

    for (i = 0; i < count; i++) {
        filter(in, out, &luminanceVector);
        float luminance = 0.2125f * in->r +
                          0.7154f * in->g +
                          0.0721f * in->b;
        luminance = maxf(0.0f, luminance - threshold);
        vec3Scale(&pixel, luminance > 0);
        out->a = in->a;
        out->r = pixel.x;
        out->g = pixel.y;
        out->b = pixel.z;

        in++;
        out++;