summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d/filtershow/filters/ImageFilter.java
blob: abf65c4b0ec313bb74e1c10e533407c5bfd52567 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/*
 * Copyright (C) 2012 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.gallery3d.filtershow.filters;

import android.graphics.Bitmap;

import com.android.gallery3d.R;
import com.android.gallery3d.filtershow.editors.BasicEditor;
import com.android.gallery3d.filtershow.presets.ImagePreset;

public class ImageFilter implements Cloneable {

    private ImagePreset mImagePreset;

    protected String mName = "Original";
    private final String LOGTAG = "ImageFilter";
    public static final byte TYPE_BORDER = 1;
    public static final byte TYPE_FX = 2;
    public static final byte TYPE_WBALANCE = 3;
    public static final byte TYPE_VIGNETTE = 4;
    public static final byte TYPE_NORMAL = 5;
    public static final byte TYPE_TINYPLANET = 6;
    private byte filterType = TYPE_NORMAL;

    public byte getFilterType() {
        return filterType;
    }

    protected void setFilterType(byte type) {
        filterType = type;
    }

    public int getButtonId() {
        return 0;
    }

    public int getTextId() {
        return 0;
    }

    public int getOverlayBitmaps() {
        return 0;
    }

    public int getEditingViewId() {
        return BasicEditor.ID;
    }

    public boolean showEditingControls() {
        return true;
    }

    public boolean showParameterValue() {
        return true;
    }

    public boolean showUtilityPanel() {
        return true;
    }

    public void setName(String name) {
        mName = name;
    }

    public String getName() {
        return mName;
    }

    public Bitmap apply(Bitmap bitmap, float scaleFactor, boolean highQuality) {
        // do nothing here, subclasses will implement filtering here
        return bitmap;
    }

    /**
     * Called on small bitmaps to create button icons for each filter.
     * Override this to provide filter-specific button icons.
     */
    public Bitmap iconApply(Bitmap bitmap, float scaleFactor, boolean highQuality) {
        return apply(bitmap, scaleFactor, highQuality);
    }

    public ImagePreset getImagePreset() {
        return mImagePreset;
    }

    public boolean equals(ImageFilter filter) {
        if (!same(filter)) {
            return false;
        }
        return true;
    }

    public boolean same(ImageFilter filter) {
        if (filter == null) {
            return false;
        }
        if (!filter.getName().equalsIgnoreCase(getName())) {
            return false;
        }
        return true;
    }

    public void useRepresentation(FilterRepresentation representation) {
    }

    native protected void nativeApplyGradientFilter(Bitmap bitmap, int w, int h,
            int[] redGradient, int[] greenGradient, int[] blueGradient);

    public FilterRepresentation getDefaultRepresentation() {
        return null;
    }

    public boolean hasDefaultRepresentation() {
        return false;
    }
}