FilterFxRepresentation.java revision 3cb106ddd7ad0f8494ac9c7a33660831c1694295
13e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik/*
23e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik * Copyright (C) 2013 The Android Open Source Project
33e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik *
43e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik * Licensed under the Apache License, Version 2.0 (the "License");
53e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik * you may not use this file except in compliance with the License.
63e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik * You may obtain a copy of the License at
73e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik *
83e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik *      http://www.apache.org/licenses/LICENSE-2.0
93e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik *
103e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik * Unless required by applicable law or agreed to in writing, software
113e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik * distributed under the License is distributed on an "AS IS" BASIS,
123e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik * See the License for the specific language governing permissions and
143e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik * limitations under the License.
153e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik */
163e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik
173e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bikpackage com.android.gallery3d.filtershow.filters;
183e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik
193e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bikimport com.android.gallery3d.filtershow.editors.ImageOnlyEditor;
203e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik
213e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bikpublic class FilterFxRepresentation extends FilterRepresentation {
223e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik   private static final String SERIALIZATION_NAME = "LUT3D";
233e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik   private static final String LOGTAG = "FilterFxRepresentation";
243e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik    // TODO: When implementing serialization, we should find a unique way of
253e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik    // specifying bitmaps / names (the resource IDs being random)
263e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik    private int mBitmapResource = 0;
273e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik    private int mNameResource = 0;
283e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik
293e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik    public FilterFxRepresentation(String name, int bitmapResource, int nameResource) {
303e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik        super(name);
313e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik        setSerializationName(SERIALIZATION_NAME + "_" + name);
323e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik        setFilterClass(ImageFilterFx.class);
333e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik        mBitmapResource = bitmapResource;
34b1b45bec6a3eed1fb95dabd95b1957a51341dc2aAart Bik        mNameResource = nameResource;
353e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik        setFilterType(FilterRepresentation.TYPE_FX);
363e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik        setTextId(nameResource);
373e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik        setEditorId(ImageOnlyEditor.ID);
383e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik        setShowParameterValue(false);
393e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik        setSupportsPartialRendering(true);
403e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik    }
413e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik
423e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik    @Override
433e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik    public String toString() {
443e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik        return "FilterFx: " + hashCode() + " : " + getName() + " bitmap rsc: " + mBitmapResource;
453e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik    }
463e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik
473e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik    @Override
483e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik    public synchronized FilterRepresentation clone() throws CloneNotSupportedException {
493e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik        FilterFxRepresentation representation = (FilterFxRepresentation) super.clone();
50b1b45bec6a3eed1fb95dabd95b1957a51341dc2aAart Bik        representation.setName(getName());
51754a4457ff34aa35336284e633be7ac0a23a683dYing Wang        representation.setBitmapResource(getBitmapResource());
523e40f4a7289bf0104e061dc36f17a776d4c122d4Aart Bik        representation.setNameResource(getNameResource());
53        return representation;
54    }
55
56    @Override
57    public synchronized void useParametersFrom(FilterRepresentation a) {
58        if (a instanceof FilterFxRepresentation) {
59            FilterFxRepresentation representation = (FilterFxRepresentation) a;
60            setName(representation.getName());
61            setBitmapResource(representation.getBitmapResource());
62            setNameResource(representation.getNameResource());
63        }
64    }
65
66    @Override
67    public boolean equals(FilterRepresentation representation) {
68        if (!super.equals(representation)) {
69            return false;
70        }
71        if (representation instanceof FilterFxRepresentation) {
72            FilterFxRepresentation fx = (FilterFxRepresentation) representation;
73            if (fx.mNameResource == mNameResource
74                    && fx.mBitmapResource == mBitmapResource) {
75                return true;
76            }
77        }
78        return false;
79    }
80
81    @Override
82    public boolean same(FilterRepresentation representation) {
83        if (!super.same(representation)) {
84            return false;
85        }
86        return equals(representation);
87    }
88
89    @Override
90    public boolean allowsMultipleInstances() {
91        return true;
92    }
93
94    public int getNameResource() {
95        return mNameResource;
96    }
97
98    public void setNameResource(int nameResource) {
99        mNameResource = nameResource;
100    }
101
102    public int getBitmapResource() {
103        return mBitmapResource;
104    }
105
106    public void setBitmapResource(int bitmapResource) {
107        mBitmapResource = bitmapResource;
108    }
109}
110