192e387187a872b3b0986b378954eb611aa83fdeanicolasroard/* 292e387187a872b3b0986b378954eb611aa83fdeanicolasroard * Copyright (C) 2013 The Android Open Source Project 392e387187a872b3b0986b378954eb611aa83fdeanicolasroard * 492e387187a872b3b0986b378954eb611aa83fdeanicolasroard * Licensed under the Apache License, Version 2.0 (the "License"); 592e387187a872b3b0986b378954eb611aa83fdeanicolasroard * you may not use this file except in compliance with the License. 692e387187a872b3b0986b378954eb611aa83fdeanicolasroard * You may obtain a copy of the License at 792e387187a872b3b0986b378954eb611aa83fdeanicolasroard * 892e387187a872b3b0986b378954eb611aa83fdeanicolasroard * http://www.apache.org/licenses/LICENSE-2.0 992e387187a872b3b0986b378954eb611aa83fdeanicolasroard * 1092e387187a872b3b0986b378954eb611aa83fdeanicolasroard * Unless required by applicable law or agreed to in writing, software 1192e387187a872b3b0986b378954eb611aa83fdeanicolasroard * distributed under the License is distributed on an "AS IS" BASIS, 1292e387187a872b3b0986b378954eb611aa83fdeanicolasroard * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1392e387187a872b3b0986b378954eb611aa83fdeanicolasroard * See the License for the specific language governing permissions and 1492e387187a872b3b0986b378954eb611aa83fdeanicolasroard * limitations under the License. 1592e387187a872b3b0986b378954eb611aa83fdeanicolasroard */ 1692e387187a872b3b0986b378954eb611aa83fdeanicolasroard 1792e387187a872b3b0986b378954eb611aa83fdeanicolasroardpackage com.android.gallery3d.filtershow.filters; 1892e387187a872b3b0986b378954eb611aa83fdeanicolasroard 1949798939f1bc58eaf5842bbc8bc5424284ab7930John Hofordimport android.graphics.Color; 20655afcf4a88cf9dcdbab708212df1dec0a4c05d6nicolasroardimport android.util.JsonReader; 21655afcf4a88cf9dcdbab708212df1dec0a4c05d6nicolasroardimport android.util.JsonWriter; 2249798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford 236900cad45d240c9a54b92991538b6a33652e766cnicolasroardimport com.android.gallery3d.R; 2449798939f1bc58eaf5842bbc8bc5424284ab7930John Hofordimport com.android.gallery3d.filtershow.controller.BasicParameterInt; 2549798939f1bc58eaf5842bbc8bc5424284ab7930John Hofordimport com.android.gallery3d.filtershow.controller.Parameter; 2649798939f1bc58eaf5842bbc8bc5424284ab7930John Hofordimport com.android.gallery3d.filtershow.controller.ParameterColor; 2749798939f1bc58eaf5842bbc8bc5424284ab7930John Hofordimport com.android.gallery3d.filtershow.editors.EditorColorBorder; 286900cad45d240c9a54b92991538b6a33652e766cnicolasroard 29655afcf4a88cf9dcdbab708212df1dec0a4c05d6nicolasroardimport java.io.IOException; 30655afcf4a88cf9dcdbab708212df1dec0a4c05d6nicolasroard 3192e387187a872b3b0986b378954eb611aa83fdeanicolasroardpublic class FilterColorBorderRepresentation extends FilterRepresentation { 3249798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford private static final String LOGTAG = "FilterColorBorderRepresentation"; 3349798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford private static final String SERIALIZATION_NAME = "COLORBORDER"; 3449798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford 3549798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford public static final int PARAM_SIZE = 0; 3649798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford public static final int PARAM_RADIUS = 1; 3749798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford public static final int PARAM_COLOR = 2; 3849798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford public static int DEFAULT_MENU_COLOR1 = Color.WHITE; 3949798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford public static int DEFAULT_MENU_COLOR2 = Color.BLACK; 4049798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford public static int DEFAULT_MENU_COLOR3 = Color.GRAY; 4149798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford public static int DEFAULT_MENU_COLOR4 = 0xFFFFCCAA; 4249798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford public static int DEFAULT_MENU_COLOR5 = 0xFFAAAAAA; 43ae068f80895d7d075064a5ded59069425b72271fJohn Hoford private BasicParameterInt mParamSize = new BasicParameterInt(PARAM_SIZE, 3, 2, 30); 44ae068f80895d7d075064a5ded59069425b72271fJohn Hoford private BasicParameterInt mParamRadius = new BasicParameterInt(PARAM_RADIUS, 2, 0, 100); 4549798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford private ParameterColor mParamColor = new ParameterColor(PARAM_COLOR, DEFAULT_MENU_COLOR1); 4649798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford 4749798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford private Parameter[] mAllParam = { 4849798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford mParamSize, 4949798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford mParamRadius, 5049798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford mParamColor 5149798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford }; 5249798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford private int mPramMode; 5392e387187a872b3b0986b378954eb611aa83fdeanicolasroard 5492e387187a872b3b0986b378954eb611aa83fdeanicolasroard public FilterColorBorderRepresentation(int color, int size, int radius) { 5592e387187a872b3b0986b378954eb611aa83fdeanicolasroard super("ColorBorder"); 5649798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford setSerializationName(SERIALIZATION_NAME); 573cb106ddd7ad0f8494ac9c7a33660831c1694295Ruben Brunk setFilterType(FilterRepresentation.TYPE_BORDER); 586900cad45d240c9a54b92991538b6a33652e766cnicolasroard setTextId(R.string.borders); 5949798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford setEditorId(EditorColorBorder.ID); 606900cad45d240c9a54b92991538b6a33652e766cnicolasroard setShowParameterValue(false); 6149798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford setFilterClass(ImageFilterColorBorder.class); 6249798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford mParamColor.setValue(color); 6349798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford mParamSize.setValue(size); 64655afcf4a88cf9dcdbab708212df1dec0a4c05d6nicolasroard mParamRadius.setValue(radius); 65ae068f80895d7d075064a5ded59069425b72271fJohn Hoford mParamColor.setColorpalette(new int[]{ 66ae068f80895d7d075064a5ded59069425b72271fJohn Hoford DEFAULT_MENU_COLOR1, 67ae068f80895d7d075064a5ded59069425b72271fJohn Hoford DEFAULT_MENU_COLOR2, 68ae068f80895d7d075064a5ded59069425b72271fJohn Hoford DEFAULT_MENU_COLOR3, 69ae068f80895d7d075064a5ded59069425b72271fJohn Hoford DEFAULT_MENU_COLOR4, 70ae068f80895d7d075064a5ded59069425b72271fJohn Hoford DEFAULT_MENU_COLOR5}); 7192e387187a872b3b0986b378954eb611aa83fdeanicolasroard } 7292e387187a872b3b0986b378954eb611aa83fdeanicolasroard 7392e387187a872b3b0986b378954eb611aa83fdeanicolasroard public String toString() { 7492e387187a872b3b0986b378954eb611aa83fdeanicolasroard return "FilterBorder: " + getName(); 7592e387187a872b3b0986b378954eb611aa83fdeanicolasroard } 7692e387187a872b3b0986b378954eb611aa83fdeanicolasroard 7792e387187a872b3b0986b378954eb611aa83fdeanicolasroard @Override 783f0034140c165b86fbaf5c0369f39431548308e9John Hoford public FilterRepresentation copy() { 7949798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford FilterColorBorderRepresentation representation = 8049798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford new FilterColorBorderRepresentation(0, 0, 0); 813f0034140c165b86fbaf5c0369f39431548308e9John Hoford copyAllParameters(representation); 8292e387187a872b3b0986b378954eb611aa83fdeanicolasroard return representation; 8392e387187a872b3b0986b378954eb611aa83fdeanicolasroard } 8492e387187a872b3b0986b378954eb611aa83fdeanicolasroard 853f0034140c165b86fbaf5c0369f39431548308e9John Hoford @Override 863f0034140c165b86fbaf5c0369f39431548308e9John Hoford protected void copyAllParameters(FilterRepresentation representation) { 873f0034140c165b86fbaf5c0369f39431548308e9John Hoford super.copyAllParameters(representation); 883f0034140c165b86fbaf5c0369f39431548308e9John Hoford representation.useParametersFrom(this); 893f0034140c165b86fbaf5c0369f39431548308e9John Hoford } 903f0034140c165b86fbaf5c0369f39431548308e9John Hoford 9192e387187a872b3b0986b378954eb611aa83fdeanicolasroard public void useParametersFrom(FilterRepresentation a) { 9292e387187a872b3b0986b378954eb611aa83fdeanicolasroard if (a instanceof FilterColorBorderRepresentation) { 9392e387187a872b3b0986b378954eb611aa83fdeanicolasroard FilterColorBorderRepresentation representation = (FilterColorBorderRepresentation) a; 9492e387187a872b3b0986b378954eb611aa83fdeanicolasroard setName(representation.getName()); 9592e387187a872b3b0986b378954eb611aa83fdeanicolasroard setColor(representation.getColor()); 96ae068f80895d7d075064a5ded59069425b72271fJohn Hoford mParamColor.copyPalletFrom(representation.mParamColor); 9792e387187a872b3b0986b378954eb611aa83fdeanicolasroard setBorderSize(representation.getBorderSize()); 9892e387187a872b3b0986b378954eb611aa83fdeanicolasroard setBorderRadius(representation.getBorderRadius()); 9992e387187a872b3b0986b378954eb611aa83fdeanicolasroard } 10092e387187a872b3b0986b378954eb611aa83fdeanicolasroard } 10192e387187a872b3b0986b378954eb611aa83fdeanicolasroard 10292e387187a872b3b0986b378954eb611aa83fdeanicolasroard @Override 10392e387187a872b3b0986b378954eb611aa83fdeanicolasroard public boolean equals(FilterRepresentation representation) { 10492e387187a872b3b0986b378954eb611aa83fdeanicolasroard if (!super.equals(representation)) { 10592e387187a872b3b0986b378954eb611aa83fdeanicolasroard return false; 10692e387187a872b3b0986b378954eb611aa83fdeanicolasroard } 10792e387187a872b3b0986b378954eb611aa83fdeanicolasroard if (representation instanceof FilterColorBorderRepresentation) { 10892e387187a872b3b0986b378954eb611aa83fdeanicolasroard FilterColorBorderRepresentation border = (FilterColorBorderRepresentation) representation; 10949798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford if (border.mParamColor.getValue() == mParamColor.getValue() 11049798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford && border.mParamRadius.getValue() == mParamRadius.getValue() 11149798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford && border.mParamSize.getValue() == mParamSize.getValue()) { 11249798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford 11392e387187a872b3b0986b378954eb611aa83fdeanicolasroard return true; 11492e387187a872b3b0986b378954eb611aa83fdeanicolasroard } 11592e387187a872b3b0986b378954eb611aa83fdeanicolasroard } 11692e387187a872b3b0986b378954eb611aa83fdeanicolasroard return false; 11792e387187a872b3b0986b378954eb611aa83fdeanicolasroard } 11892e387187a872b3b0986b378954eb611aa83fdeanicolasroard 119c9ca6d1eb85a71b7667f4c25d879e78cce16ac4cztenghui public boolean allowsSingleInstanceOnly() { 12092e387187a872b3b0986b378954eb611aa83fdeanicolasroard return true; 12192e387187a872b3b0986b378954eb611aa83fdeanicolasroard } 12292e387187a872b3b0986b378954eb611aa83fdeanicolasroard 12349798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford public Parameter getParam(int mode) { 12449798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford return mAllParam[mode]; 12549798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford } 12649798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford 1276900cad45d240c9a54b92991538b6a33652e766cnicolasroard @Override 1286900cad45d240c9a54b92991538b6a33652e766cnicolasroard public int getTextId() { 129521e94c88a371981142312c777a9842a55338901nicolasroard if (super.getTextId() == 0) { 130521e94c88a371981142312c777a9842a55338901nicolasroard return R.string.borders; 131521e94c88a371981142312c777a9842a55338901nicolasroard } 132521e94c88a371981142312c777a9842a55338901nicolasroard return super.getTextId(); 1336900cad45d240c9a54b92991538b6a33652e766cnicolasroard } 1346900cad45d240c9a54b92991538b6a33652e766cnicolasroard 13592e387187a872b3b0986b378954eb611aa83fdeanicolasroard public int getColor() { 13649798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford return mParamColor.getValue(); 13792e387187a872b3b0986b378954eb611aa83fdeanicolasroard } 13892e387187a872b3b0986b378954eb611aa83fdeanicolasroard 13992e387187a872b3b0986b378954eb611aa83fdeanicolasroard public void setColor(int color) { 14049798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford mParamColor.setValue(color); 14192e387187a872b3b0986b378954eb611aa83fdeanicolasroard } 14292e387187a872b3b0986b378954eb611aa83fdeanicolasroard 14392e387187a872b3b0986b378954eb611aa83fdeanicolasroard public int getBorderSize() { 14449798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford return mParamSize.getValue(); 14592e387187a872b3b0986b378954eb611aa83fdeanicolasroard } 14692e387187a872b3b0986b378954eb611aa83fdeanicolasroard 14792e387187a872b3b0986b378954eb611aa83fdeanicolasroard public void setBorderSize(int borderSize) { 14849798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford mParamSize.setValue(borderSize); 14992e387187a872b3b0986b378954eb611aa83fdeanicolasroard } 15092e387187a872b3b0986b378954eb611aa83fdeanicolasroard 15192e387187a872b3b0986b378954eb611aa83fdeanicolasroard public int getBorderRadius() { 15249798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford return mParamRadius.getValue(); 15392e387187a872b3b0986b378954eb611aa83fdeanicolasroard } 15492e387187a872b3b0986b378954eb611aa83fdeanicolasroard 15592e387187a872b3b0986b378954eb611aa83fdeanicolasroard public void setBorderRadius(int borderRadius) { 15649798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford mParamRadius.setValue(borderRadius); 15749798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford } 15849798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford 15949798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford public void setPramMode(int pramMode) { 16049798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford this.mPramMode = pramMode; 16149798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford } 16249798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford 16349798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford public Parameter getCurrentParam() { 16449798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford return mAllParam[mPramMode]; 16549798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford } 16649798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford 16749798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford public String getValueString() { 16849798939f1bc58eaf5842bbc8bc5424284ab7930John Hoford return ""; 16992e387187a872b3b0986b378954eb611aa83fdeanicolasroard } 170655afcf4a88cf9dcdbab708212df1dec0a4c05d6nicolasroard 171655afcf4a88cf9dcdbab708212df1dec0a4c05d6nicolasroard // Serialization... 172655afcf4a88cf9dcdbab708212df1dec0a4c05d6nicolasroard 173655afcf4a88cf9dcdbab708212df1dec0a4c05d6nicolasroard public void serializeRepresentation(JsonWriter writer) throws IOException { 174655afcf4a88cf9dcdbab708212df1dec0a4c05d6nicolasroard writer.beginObject(); 175655afcf4a88cf9dcdbab708212df1dec0a4c05d6nicolasroard { 176655afcf4a88cf9dcdbab708212df1dec0a4c05d6nicolasroard writer.name("size"); 177655afcf4a88cf9dcdbab708212df1dec0a4c05d6nicolasroard writer.value(mParamSize.getValue()); 178655afcf4a88cf9dcdbab708212df1dec0a4c05d6nicolasroard writer.name("radius"); 179655afcf4a88cf9dcdbab708212df1dec0a4c05d6nicolasroard writer.value(mParamRadius.getValue()); 180655afcf4a88cf9dcdbab708212df1dec0a4c05d6nicolasroard writer.name("color"); 181655afcf4a88cf9dcdbab708212df1dec0a4c05d6nicolasroard writer.value(mParamColor.getValue()); 182655afcf4a88cf9dcdbab708212df1dec0a4c05d6nicolasroard } 183655afcf4a88cf9dcdbab708212df1dec0a4c05d6nicolasroard writer.endObject(); 184655afcf4a88cf9dcdbab708212df1dec0a4c05d6nicolasroard } 185655afcf4a88cf9dcdbab708212df1dec0a4c05d6nicolasroard 186655afcf4a88cf9dcdbab708212df1dec0a4c05d6nicolasroard public void deSerializeRepresentation(JsonReader reader) throws IOException { 187655afcf4a88cf9dcdbab708212df1dec0a4c05d6nicolasroard reader.beginObject(); 188655afcf4a88cf9dcdbab708212df1dec0a4c05d6nicolasroard while (reader.hasNext()) { 189655afcf4a88cf9dcdbab708212df1dec0a4c05d6nicolasroard String name = reader.nextName(); 190655afcf4a88cf9dcdbab708212df1dec0a4c05d6nicolasroard if (name.equalsIgnoreCase("size")) { 191655afcf4a88cf9dcdbab708212df1dec0a4c05d6nicolasroard mParamSize.setValue(reader.nextInt()); 192655afcf4a88cf9dcdbab708212df1dec0a4c05d6nicolasroard } else if (name.equalsIgnoreCase("radius")) { 193655afcf4a88cf9dcdbab708212df1dec0a4c05d6nicolasroard mParamRadius.setValue(reader.nextInt()); 194655afcf4a88cf9dcdbab708212df1dec0a4c05d6nicolasroard } else if (name.equalsIgnoreCase("color")) { 195655afcf4a88cf9dcdbab708212df1dec0a4c05d6nicolasroard mParamColor.setValue(reader.nextInt()); 196655afcf4a88cf9dcdbab708212df1dec0a4c05d6nicolasroard } else { 197655afcf4a88cf9dcdbab708212df1dec0a4c05d6nicolasroard reader.skipValue(); 198655afcf4a88cf9dcdbab708212df1dec0a4c05d6nicolasroard } 199655afcf4a88cf9dcdbab708212df1dec0a4c05d6nicolasroard } 200655afcf4a88cf9dcdbab708212df1dec0a4c05d6nicolasroard reader.endObject(); 201655afcf4a88cf9dcdbab708212df1dec0a4c05d6nicolasroard } 20292e387187a872b3b0986b378954eb611aa83fdeanicolasroard} 203