Home | History | Annotate | Download | only in filters
      1 /*
      2  * Copyright (C) 2013 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package com.android.gallery3d.filtershow.filters;
     18 
     19 import com.android.gallery3d.app.Log;
     20 import com.android.gallery3d.filtershow.editors.BasicEditor;
     21 
     22 public class FilterRepresentation implements Cloneable {
     23     private static final String LOGTAG = "FilterRepresentation";
     24     private static final boolean DEBUG = false;
     25     private String mName;
     26     private int mPriority = TYPE_NORMAL;
     27     private Class mFilterClass;
     28     private boolean mSupportsPartialRendering = false;
     29     private int mTextId = 0;
     30     private int mEditorId = BasicEditor.ID;
     31     private int mButtonId = 0;
     32     private int mOverlayId = 0;
     33     private boolean mOverlayOnly = false;
     34     private boolean mShowEditingControls = true;
     35     private boolean mShowParameterValue = true;
     36     private boolean mShowUtilityPanel = true;
     37 
     38     public static final byte TYPE_BORDER = 1;
     39     public static final byte TYPE_FX = 2;
     40     public static final byte TYPE_WBALANCE = 3;
     41     public static final byte TYPE_VIGNETTE = 4;
     42     public static final byte TYPE_NORMAL = 5;
     43     public static final byte TYPE_TINYPLANET = 6;
     44 
     45     private FilterRepresentation mTempRepresentation = null;
     46 
     47     public FilterRepresentation(String name) {
     48         mName = name;
     49     }
     50 
     51     @Override
     52     public FilterRepresentation clone() throws CloneNotSupportedException {
     53         FilterRepresentation representation = (FilterRepresentation) super.clone();
     54         representation.setName(getName());
     55         representation.setPriority(getPriority());
     56         representation.setFilterClass(getFilterClass());
     57         representation.setSupportsPartialRendering(supportsPartialRendering());
     58         representation.setTextId(getTextId());
     59         representation.setEditorId(getEditorId());
     60         representation.setButtonId(getButtonId());
     61         representation.setOverlayId(getOverlayId());
     62         representation.setOverlayOnly(getOverlayOnly());
     63         representation.setShowEditingControls(showEditingControls());
     64         representation.setShowParameterValue(showParameterValue());
     65         representation.setShowUtilityPanel(showUtilityPanel());
     66         representation.mTempRepresentation =
     67                 mTempRepresentation != null ? mTempRepresentation.clone() : null;
     68         if (DEBUG) {
     69             Log.v(LOGTAG, "cloning from <" + this + "> to <" + representation + ">");
     70         }
     71         return representation;
     72     }
     73 
     74     public boolean equals(FilterRepresentation representation) {
     75         if (representation == null) {
     76             return false;
     77         }
     78         if (representation.mFilterClass == representation.mFilterClass
     79                 && representation.mName.equalsIgnoreCase(mName)
     80                 && representation.mPriority == mPriority
     81                 && representation.mSupportsPartialRendering == mSupportsPartialRendering
     82                 && representation.mTextId == mTextId
     83                 && representation.mEditorId == mEditorId
     84                 && representation.mButtonId == mButtonId
     85                 && representation.mOverlayId == mOverlayId
     86                 && representation.mOverlayOnly == mOverlayOnly
     87                 && representation.mShowEditingControls == mShowEditingControls
     88                 && representation.mShowParameterValue == mShowParameterValue
     89                 && representation.mShowUtilityPanel == mShowUtilityPanel) {
     90             return true;
     91         }
     92         return false;
     93     }
     94 
     95     public String toString() {
     96         return mName;
     97     }
     98 
     99     public void setName(String name) {
    100         mName = name;
    101     }
    102 
    103     public String getName() {
    104         return mName;
    105     }
    106 
    107     public void setPriority(int priority) {
    108         mPriority = priority;
    109     }
    110 
    111     public int getPriority() {
    112         return mPriority;
    113     }
    114 
    115     public boolean isNil() {
    116         return false;
    117     }
    118 
    119     public boolean supportsPartialRendering() {
    120         return false && mSupportsPartialRendering; // disable for now
    121     }
    122 
    123     public void setSupportsPartialRendering(boolean value) {
    124         mSupportsPartialRendering = value;
    125     }
    126 
    127     public void useParametersFrom(FilterRepresentation a) {
    128     }
    129 
    130     public void clearTempRepresentation() {
    131         mTempRepresentation = null;
    132     }
    133 
    134     public synchronized void updateTempParametersFrom(FilterRepresentation representation) {
    135         if (mTempRepresentation == null) {
    136             try {
    137                 mTempRepresentation = representation.clone();
    138             } catch (CloneNotSupportedException e) {
    139                 e.printStackTrace();
    140             }
    141         } else {
    142             mTempRepresentation.useParametersFrom(representation);
    143         }
    144     }
    145 
    146     public synchronized void synchronizeRepresentation() {
    147         if (mTempRepresentation != null) {
    148             useParametersFrom(mTempRepresentation);
    149         }
    150     }
    151 
    152     public boolean allowsMultipleInstances() {
    153         return false;
    154     }
    155 
    156     public Class getFilterClass() {
    157         return mFilterClass;
    158     }
    159 
    160     public void setFilterClass(Class filterClass) {
    161         mFilterClass = filterClass;
    162     }
    163 
    164     public boolean same(FilterRepresentation b) {
    165         if (b == null) {
    166             return false;
    167         }
    168         return getFilterClass() == b.getFilterClass();
    169     }
    170 
    171     public int getTextId() {
    172         return mTextId;
    173     }
    174 
    175     public void setTextId(int textId) {
    176         mTextId = textId;
    177     }
    178 
    179     public int getButtonId() {
    180         return mButtonId;
    181     }
    182 
    183     public void setButtonId(int buttonId) {
    184         mButtonId = buttonId;
    185     }
    186 
    187     public int getOverlayId() {
    188         return mOverlayId;
    189     }
    190 
    191     public void setOverlayId(int overlayId) {
    192         mOverlayId = overlayId;
    193     }
    194 
    195     public boolean getOverlayOnly() {
    196         return mOverlayOnly;
    197     }
    198 
    199     public void setOverlayOnly(boolean value) {
    200         mOverlayOnly = value;
    201     }
    202 
    203     final public int getEditorId() {
    204         return mEditorId;
    205     }
    206 
    207     public int[] getEditorIds() {
    208         return new int[] {
    209         mEditorId };
    210     }
    211 
    212     public void setEditorId(int editorId) {
    213         mEditorId = editorId;
    214     }
    215 
    216     public boolean showEditingControls() {
    217         return mShowEditingControls;
    218     }
    219 
    220     public void setShowEditingControls(boolean showEditingControls) {
    221         mShowEditingControls = showEditingControls;
    222     }
    223 
    224     public boolean showParameterValue() {
    225         return mShowParameterValue;
    226     }
    227 
    228     public void setShowParameterValue(boolean showParameterValue) {
    229         mShowParameterValue = showParameterValue;
    230     }
    231 
    232     public boolean showUtilityPanel() {
    233         return mShowUtilityPanel;
    234     }
    235 
    236     public void setShowUtilityPanel(boolean showUtilityPanel) {
    237         mShowUtilityPanel = showUtilityPanel;
    238     }
    239 
    240     public String getStateRepresentation() {
    241         return "";
    242     }
    243 
    244 }
    245