DrawFilter.cpp revision a0398430fcf365fba6e42ad0bdca2fbf45ed6fe0
1/* libs/android_runtime/android/graphics/ColorFilter.cpp
2**
3** Copyright 2006, The Android Open Source Project
4**
5** Licensed under the Apache License, Version 2.0 (the "License");
6** you may not use this file except in compliance with the License.
7** You may obtain a copy of the License at
8**
9**     http://www.apache.org/licenses/LICENSE-2.0
10**
11** Unless required by applicable law or agreed to in writing, software
12** distributed under the License is distributed on an "AS IS" BASIS,
13** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14** See the License for the specific language governing permissions and
15** limitations under the License.
16*/
17
18// This file was generated from the C++ include file: SkColorFilter.h
19// Any changes made to this file will be discarded by the build.
20// To change this file, either edit the include, or device/tools/gluemaker/main.cpp,
21// or one of the auxilary file specifications in device/tools/gluemaker.
22
23#include "jni.h"
24#include "GraphicsJNI.h"
25#include <android_runtime/AndroidRuntime.h>
26
27#include "SkDrawFilter.h"
28#include "SkPaintFlagsDrawFilter.h"
29#include "SkPaint.h"
30
31namespace android {
32
33class SkDrawFilterGlue {
34public:
35
36    static void finalizer(JNIEnv* env, jobject clazz, jlong objHandle) {
37        SkDrawFilter* obj = reinterpret_cast<SkDrawFilter*>(objHandle);
38        SkSafeUnref(obj);
39    }
40
41    static jlong CreatePaintFlagsDF(JNIEnv* env, jobject clazz,
42                                    jint clearFlags, jint setFlags) {
43        // trim off any out-of-range bits
44        clearFlags &= SkPaint::kAllFlags;
45        setFlags &= SkPaint::kAllFlags;
46
47        if (clearFlags | setFlags) {
48            SkDrawFilter* filter = new SkPaintFlagsDrawFilter(clearFlags, setFlags);
49            return reinterpret_cast<jlong>(filter);
50        } else {
51            return NULL;
52        }
53    }
54};
55
56static JNINativeMethod drawfilter_methods[] = {
57    {"nativeDestructor", "(J)V", (void*) SkDrawFilterGlue::finalizer}
58};
59
60static JNINativeMethod paintflags_methods[] = {
61    {"nativeConstructor","(II)J", (void*) SkDrawFilterGlue::CreatePaintFlagsDF}
62};
63
64#define REG(env, name, array)                                                                       \
65    result = android::AndroidRuntime::registerNativeMethods(env, name, array, SK_ARRAY_COUNT(array));  \
66    if (result < 0) return result
67
68
69int register_android_graphics_DrawFilter(JNIEnv* env) {
70    int result;
71
72    REG(env, "android/graphics/DrawFilter", drawfilter_methods);
73    REG(env, "android/graphics/PaintFlagsDrawFilter", paintflags_methods);
74
75    return 0;
76}
77
78}
79