diff options
Diffstat (limited to 'src/com/android/gallery3d/filtershow/filters/FilterCropRepresentation.java')
-rw-r--r-- | src/com/android/gallery3d/filtershow/filters/FilterCropRepresentation.java | 167 |
1 files changed, 167 insertions, 0 deletions
diff --git a/src/com/android/gallery3d/filtershow/filters/FilterCropRepresentation.java b/src/com/android/gallery3d/filtershow/filters/FilterCropRepresentation.java new file mode 100644 index 000000000..345c2f1bf --- /dev/null +++ b/src/com/android/gallery3d/filtershow/filters/FilterCropRepresentation.java @@ -0,0 +1,167 @@ +/* + * 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.graphics.RectF; +import android.util.JsonReader; +import android.util.JsonWriter; + +import com.android.gallery3d.R; +import com.android.gallery3d.filtershow.editors.EditorCrop; + +import java.io.IOException; + +public class FilterCropRepresentation extends FilterRepresentation { + public static final String SERIALIZATION_NAME = "CROP"; + public static final String[] BOUNDS = { + "C0", "C1", "C2", "C3", "I0", "I1", "I2", "I3" + }; + private static final String TAG = FilterCropRepresentation.class.getSimpleName(); + + RectF mCrop = new RectF(); + RectF mImage = new RectF(); + + public FilterCropRepresentation(RectF crop, RectF image) { + super(FilterCropRepresentation.class.getSimpleName()); + setSerializationName(SERIALIZATION_NAME); + setShowParameterValue(true); + setFilterClass(FilterCropRepresentation.class); + setFilterType(FilterRepresentation.TYPE_GEOMETRY); + setTextId(R.string.crop); + setEditorId(EditorCrop.ID); + setCrop(crop); + setImage(image); + } + + public FilterCropRepresentation(FilterCropRepresentation m) { + this(m.getCrop(), m.getImage()); + } + + public FilterCropRepresentation() { + this(new RectF(), new RectF()); + } + + public void set(FilterCropRepresentation r) { + mCrop.set(r.mCrop); + mImage.set(r.mImage); + } + + public RectF getCrop() { + return new RectF(mCrop); + } + + public void getCrop(RectF r) { + r.set(mCrop); + } + + public void setCrop(RectF crop) { + if (crop == null) { + throw new IllegalArgumentException("Argument to setCrop is null"); + } + mCrop.set(crop); + } + + public RectF getImage() { + return new RectF(mImage); + } + + public void getImage(RectF r) { + r.set(mImage); + } + + public void setImage(RectF image) { + if (image == null) { + throw new IllegalArgumentException("Argument to setImage is null"); + } + mImage.set(image); + } + + @Override + public boolean allowsSingleInstanceOnly() { + return true; + } + + @Override + public FilterRepresentation copy(){ + return new FilterCropRepresentation(this); + } + + @Override + protected void copyAllParameters(FilterRepresentation representation) { + if (!(representation instanceof FilterCropRepresentation)) { + throw new IllegalArgumentException("calling copyAllParameters with incompatible types!"); + } + super.copyAllParameters(representation); + representation.useParametersFrom(this); + } + + @Override + public void useParametersFrom(FilterRepresentation a) { + if (!(a instanceof FilterCropRepresentation)) { + throw new IllegalArgumentException("calling useParametersFrom with incompatible types!"); + } + setCrop(((FilterCropRepresentation) a).mCrop); + setImage(((FilterCropRepresentation) a).mImage); + } + + @Override + public boolean isNil() { + return mCrop.equals(mImage); + } + + @Override + public void serializeRepresentation(JsonWriter writer) throws IOException { + writer.beginObject(); + writer.name(BOUNDS[0]).value(mCrop.left); + writer.name(BOUNDS[1]).value(mCrop.top); + writer.name(BOUNDS[2]).value(mCrop.right); + writer.name(BOUNDS[3]).value(mCrop.bottom); + writer.name(BOUNDS[4]).value(mImage.left); + writer.name(BOUNDS[5]).value(mImage.top); + writer.name(BOUNDS[6]).value(mImage.right); + writer.name(BOUNDS[7]).value(mImage.bottom); + writer.endObject(); + } + + @Override + public void deSerializeRepresentation(JsonReader reader) throws IOException { + reader.beginObject(); + while (reader.hasNext()) { + String name = reader.nextName(); + if (BOUNDS[0].equals(name)) { + mCrop.left = (float) reader.nextDouble(); + } else if (BOUNDS[1].equals(name)) { + mCrop.top = (float) reader.nextDouble(); + } else if (BOUNDS[2].equals(name)) { + mCrop.right = (float) reader.nextDouble(); + } else if (BOUNDS[3].equals(name)) { + mCrop.bottom = (float) reader.nextDouble(); + } else if (BOUNDS[4].equals(name)) { + mImage.left = (float) reader.nextDouble(); + } else if (BOUNDS[5].equals(name)) { + mImage.top = (float) reader.nextDouble(); + } else if (BOUNDS[6].equals(name)) { + mImage.right = (float) reader.nextDouble(); + } else if (BOUNDS[7].equals(name)) { + mImage.bottom = (float) reader.nextDouble(); + } else { + reader.skipValue(); + } + } + reader.endObject(); + } +} |