10d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard/* 20d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard * Copyright (C) 2012 The Android Open Source Project 30d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard * 40d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard * Licensed under the Apache License, Version 2.0 (the "License"); 50d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard * you may not use this file except in compliance with the License. 60d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard * You may obtain a copy of the License at 70d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard * 80d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard * http://www.apache.org/licenses/LICENSE-2.0 90d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard * 100d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard * Unless required by applicable law or agreed to in writing, software 110d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard * distributed under the License is distributed on an "AS IS" BASIS, 120d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard * See the License for the specific language governing permissions and 140d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard * limitations under the License. 150d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard */ 160d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 170d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard#ifndef FILTERS_H 180d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard#define FILTERS_H 190d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 200d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard#include <jni.h> 210d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard#include <string.h> 220d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard#include <android/log.h> 230d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard#include <android/bitmap.h> 240d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 250d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroardtypedef unsigned int Color; 260d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 270d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard#define SetColor(a, r, g, b) ((a << 24) | (b << 16) | (g << 8) | (r << 0)); 280d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard#define GetA(color) (((color) >> 24) & 0xFF) 290d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard#define GetB(color) (((color) >> 16) & 0xFF) 300d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard#define GetG(color) (((color) >> 8) & 0xFF) 310d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard#define GetR(color) (((color) >> 0) & 0xFF) 320d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 330d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard#define MIN(a, b) (a < b ? a : b) 340d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard#define MAX(a, b) (a > b ? a : b) 350d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 360d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard#define LOG(msg...) __android_log_print(ANDROID_LOG_VERBOSE, "NativeFilters", msg) 370d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 382f879102d630815df64636b8d37e3a7eea8e8b65Sascha Haeberling#define JNIFUNCF(cls, name, vars...) Java_com_android_gallery3d_filtershow_filters_ ## cls ## _ ## name(JNIEnv* env, jobject obj, vars) 390d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 400d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard#define RED i 410d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard#define GREEN i+1 420d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard#define BLUE i+2 430d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard#define ALPHA i+3 440d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard#define CLAMP(c) (MAX(0, MIN(255, c))) 450d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard 46bf97d3aaeddfba06f6a00ee7abb23fcd28eb2e7dJohn Hoford__inline__ unsigned char clamp(int c); 47d42f6c69c5980110c16cd679f914c4e4e7caa29dJohn Hoford 48c7b2c287bfbe3f53a4d65800c3884b0082ad683cJohn Hofordextern void rgb2hsv( unsigned char *rgb,int rgbOff,unsigned short *hsv,int hsvOff); 49c7b2c287bfbe3f53a4d65800c3884b0082ad683cJohn Hofordextern void hsv2rgb(unsigned short *hsv,int hsvOff,unsigned char *rgb,int rgbOff); 5090b1d251973bfa748d435896fc277cb4024451adJohn Hofordextern void filterRedEye(unsigned char *src, unsigned char *dest, int iw, int ih, short *rect); 5190b1d251973bfa748d435896fc277cb4024451adJohn Hofordextern double fastevalPoly(double *poly,int n, double x); 520d7cdf8e763fb65c32bfad65245b3753deb75737nicolasroard#endif // FILTERS_H 53