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