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