PerspectiveSpecConverter.java 3.67 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  com.scene7.is.sleng.PerspectiveQuad
 *  com.scene7.is.sleng.PerspectiveSpec
 *  com.scene7.is.util.Converter
 *  com.scene7.is.util.Location
 *  com.scene7.is.util.StringMerger
 *  com.scene7.is.util.converters.IdentityConverter
 *  com.scene7.is.util.text.ParameterException
 *  com.scene7.is.util.text.ParsingException
 *  com.scene7.is.util.text.access.ListParamAccess
 *  com.scene7.is.util.text.converters.DoubleConverter
 *  org.apache.commons.beanutils.ConversionException
 *  org.jetbrains.annotations.NotNull
 */
package com.scene7.is.ps.provider.parsers;

import com.scene7.is.sleng.PerspectiveQuad;
import com.scene7.is.sleng.PerspectiveSpec;
import com.scene7.is.util.Converter;
import com.scene7.is.util.Location;
import com.scene7.is.util.StringMerger;
import com.scene7.is.util.converters.IdentityConverter;
import com.scene7.is.util.text.ParameterException;
import com.scene7.is.util.text.ParsingException;
import com.scene7.is.util.text.access.ListParamAccess;
import com.scene7.is.util.text.converters.DoubleConverter;
import java.util.List;
import org.apache.commons.beanutils.ConversionException;
import org.jetbrains.annotations.NotNull;

public class PerspectiveSpecConverter
extends Converter<String, PerspectiveSpec> {
    private static Converter<String, PerspectiveSpec> INSTANCE = new PerspectiveSpecConverter();

    public static Converter<String, PerspectiveSpec> perspectiveSpecConverter() {
        return INSTANCE;
    }

    @NotNull
    public PerspectiveSpec convert(@NotNull String value) throws ConversionException {
        try {
            ListParamAccess list = new ListParamAccess(value);
            Location pt0 = PerspectiveSpecConverter.getPoint(list, 0);
            Location pt1 = PerspectiveSpecConverter.getPoint(list, 1);
            Location pt2 = PerspectiveSpecConverter.getPoint(list, 2);
            Location pt3 = PerspectiveSpecConverter.getPoint(list, 3);
            PerspectiveQuad quad = new PerspectiveQuad(pt0, pt1, pt2, pt3);
            if (!quad.isValid()) {
                throw new ParsingException(4, "Unable to create perspective transform from quadrilateral. " + (Object)quad, null);
            }
            String renderSettings = (String)list.getCustom("render-settings", (Object)"", IdentityConverter.identityConverter(String.class));
            return new PerspectiveSpec(quad, renderSettings);
        }
        catch (ParameterException e) {
            throw new ConversionException((Throwable)new ParsingException(4, value, (Throwable)e));
        }
        catch (ParsingException e) {
            throw new ConversionException((Throwable)e);
        }
    }

    @NotNull
    public String revert(@NotNull PerspectiveSpec src) throws ConversionException {
        StringMerger merger = new StringMerger(",");
        for (Location pt : src.getQuad().getPoints()) {
            merger.append((String)DoubleConverter.doubleConverter().revert((Object)pt.x));
            merger.append((String)DoubleConverter.doubleConverter().revert((Object)pt.y));
        }
        String renderSettings = src.getRenderSettings();
        if (!renderSettings.isEmpty()) {
            merger.append(renderSettings);
        }
        return merger.toString();
    }

    private PerspectiveSpecConverter() {
        super(String.class, PerspectiveSpec.class);
    }

    private static Location getPoint(@NotNull ListParamAccess list, int i) throws ParameterException {
        double x = (Double)list.getCustom("x" + i, DoubleConverter.doubleConverter());
        double y = (Double)list.getCustom("y" + i, DoubleConverter.doubleConverter());
        return Location.location((double)x, (double)y);
    }
}