UnsharpMaskSpec.java 4.66 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  com.scene7.is.util.Factory
 *  com.scene7.is.util.Writable
 *  com.scene7.is.util.serializers.Serializer
 *  org.jetbrains.annotations.NotNull
 */
package com.scene7.is.ps.provider;

import com.scene7.is.ps.provider.UnsharpMaskSpecSerializer;
import com.scene7.is.util.Factory;
import com.scene7.is.util.Writable;
import com.scene7.is.util.serializers.Serializer;
import java.io.DataInput;
import java.io.DataInputStream;
import java.io.DataOutput;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import org.jetbrains.annotations.NotNull;

public class UnsharpMaskSpec
implements Writable,
Serializable {
    public final double amount;
    public final double radius;
    public final double threshold;
    public final boolean lightnessOnly;
    @NotNull
    private static final Serializer<UnsharpMaskSpec> SERIALIZER = UnsharpMaskSpecSerializer.create();

    @NotNull
    public static Serializer<UnsharpMaskSpec> serializer() {
        return SERIALIZER;
    }

    @NotNull
    public static Builder builder() {
        return new Builder();
    }

    public String toString() {
        return "" + this.amount + "," + this.radius + ',' + this.threshold + ',' + this.lightnessOnly;
    }

    public void write(DataOutputStream out) throws IOException {
        SERIALIZER.store((Object)this, (DataOutput)out);
    }

    @NotNull
    public static UnsharpMaskSpec read(DataInputStream in) throws IOException {
        return (UnsharpMaskSpec)SERIALIZER.load((DataInput)in);
    }

    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null || this.getClass() != obj.getClass()) {
            return false;
        }
        UnsharpMaskSpec that = (UnsharpMaskSpec)obj;
        if (Double.compare(that.amount, this.amount) != 0) {
            return false;
        }
        if (this.lightnessOnly != that.lightnessOnly) {
            return false;
        }
        if (Double.compare(that.radius, this.radius) != 0) {
            return false;
        }
        return Double.compare(that.threshold, this.threshold) == 0;
    }

    public int hashCode() {
        long temp = this.amount != 0.0 ? Double.doubleToLongBits(this.amount) : 0;
        int result = (int)(temp ^ temp >>> 32);
        temp = this.radius != 0.0 ? Double.doubleToLongBits(this.radius) : 0;
        result = 31 * result + (int)(temp ^ temp >>> 32);
        temp = this.threshold != 0.0 ? Double.doubleToLongBits(this.threshold) : 0;
        result = 31 * result + (int)(temp ^ temp >>> 32);
        result = 31 * result + (this.lightnessOnly ? 1 : 0);
        return result;
    }

    private UnsharpMaskSpec(@NotNull Builder builder) {
        this.amount = builder.amount;
        this.radius = builder.radius;
        this.threshold = builder.threshold;
        this.lightnessOnly = builder.lightnessOnly;
    }

    private void readObject(ObjectInputStream in) throws IOException {
        throw new AssertionError();
    }

    private void writeObject(ObjectOutputStream out) throws IOException {
        throw new AssertionError();
    }

    protected Object writeReplace() {
        return new Serializable(){
            private UnsharpMaskSpec value;

            private void writeObject(ObjectOutputStream out) throws IOException {
                SERIALIZER.store((Object)UnsharpMaskSpec.this, (DataOutput)out);
            }

            private void readObject(ObjectInputStream in) throws IOException {
                this.value = (UnsharpMaskSpec)SERIALIZER.load((DataInput)in);
            }

            private Object readResolve() {
                assert (this.value != null);
                return this.value;
            }
        };
    }

    public static class Builder
    implements Factory<UnsharpMaskSpec> {
        private double amount;
        private double radius;
        private double threshold;
        private boolean lightnessOnly;

        public Builder setAmount(double amount) {
            this.amount = amount;
            return this;
        }

        public Builder setRadius(double radius) {
            this.radius = radius;
            return this;
        }

        public Builder setThreshold(double threshold) {
            this.threshold = threshold;
            return this;
        }

        public Builder setLightnessOnly(boolean lightnessOnly) {
            this.lightnessOnly = lightnessOnly;
            return this;
        }

        @NotNull
        public UnsharpMaskSpec getProduct() {
            return new UnsharpMaskSpec(this);
        }
    }

}