1d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard/*
2d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard * Copyright (C) 2013 The Android Open Source Project
3d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard *
4d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard * Licensed under the Apache License, Version 2.0 (the "License");
5d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard * you may not use this file except in compliance with the License.
6d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard * You may obtain a copy of the License at
7d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard *
8d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard *      http://www.apache.org/licenses/LICENSE-2.0
9d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard *
10d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard * Unless required by applicable law or agreed to in writing, software
11d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard * distributed under the License is distributed on an "AS IS" BASIS,
12d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard * See the License for the specific language governing permissions and
14d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard * limitations under the License.
15d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard */
16d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard
17d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroardpackage com.android.gallery3d.filtershow.filters;
18d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard
196900cad45d240c9a54b92991538b6a33652e766cnicolasroardimport com.android.gallery3d.filtershow.editors.ImageOnlyEditor;
20d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard
21d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroardpublic class FilterFxRepresentation extends FilterRepresentation {
22afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford   private static final String LOGTAG = "FilterFxRepresentation";
2341a03af3dec8915b5055570ad0631071346da40fnicolasroard    // TODO: When implementing serialization, we should find a unique way of
2441a03af3dec8915b5055570ad0631071346da40fnicolasroard    // specifying bitmaps / names (the resource IDs being random)
25d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard    private int mBitmapResource = 0;
26d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard    private int mNameResource = 0;
27d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard
28d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard    public FilterFxRepresentation(String name, int bitmapResource, int nameResource) {
29d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard        super(name);
303cb106ddd7ad0f8494ac9c7a33660831c1694295Ruben Brunk        setFilterClass(ImageFilterFx.class);
31d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard        mBitmapResource = bitmapResource;
32d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard        mNameResource = nameResource;
333cb106ddd7ad0f8494ac9c7a33660831c1694295Ruben Brunk        setFilterType(FilterRepresentation.TYPE_FX);
346900cad45d240c9a54b92991538b6a33652e766cnicolasroard        setTextId(nameResource);
356900cad45d240c9a54b92991538b6a33652e766cnicolasroard        setEditorId(ImageOnlyEditor.ID);
366900cad45d240c9a54b92991538b6a33652e766cnicolasroard        setShowParameterValue(false);
37e5498da0262fc836738aad63ea30286d8afa643cnicolasroard        setSupportsPartialRendering(true);
38d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard    }
39d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard
408ad8047fe862a1c6547e2aaf4bec73c20b6cbaecztenghui    @Override
41d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard    public String toString() {
428d2c7ee02c8fde53effc787c172b10b14ae34d42nicolasroard        return "FilterFx: " + hashCode() + " : " + getName() + " bitmap rsc: " + mBitmapResource;
43d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard    }
44d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard
45d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard    @Override
463f0034140c165b86fbaf5c0369f39431548308e9John Hoford    public FilterRepresentation copy() {
473f0034140c165b86fbaf5c0369f39431548308e9John Hoford        FilterFxRepresentation representation = new FilterFxRepresentation(getName(),0,0);
483f0034140c165b86fbaf5c0369f39431548308e9John Hoford        copyAllParameters(representation);
49d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard        return representation;
50d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard    }
51d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard
528ad8047fe862a1c6547e2aaf4bec73c20b6cbaecztenghui    @Override
533f0034140c165b86fbaf5c0369f39431548308e9John Hoford    protected void copyAllParameters(FilterRepresentation representation) {
543f0034140c165b86fbaf5c0369f39431548308e9John Hoford        super.copyAllParameters(representation);
553f0034140c165b86fbaf5c0369f39431548308e9John Hoford        representation.useParametersFrom(this);
563f0034140c165b86fbaf5c0369f39431548308e9John Hoford    }
573f0034140c165b86fbaf5c0369f39431548308e9John Hoford
583f0034140c165b86fbaf5c0369f39431548308e9John Hoford    @Override
598d2c7ee02c8fde53effc787c172b10b14ae34d42nicolasroard    public synchronized void useParametersFrom(FilterRepresentation a) {
60d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard        if (a instanceof FilterFxRepresentation) {
61d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard            FilterFxRepresentation representation = (FilterFxRepresentation) a;
62d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard            setName(representation.getName());
63667762f9381190c8a1d1c66bbaad15b680bb24b5ztenghui            setSerializationName(representation.getSerializationName());
64d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard            setBitmapResource(representation.getBitmapResource());
65d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard            setNameResource(representation.getNameResource());
66d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard        }
67d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard    }
68d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard
69d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard    @Override
70d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard    public boolean equals(FilterRepresentation representation) {
71d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard        if (!super.equals(representation)) {
72d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard            return false;
73d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard        }
74d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard        if (representation instanceof FilterFxRepresentation) {
75d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard            FilterFxRepresentation fx = (FilterFxRepresentation) representation;
76d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard            if (fx.mNameResource == mNameResource
77d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard                    && fx.mBitmapResource == mBitmapResource) {
78d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard                return true;
79d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard            }
80d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard        }
81d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard        return false;
82d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard    }
83d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard
848ad8047fe862a1c6547e2aaf4bec73c20b6cbaecztenghui    @Override
858d2c7ee02c8fde53effc787c172b10b14ae34d42nicolasroard    public boolean same(FilterRepresentation representation) {
868d2c7ee02c8fde53effc787c172b10b14ae34d42nicolasroard        if (!super.same(representation)) {
878d2c7ee02c8fde53effc787c172b10b14ae34d42nicolasroard            return false;
888d2c7ee02c8fde53effc787c172b10b14ae34d42nicolasroard        }
898d2c7ee02c8fde53effc787c172b10b14ae34d42nicolasroard        return equals(representation);
90d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard    }
91d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard
928ad8047fe862a1c6547e2aaf4bec73c20b6cbaecztenghui    @Override
93c9ca6d1eb85a71b7667f4c25d879e78cce16ac4cztenghui    public boolean allowsSingleInstanceOnly() {
948d2c7ee02c8fde53effc787c172b10b14ae34d42nicolasroard        return true;
95d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard    }
96d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard
97d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard    public int getNameResource() {
98d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard        return mNameResource;
99d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard    }
100d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard
101d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard    public void setNameResource(int nameResource) {
102d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard        mNameResource = nameResource;
103d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard    }
104d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard
105d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard    public int getBitmapResource() {
106d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard        return mBitmapResource;
107d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard    }
108d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard
109d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard    public void setBitmapResource(int bitmapResource) {
110d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard        mBitmapResource = bitmapResource;
111d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard    }
112d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard}
113