1ce178c1fa02362636e4992834592d6e019e4ee80Ruben Brunk/*
2ce178c1fa02362636e4992834592d6e019e4ee80Ruben Brunk * Copyright (C) 2012 The Android Open Source Project
3ce178c1fa02362636e4992834592d6e019e4ee80Ruben Brunk *
4ce178c1fa02362636e4992834592d6e019e4ee80Ruben Brunk * Licensed under the Apache License, Version 2.0 (the "License");
5ce178c1fa02362636e4992834592d6e019e4ee80Ruben Brunk * you may not use this file except in compliance with the License.
6ce178c1fa02362636e4992834592d6e019e4ee80Ruben Brunk * You may obtain a copy of the License at
7ce178c1fa02362636e4992834592d6e019e4ee80Ruben Brunk *
8ce178c1fa02362636e4992834592d6e019e4ee80Ruben Brunk *      http://www.apache.org/licenses/LICENSE-2.0
9ce178c1fa02362636e4992834592d6e019e4ee80Ruben Brunk *
10ce178c1fa02362636e4992834592d6e019e4ee80Ruben Brunk * Unless required by applicable law or agreed to in writing, software
11ce178c1fa02362636e4992834592d6e019e4ee80Ruben Brunk * distributed under the License is distributed on an "AS IS" BASIS,
12ce178c1fa02362636e4992834592d6e019e4ee80Ruben Brunk * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13ce178c1fa02362636e4992834592d6e019e4ee80Ruben Brunk * See the License for the specific language governing permissions and
14ce178c1fa02362636e4992834592d6e019e4ee80Ruben Brunk * limitations under the License.
15ce178c1fa02362636e4992834592d6e019e4ee80Ruben Brunk */
16ce178c1fa02362636e4992834592d6e019e4ee80Ruben Brunk
17ce178c1fa02362636e4992834592d6e019e4ee80Ruben Brunk#include "filters.h"
18ce178c1fa02362636e4992834592d6e019e4ee80Ruben Brunk
19ce178c1fa02362636e4992834592d6e019e4ee80Ruben Brunkvoid JNIFUNCF(ImageFilterNegative, nativeApplyFilter, jobject bitmap, jint width, jint height)
20ce178c1fa02362636e4992834592d6e019e4ee80Ruben Brunk{
21ce178c1fa02362636e4992834592d6e019e4ee80Ruben Brunk    char* destination = 0;
22ce178c1fa02362636e4992834592d6e019e4ee80Ruben Brunk    AndroidBitmap_lockPixels(env, bitmap, (void**) &destination);
23ce178c1fa02362636e4992834592d6e019e4ee80Ruben Brunk
24ce178c1fa02362636e4992834592d6e019e4ee80Ruben Brunk    int tot_len = height * width * 4;
25ce178c1fa02362636e4992834592d6e019e4ee80Ruben Brunk    int i;
26ce178c1fa02362636e4992834592d6e019e4ee80Ruben Brunk    char * dst = destination;
27ce178c1fa02362636e4992834592d6e019e4ee80Ruben Brunk    for (i = 0; i < tot_len; i+=4) {
28ce178c1fa02362636e4992834592d6e019e4ee80Ruben Brunk        dst[RED] = 255 - dst[RED];
29ce178c1fa02362636e4992834592d6e019e4ee80Ruben Brunk        dst[GREEN] = 255 - dst[GREEN];
30ce178c1fa02362636e4992834592d6e019e4ee80Ruben Brunk        dst[BLUE] = 255 - dst[BLUE];
31ce178c1fa02362636e4992834592d6e019e4ee80Ruben Brunk    }
32ce178c1fa02362636e4992834592d6e019e4ee80Ruben Brunk    AndroidBitmap_unlockPixels(env, bitmap);
33ce178c1fa02362636e4992834592d6e019e4ee80Ruben Brunk}
34