171f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard/* 271f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard * Copyright (C) 2013 The Android Open Source Project 371f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard * 471f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard * Licensed under the Apache License, Version 2.0 (the "License"); 571f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard * you may not use this file except in compliance with the License. 671f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard * You may obtain a copy of the License at 771f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard * 871f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard * http://www.apache.org/licenses/LICENSE-2.0 971f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard * 1071f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard * Unless required by applicable law or agreed to in writing, software 1171f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard * distributed under the License is distributed on an "AS IS" BASIS, 1271f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1371f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard * See the License for the specific language governing permissions and 1471f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard * limitations under the License. 1571f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard */ 1671f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard 1771f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroardpackage com.android.gallery3d.filtershow.filters; 1871f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard 195762138f8c561cb377d52f3379b89977fc2fbc14John Hofordimport android.util.JsonReader; 205762138f8c561cb377d52f3379b89977fc2fbc14John Hofordimport android.util.JsonWriter; 2136e567afff815bc821c2859ebdeec86b1fca1ef6nicolasroardimport android.util.Log; 22099e5fc37091823f448b95bc4f3d3511e9919fbfztenghui 236900cad45d240c9a54b92991538b6a33652e766cnicolasroardimport com.android.gallery3d.filtershow.editors.BasicEditor; 2471f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard 255762138f8c561cb377d52f3379b89977fc2fbc14John Hofordimport java.io.IOException; 265762138f8c561cb377d52f3379b89977fc2fbc14John Hofordimport java.util.ArrayList; 275762138f8c561cb377d52f3379b89977fc2fbc14John Hoford 283f0034140c165b86fbaf5c0369f39431548308e9John Hofordpublic class FilterRepresentation { 2971f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard private static final String LOGTAG = "FilterRepresentation"; 308d2c7ee02c8fde53effc787c172b10b14ae34d42nicolasroard private static final boolean DEBUG = false; 3171f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard private String mName; 32f60760478ec7c78446be0e0c6bc5502d1557974cnicolasroard private int mPriority = TYPE_NORMAL; 33af85f6423ad5969f12ed68fd12a0fe3abce3e409nicolasroard private Class<?> mFilterClass; 34e5498da0262fc836738aad63ea30286d8afa643cnicolasroard private boolean mSupportsPartialRendering = false; 356900cad45d240c9a54b92991538b6a33652e766cnicolasroard private int mTextId = 0; 366900cad45d240c9a54b92991538b6a33652e766cnicolasroard private int mEditorId = BasicEditor.ID; 376900cad45d240c9a54b92991538b6a33652e766cnicolasroard private int mButtonId = 0; 386900cad45d240c9a54b92991538b6a33652e766cnicolasroard private int mOverlayId = 0; 39d61a2f9fcaad0309132b6b9b666c3dc6df62fed7John Hoford private boolean mOverlayOnly = false; 406900cad45d240c9a54b92991538b6a33652e766cnicolasroard private boolean mShowParameterValue = true; 41edf4b095a1d904df6c02d49e3ec575c5c3c9c749nicolasroard private boolean mIsBooleanFilter = false; 42afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford private String mSerializationName; 43cef6ad5d4a60a6e2960f7f72de624d5e60b3908anicolasroard public static final byte TYPE_BORDER = 1; 44cef6ad5d4a60a6e2960f7f72de624d5e60b3908anicolasroard public static final byte TYPE_FX = 2; 45cef6ad5d4a60a6e2960f7f72de624d5e60b3908anicolasroard public static final byte TYPE_WBALANCE = 3; 46cef6ad5d4a60a6e2960f7f72de624d5e60b3908anicolasroard public static final byte TYPE_VIGNETTE = 4; 47cef6ad5d4a60a6e2960f7f72de624d5e60b3908anicolasroard public static final byte TYPE_NORMAL = 5; 48cef6ad5d4a60a6e2960f7f72de624d5e60b3908anicolasroard public static final byte TYPE_TINYPLANET = 6; 4976a8b489a62ed82919c8b6339123488c09fc0168Ruben Brunk public static final byte TYPE_GEOMETRY = 7; 505762138f8c561cb377d52f3379b89977fc2fbc14John Hoford protected static final String NAME_TAG = "Name"; 51cef6ad5d4a60a6e2960f7f72de624d5e60b3908anicolasroard 5271f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard public FilterRepresentation(String name) { 5371f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard mName = name; 5471f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard } 5571f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard 563f0034140c165b86fbaf5c0369f39431548308e9John Hoford public FilterRepresentation copy(){ 573f0034140c165b86fbaf5c0369f39431548308e9John Hoford FilterRepresentation representation = new FilterRepresentation(mName); 583f0034140c165b86fbaf5c0369f39431548308e9John Hoford representation.useParametersFrom(this); 593f0034140c165b86fbaf5c0369f39431548308e9John Hoford return representation; 603f0034140c165b86fbaf5c0369f39431548308e9John Hoford } 613f0034140c165b86fbaf5c0369f39431548308e9John Hoford 623f0034140c165b86fbaf5c0369f39431548308e9John Hoford protected void copyAllParameters(FilterRepresentation representation) { 6371f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard representation.setName(getName()); 64d0bab8c396b0b10fdfd07a9d4fccf969d8d46747nicolasroard representation.setFilterClass(getFilterClass()); 653cb106ddd7ad0f8494ac9c7a33660831c1694295Ruben Brunk representation.setFilterType(getFilterType()); 66e5498da0262fc836738aad63ea30286d8afa643cnicolasroard representation.setSupportsPartialRendering(supportsPartialRendering()); 676900cad45d240c9a54b92991538b6a33652e766cnicolasroard representation.setTextId(getTextId()); 686900cad45d240c9a54b92991538b6a33652e766cnicolasroard representation.setEditorId(getEditorId()); 696900cad45d240c9a54b92991538b6a33652e766cnicolasroard representation.setOverlayId(getOverlayId()); 70d61a2f9fcaad0309132b6b9b666c3dc6df62fed7John Hoford representation.setOverlayOnly(getOverlayOnly()); 716900cad45d240c9a54b92991538b6a33652e766cnicolasroard representation.setShowParameterValue(showParameterValue()); 72afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford representation.mSerializationName = mSerializationName; 73edf4b095a1d904df6c02d49e3ec575c5c3c9c749nicolasroard representation.setIsBooleanFilter(isBooleanFilter()); 7471f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard } 7571f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard 7671f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard public boolean equals(FilterRepresentation representation) { 7792e387187a872b3b0986b378954eb611aa83fdeanicolasroard if (representation == null) { 7892e387187a872b3b0986b378954eb611aa83fdeanicolasroard return false; 7992e387187a872b3b0986b378954eb611aa83fdeanicolasroard } 80c9ca6d1eb85a71b7667f4c25d879e78cce16ac4cztenghui if (representation.mFilterClass == mFilterClass 8171f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard && representation.mName.equalsIgnoreCase(mName) 8271f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard && representation.mPriority == mPriority 83d2e9ea0ce1949e192e80ce806e702606694440acztenghui // TODO: After we enable partial rendering, we can switch back 84d2e9ea0ce1949e192e80ce806e702606694440acztenghui // to use member variable here. 85d2e9ea0ce1949e192e80ce806e702606694440acztenghui && representation.supportsPartialRendering() == supportsPartialRendering() 866900cad45d240c9a54b92991538b6a33652e766cnicolasroard && representation.mTextId == mTextId 876900cad45d240c9a54b92991538b6a33652e766cnicolasroard && representation.mEditorId == mEditorId 886900cad45d240c9a54b92991538b6a33652e766cnicolasroard && representation.mButtonId == mButtonId 896900cad45d240c9a54b92991538b6a33652e766cnicolasroard && representation.mOverlayId == mOverlayId 90d61a2f9fcaad0309132b6b9b666c3dc6df62fed7John Hoford && representation.mOverlayOnly == mOverlayOnly 91edf4b095a1d904df6c02d49e3ec575c5c3c9c749nicolasroard && representation.mShowParameterValue == mShowParameterValue 92edf4b095a1d904df6c02d49e3ec575c5c3c9c749nicolasroard && representation.mIsBooleanFilter == mIsBooleanFilter) { 9371f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard return true; 9471f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard } 9571f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard return false; 9671f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard } 9771f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard 98edf4b095a1d904df6c02d49e3ec575c5c3c9c749nicolasroard public boolean isBooleanFilter() { 99edf4b095a1d904df6c02d49e3ec575c5c3c9c749nicolasroard return mIsBooleanFilter; 100edf4b095a1d904df6c02d49e3ec575c5c3c9c749nicolasroard } 101edf4b095a1d904df6c02d49e3ec575c5c3c9c749nicolasroard 102edf4b095a1d904df6c02d49e3ec575c5c3c9c749nicolasroard public void setIsBooleanFilter(boolean value) { 103edf4b095a1d904df6c02d49e3ec575c5c3c9c749nicolasroard mIsBooleanFilter = value; 104edf4b095a1d904df6c02d49e3ec575c5c3c9c749nicolasroard } 105edf4b095a1d904df6c02d49e3ec575c5c3c9c749nicolasroard 1063cb106ddd7ad0f8494ac9c7a33660831c1694295Ruben Brunk @Override 10771f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard public String toString() { 10871f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard return mName; 10971f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard } 11071f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard 11171f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard public void setName(String name) { 11271f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard mName = name; 11371f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard } 11471f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard 11571f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard public String getName() { 11671f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard return mName; 11771f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard } 11871f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard 119afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford public void setSerializationName(String sname) { 120afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford mSerializationName = sname; 121afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford } 122afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford 123afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford public String getSerializationName() { 124afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford return mSerializationName; 125afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford } 126afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford 1273cb106ddd7ad0f8494ac9c7a33660831c1694295Ruben Brunk public void setFilterType(int priority) { 12871f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard mPriority = priority; 12971f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard } 13071f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard 1313cb106ddd7ad0f8494ac9c7a33660831c1694295Ruben Brunk public int getFilterType() { 13271f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard return mPriority; 13371f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard } 13471f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard 13571f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard public boolean isNil() { 13671f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard return false; 13771f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard } 13871f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard 139e5498da0262fc836738aad63ea30286d8afa643cnicolasroard public boolean supportsPartialRendering() { 140430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard return mSupportsPartialRendering; 141e5498da0262fc836738aad63ea30286d8afa643cnicolasroard } 142e5498da0262fc836738aad63ea30286d8afa643cnicolasroard 143e5498da0262fc836738aad63ea30286d8afa643cnicolasroard public void setSupportsPartialRendering(boolean value) { 144e5498da0262fc836738aad63ea30286d8afa643cnicolasroard mSupportsPartialRendering = value; 145e5498da0262fc836738aad63ea30286d8afa643cnicolasroard } 146e5498da0262fc836738aad63ea30286d8afa643cnicolasroard 14771f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard public void useParametersFrom(FilterRepresentation a) { 14871f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard } 14971f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard 150c9ca6d1eb85a71b7667f4c25d879e78cce16ac4cztenghui public boolean allowsSingleInstanceOnly() { 15192e387187a872b3b0986b378954eb611aa83fdeanicolasroard return false; 15292e387187a872b3b0986b378954eb611aa83fdeanicolasroard } 15392e387187a872b3b0986b378954eb611aa83fdeanicolasroard 154af85f6423ad5969f12ed68fd12a0fe3abce3e409nicolasroard public Class<?> getFilterClass() { 15571f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard return mFilterClass; 15671f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard } 15771f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard 158af85f6423ad5969f12ed68fd12a0fe3abce3e409nicolasroard public void setFilterClass(Class<?> filterClass) { 15971f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard mFilterClass = filterClass; 16071f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard } 16171f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard 162545eca119e7b2dc783f8d89a0de4330b5444ed79ztenghui // This same() function is different from equals(), basically it checks 163545eca119e7b2dc783f8d89a0de4330b5444ed79ztenghui // whether 2 FilterRepresentations are the same type. It doesn't care about 164545eca119e7b2dc783f8d89a0de4330b5444ed79ztenghui // the values. 16571f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard public boolean same(FilterRepresentation b) { 16671f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard if (b == null) { 16771f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard return false; 16871f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard } 16971f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard return getFilterClass() == b.getFilterClass(); 17071f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard } 1716900cad45d240c9a54b92991538b6a33652e766cnicolasroard 1726900cad45d240c9a54b92991538b6a33652e766cnicolasroard public int getTextId() { 1736900cad45d240c9a54b92991538b6a33652e766cnicolasroard return mTextId; 1746900cad45d240c9a54b92991538b6a33652e766cnicolasroard } 1756900cad45d240c9a54b92991538b6a33652e766cnicolasroard 1766900cad45d240c9a54b92991538b6a33652e766cnicolasroard public void setTextId(int textId) { 1776900cad45d240c9a54b92991538b6a33652e766cnicolasroard mTextId = textId; 1786900cad45d240c9a54b92991538b6a33652e766cnicolasroard } 1796900cad45d240c9a54b92991538b6a33652e766cnicolasroard 1806900cad45d240c9a54b92991538b6a33652e766cnicolasroard public int getOverlayId() { 1816900cad45d240c9a54b92991538b6a33652e766cnicolasroard return mOverlayId; 1826900cad45d240c9a54b92991538b6a33652e766cnicolasroard } 1836900cad45d240c9a54b92991538b6a33652e766cnicolasroard 1846900cad45d240c9a54b92991538b6a33652e766cnicolasroard public void setOverlayId(int overlayId) { 1856900cad45d240c9a54b92991538b6a33652e766cnicolasroard mOverlayId = overlayId; 1866900cad45d240c9a54b92991538b6a33652e766cnicolasroard } 1876900cad45d240c9a54b92991538b6a33652e766cnicolasroard 188d61a2f9fcaad0309132b6b9b666c3dc6df62fed7John Hoford public boolean getOverlayOnly() { 189d61a2f9fcaad0309132b6b9b666c3dc6df62fed7John Hoford return mOverlayOnly; 190d61a2f9fcaad0309132b6b9b666c3dc6df62fed7John Hoford } 191d61a2f9fcaad0309132b6b9b666c3dc6df62fed7John Hoford 192d61a2f9fcaad0309132b6b9b666c3dc6df62fed7John Hoford public void setOverlayOnly(boolean value) { 193d61a2f9fcaad0309132b6b9b666c3dc6df62fed7John Hoford mOverlayOnly = value; 194d61a2f9fcaad0309132b6b9b666c3dc6df62fed7John Hoford } 195d61a2f9fcaad0309132b6b9b666c3dc6df62fed7John Hoford 196d61a2f9fcaad0309132b6b9b666c3dc6df62fed7John Hoford final public int getEditorId() { 1976900cad45d240c9a54b92991538b6a33652e766cnicolasroard return mEditorId; 1986900cad45d240c9a54b92991538b6a33652e766cnicolasroard } 1996900cad45d240c9a54b92991538b6a33652e766cnicolasroard 200d61a2f9fcaad0309132b6b9b666c3dc6df62fed7John Hoford public int[] getEditorIds() { 201d61a2f9fcaad0309132b6b9b666c3dc6df62fed7John Hoford return new int[] { 202d61a2f9fcaad0309132b6b9b666c3dc6df62fed7John Hoford mEditorId }; 203d61a2f9fcaad0309132b6b9b666c3dc6df62fed7John Hoford } 204d61a2f9fcaad0309132b6b9b666c3dc6df62fed7John Hoford 2056900cad45d240c9a54b92991538b6a33652e766cnicolasroard public void setEditorId(int editorId) { 2066900cad45d240c9a54b92991538b6a33652e766cnicolasroard mEditorId = editorId; 2076900cad45d240c9a54b92991538b6a33652e766cnicolasroard } 2086900cad45d240c9a54b92991538b6a33652e766cnicolasroard 2096900cad45d240c9a54b92991538b6a33652e766cnicolasroard public boolean showParameterValue() { 2106900cad45d240c9a54b92991538b6a33652e766cnicolasroard return mShowParameterValue; 2116900cad45d240c9a54b92991538b6a33652e766cnicolasroard } 2126900cad45d240c9a54b92991538b6a33652e766cnicolasroard 2136900cad45d240c9a54b92991538b6a33652e766cnicolasroard public void setShowParameterValue(boolean showParameterValue) { 2146900cad45d240c9a54b92991538b6a33652e766cnicolasroard mShowParameterValue = showParameterValue; 2156900cad45d240c9a54b92991538b6a33652e766cnicolasroard } 2166900cad45d240c9a54b92991538b6a33652e766cnicolasroard 2172562a98c156a55b51239fea383838a11a0292c0enicolasroard public String getStateRepresentation() { 2182562a98c156a55b51239fea383838a11a0292c0enicolasroard return ""; 2192562a98c156a55b51239fea383838a11a0292c0enicolasroard } 220d4bec864946917e434bfb53846747d665bbe1d07nicolasroard 2215762138f8c561cb377d52f3379b89977fc2fbc14John Hoford /** 2225762138f8c561cb377d52f3379b89977fc2fbc14John Hoford * Method must "beginObject()" add its info and "endObject()" 2235762138f8c561cb377d52f3379b89977fc2fbc14John Hoford * @param writer 2245762138f8c561cb377d52f3379b89977fc2fbc14John Hoford * @throws IOException 2255762138f8c561cb377d52f3379b89977fc2fbc14John Hoford */ 2265762138f8c561cb377d52f3379b89977fc2fbc14John Hoford public void serializeRepresentation(JsonWriter writer) throws IOException { 2275762138f8c561cb377d52f3379b89977fc2fbc14John Hoford writer.beginObject(); 2285762138f8c561cb377d52f3379b89977fc2fbc14John Hoford { 2295762138f8c561cb377d52f3379b89977fc2fbc14John Hoford String[][] rep = serializeRepresentation(); 2305762138f8c561cb377d52f3379b89977fc2fbc14John Hoford for (int k = 0; k < rep.length; k++) { 2315762138f8c561cb377d52f3379b89977fc2fbc14John Hoford writer.name(rep[k][0]); 2325762138f8c561cb377d52f3379b89977fc2fbc14John Hoford writer.value(rep[k][1]); 2335762138f8c561cb377d52f3379b89977fc2fbc14John Hoford } 2345762138f8c561cb377d52f3379b89977fc2fbc14John Hoford } 2355762138f8c561cb377d52f3379b89977fc2fbc14John Hoford writer.endObject(); 2365762138f8c561cb377d52f3379b89977fc2fbc14John Hoford } 2375762138f8c561cb377d52f3379b89977fc2fbc14John Hoford 2385762138f8c561cb377d52f3379b89977fc2fbc14John Hoford // this is the old way of doing this and will be removed soon 239afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford public String[][] serializeRepresentation() { 2405762138f8c561cb377d52f3379b89977fc2fbc14John Hoford String[][] ret = {{NAME_TAG, getName()}}; 241afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford return ret; 242afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford } 243afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford 2445762138f8c561cb377d52f3379b89977fc2fbc14John Hoford public void deSerializeRepresentation(JsonReader reader) throws IOException { 2455762138f8c561cb377d52f3379b89977fc2fbc14John Hoford ArrayList<String[]> al = new ArrayList<String[]>(); 2465762138f8c561cb377d52f3379b89977fc2fbc14John Hoford reader.beginObject(); 2475762138f8c561cb377d52f3379b89977fc2fbc14John Hoford while (reader.hasNext()) { 2485762138f8c561cb377d52f3379b89977fc2fbc14John Hoford String[] kv = {reader.nextName(), reader.nextString()}; 2495762138f8c561cb377d52f3379b89977fc2fbc14John Hoford al.add(kv); 2505762138f8c561cb377d52f3379b89977fc2fbc14John Hoford 2515762138f8c561cb377d52f3379b89977fc2fbc14John Hoford } 2525762138f8c561cb377d52f3379b89977fc2fbc14John Hoford reader.endObject(); 2535762138f8c561cb377d52f3379b89977fc2fbc14John Hoford String[][] oldFormat = al.toArray(new String[al.size()][]); 2545762138f8c561cb377d52f3379b89977fc2fbc14John Hoford 2555762138f8c561cb377d52f3379b89977fc2fbc14John Hoford deSerializeRepresentation(oldFormat); 2565762138f8c561cb377d52f3379b89977fc2fbc14John Hoford } 2575762138f8c561cb377d52f3379b89977fc2fbc14John Hoford 2585762138f8c561cb377d52f3379b89977fc2fbc14John Hoford // this is the old way of doing this and will be removed soon 259afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford public void deSerializeRepresentation(String[][] rep) { 260afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford for (int i = 0; i < rep.length; i++) { 2615762138f8c561cb377d52f3379b89977fc2fbc14John Hoford if (NAME_TAG.equals(rep[i][0])) { 262099e5fc37091823f448b95bc4f3d3511e9919fbfztenghui mName = rep[i][1]; 263afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford break; 264afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford } 265afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford } 266afa8ed9d46e760d4b0c0331cfcb4bb49ef6ba280John Hoford } 267cdadeb52f12d26844db65abf9f445faee1cba199Ruben Brunk 268cdadeb52f12d26844db65abf9f445faee1cba199Ruben Brunk // Override this in subclasses 269cdadeb52f12d26844db65abf9f445faee1cba199Ruben Brunk public int getStyle() { 270cdadeb52f12d26844db65abf9f445faee1cba199Ruben Brunk return -1; 271cdadeb52f12d26844db65abf9f445faee1cba199Ruben Brunk } 272430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard 273430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard public boolean canMergeWith(FilterRepresentation representation) { 2749e52a04b99ec1ebb943d1ccb2531d733af5cfedbnicolasroard if (getFilterType() == FilterRepresentation.TYPE_GEOMETRY 2759e52a04b99ec1ebb943d1ccb2531d733af5cfedbnicolasroard && representation.getFilterType() == FilterRepresentation.TYPE_GEOMETRY) { 276430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard return true; 277430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard } 278430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard return false; 279430e46b06f8e7ee1ca3e7ecdcef3e0a978637c03nicolasroard } 28071f04cbaedbb89e313e0b86b531640db2d3f6016nicolasroard} 281