/* * Copyright (C) 2013 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.gallery3d.filtershow.filters; import android.util.JsonReader; import android.util.JsonWriter; import android.util.Log; import com.android.gallery3d.R; import com.android.gallery3d.filtershow.editors.EditorStraighten; import java.io.IOException; public class FilterStraightenRepresentation extends FilterRepresentation { public static final String SERIALIZATION_NAME = "STRAIGHTEN"; public static final String SERIALIZATION_STRAIGHTEN_VALUE = "value"; private static final String TAG = FilterStraightenRepresentation.class.getSimpleName(); float mStraighten; public FilterStraightenRepresentation(float straighten) { super(FilterStraightenRepresentation.class.getSimpleName()); setSerializationName(SERIALIZATION_NAME); setShowParameterValue(true); setFilterClass(FilterStraightenRepresentation.class); setFilterType(FilterRepresentation.TYPE_GEOMETRY); setTextId(R.string.straighten); setEditorId(EditorStraighten.ID); setStraighten(straighten); } public FilterStraightenRepresentation(FilterStraightenRepresentation s) { this(s.getStraighten()); } public FilterStraightenRepresentation() { this(0); } public void set(FilterStraightenRepresentation r) { mStraighten = r.mStraighten; } @Override public boolean equals(FilterRepresentation rep) { if (!(rep instanceof FilterStraightenRepresentation)) { return false; } FilterStraightenRepresentation straighten = (FilterStraightenRepresentation) rep; if (straighten.mStraighten != mStraighten) { return false; } return true; } public float getStraighten() { return mStraighten; } public void setStraighten(float straighten) { if (!rangeCheck(straighten)) { straighten = Math.min(Math.max(straighten, -45), 45); } mStraighten = straighten; } @Override public boolean allowsSingleInstanceOnly() { return true; } @Override public FilterRepresentation copy() { return new FilterStraightenRepresentation(this); } @Override protected void copyAllParameters(FilterRepresentation representation) { if (!(representation instanceof FilterStraightenRepresentation)) { throw new IllegalArgumentException("calling copyAllParameters with incompatible types!"); } super.copyAllParameters(representation); representation.useParametersFrom(this); } @Override public void useParametersFrom(FilterRepresentation a) { if (!(a instanceof FilterStraightenRepresentation)) { throw new IllegalArgumentException("calling useParametersFrom with incompatible types!"); } setStraighten(((FilterStraightenRepresentation) a).getStraighten()); } @Override public boolean isNil() { return mStraighten == 0; } @Override public void serializeRepresentation(JsonWriter writer) throws IOException { writer.beginObject(); writer.name(SERIALIZATION_STRAIGHTEN_VALUE).value(mStraighten); writer.endObject(); } @Override public void deSerializeRepresentation(JsonReader reader) throws IOException { boolean unset = true; reader.beginObject(); while (reader.hasNext()) { String name = reader.nextName(); if (SERIALIZATION_STRAIGHTEN_VALUE.equals(name)) { int s = reader.nextInt(); if (rangeCheck(s)) { setStraighten(s); unset = false; } } else { reader.skipValue(); } } if (unset) { Log.w(TAG, "WARNING: bad value when deserializing " + SERIALIZATION_NAME); } reader.endObject(); } private boolean rangeCheck(float s) { if (s < -45 || s > 45) { return false; } return true; } }