package com.ypx.imagepicker.bean.selectconfig; import android.graphics.Color; import android.os.Parcel; import android.os.Parcelable; import android.util.Size; import com.ypx.imagepicker.widget.cropimage.Info; /** * Time: 2019/10/27 18:53 * Author:ypx * Description: 单图剪裁配置类 */ public class CropConfigParcelable implements Parcelable { //充满式剪裁 public static final int STYLE_FILL = 1; //留白式剪裁 public static final int STYLE_GAP = 2; private int cropRatioX = 1; private int cropRatioY = 1; private boolean isCircle = false; private int cropRectMargin = 0; private int cropStyle = STYLE_FILL; private int cropGapBackgroundColor = Color.BLACK; private boolean saveInDCIM = false; // private Size outPutSize; private long maxOutPutByte; private boolean isLessOriginalByte; private Info cropRestoreInfo; private boolean isSingleCropCutNeedTop = false; public boolean isSingleCropCutNeedTop() { return isSingleCropCutNeedTop; } public void setSingleCropCutNeedTop(boolean singleCropCutNeedTop) { isSingleCropCutNeedTop = singleCropCutNeedTop; } protected CropConfigParcelable() { } protected CropConfigParcelable(Parcel in) { cropRatioX = in.readInt(); cropRatioY = in.readInt(); isCircle = in.readByte() != 0; cropRectMargin = in.readInt(); cropStyle = in.readInt(); cropGapBackgroundColor = in.readInt(); saveInDCIM = in.readByte() != 0; maxOutPutByte = in.readLong(); isLessOriginalByte = in.readByte() != 0; cropRestoreInfo = in.readParcelable(Info.class.getClassLoader()); isSingleCropCutNeedTop=in.readByte() != 0; } public static final Creator<CropConfigParcelable> CREATOR = new Creator<CropConfigParcelable>() { @Override public CropConfigParcelable createFromParcel(Parcel in) { return new CropConfigParcelable(in); } @Override public CropConfigParcelable[] newArray(int size) { return new CropConfigParcelable[size]; } }; public long getMaxOutPutByte() { return maxOutPutByte; } public void setMaxOutPutByte(long maxOutPutByte) { this.maxOutPutByte = maxOutPutByte; } public boolean isLessOriginalByte() { return isLessOriginalByte; } public void setLessOriginalByte(boolean lessOriginalByte) { isLessOriginalByte = lessOriginalByte; } public Info getCropRestoreInfo() { return cropRestoreInfo; } public void setCropRestoreInfo(Info cropRestoreInfo) { this.cropRestoreInfo = cropRestoreInfo; } public boolean isSaveInDCIM() { return saveInDCIM; } public void saveInDCIM(boolean saveInDCIM) { this.saveInDCIM = saveInDCIM; } public int getCropStyle() { return cropStyle; } public void setCropStyle(int cropStyle) { this.cropStyle = cropStyle; } public int getCropGapBackgroundColor() { return cropGapBackgroundColor; } public void setCropGapBackgroundColor(int cropGapBackgroundColor) { this.cropGapBackgroundColor = cropGapBackgroundColor; } public boolean isCircle() { return isCircle; } public void setCircle(boolean circle) { isCircle = circle; } public int getCropRectMargin() { return cropRectMargin; } public void setCropRectMargin(int cropRectMargin) { this.cropRectMargin = cropRectMargin; } public int getCropRatioX() { if (isCircle) { return 1; } return cropRatioX; } public void setCropRatio(int x, int y) { this.cropRatioX = x; this.cropRatioY = y; } public int getCropRatioY() { if (isCircle) { return 1; } return cropRatioY; } public boolean isGap() { return cropStyle == STYLE_GAP; } public boolean isNeedPng() { return isCircle || getCropGapBackgroundColor() == Color.TRANSPARENT; } /** * Describe the kinds of special objects contained in this Parcelable * instance's marshaled representation. For example, if the object will * include a file descriptor in the output of {@link #writeToParcel(Parcel, int)}, * the return value of this method must include the * {@link #CONTENTS_FILE_DESCRIPTOR} bit. * * @return a bitmask indicating the set of special object types marshaled * by this Parcelable object instance. */ @Override public int describeContents() { return 0; } /** * Flatten this object in to a Parcel. * * @param dest The Parcel in which the object should be written. * @param flags Additional flags about how the object should be written. * May be 0 or {@link #PARCELABLE_WRITE_RETURN_VALUE}. */ @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(cropRatioX); dest.writeInt(cropRatioY); dest.writeByte((byte) (isCircle ? 1 : 0)); dest.writeInt(cropRectMargin); dest.writeInt(cropStyle); dest.writeInt(cropGapBackgroundColor); dest.writeByte((byte) (saveInDCIM ? 1 : 0)); dest.writeLong(maxOutPutByte); dest.writeByte((byte) (isLessOriginalByte ? 1 : 0)); dest.writeParcelable(cropRestoreInfo, flags); dest.writeByte((byte) (isSingleCropCutNeedTop ? 1 : 0)); } }