FilterFxRepresentation.java revision 8ad8047fe862a1c6547e2aaf4bec73c20b6cbaec
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 SERIALIZATION_NAME = "LUT3D";
23afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford   private static final String LOGTAG = "FilterFxRepresentation";
2441a03af3dec8915b5055570ad0631071346da40fnicolasroard    // TODO: When implementing serialization, we should find a unique way of
2541a03af3dec8915b5055570ad0631071346da40fnicolasroard    // specifying bitmaps / names (the resource IDs being random)
26d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard    private int mBitmapResource = 0;
27d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard    private int mNameResource = 0;
28d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard
29d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard    public FilterFxRepresentation(String name, int bitmapResource, int nameResource) {
30d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard        super(name);
318ad8047fe862a1c6547e2aaf4bec73c20b6cbaecztenghui        setSerializationName(SERIALIZATION_NAME + "_" + name);
32afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford
33d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard        mBitmapResource = bitmapResource;
34d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard        mNameResource = nameResource;
35d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard        setFilterClass(ImageFilterFx.class);
36f60760478ec7c78446be0e0c6bc5502d1557974cnicolasroard        setPriority(FilterRepresentation.TYPE_FX);
376900cad45d240c9a54b92991538b6a33652e766cnicolasroard        setTextId(nameResource);
386900cad45d240c9a54b92991538b6a33652e766cnicolasroard        setEditorId(ImageOnlyEditor.ID);
396900cad45d240c9a54b92991538b6a33652e766cnicolasroard        setShowEditingControls(false);
406900cad45d240c9a54b92991538b6a33652e766cnicolasroard        setShowParameterValue(false);
416900cad45d240c9a54b92991538b6a33652e766cnicolasroard        setShowUtilityPanel(false);
42e5498da0262fc836738aad63ea30286d8afa643cnicolasroard        setSupportsPartialRendering(true);
43d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard    }
44d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard
458ad8047fe862a1c6547e2aaf4bec73c20b6cbaecztenghui    @Override
46d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard    public String toString() {
478d2c7ee02c8fde53effc787c172b10b14ae34d42nicolasroard        return "FilterFx: " + hashCode() + " : " + getName() + " bitmap rsc: " + mBitmapResource;
48d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard    }
49d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard
50d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard    @Override
518d2c7ee02c8fde53effc787c172b10b14ae34d42nicolasroard    public synchronized FilterRepresentation clone() throws CloneNotSupportedException {
52d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard        FilterFxRepresentation representation = (FilterFxRepresentation) super.clone();
53d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard        representation.setName(getName());
54d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard        representation.setBitmapResource(getBitmapResource());
55d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard        representation.setNameResource(getNameResource());
56d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard        return representation;
57d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard    }
58d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard
598ad8047fe862a1c6547e2aaf4bec73c20b6cbaecztenghui    @Override
608d2c7ee02c8fde53effc787c172b10b14ae34d42nicolasroard    public synchronized void useParametersFrom(FilterRepresentation a) {
61d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard        if (a instanceof FilterFxRepresentation) {
62d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard            FilterFxRepresentation representation = (FilterFxRepresentation) a;
63d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard            setName(representation.getName());
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
938d2c7ee02c8fde53effc787c172b10b14ae34d42nicolasroard    public boolean allowsMultipleInstances() {
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