TileRequester.java 2.38 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  com.scene7.is.sleng.FXGServer
 *  com.scene7.is.sleng.ImageAccess
 *  com.scene7.is.sleng.ImageAccessException
 *  com.scene7.is.sleng.ImageServer
 *  com.scene7.is.util.MimeTypeEnum
 *  com.scene7.is.util.RectInt
 *  com.scene7.is.util.Size
 *  org.jetbrains.annotations.NotNull
 *  org.jetbrains.annotations.Nullable
 */
package com.scene7.is.ps.provider.util;

import com.scene7.is.ps.provider.IZoomException;
import com.scene7.is.ps.provider.SlengCompiler;
import com.scene7.is.ps.provider.defs.TileRect;
import com.scene7.is.ps.provider.util.ImageRequesterAbstract;
import com.scene7.is.sleng.FXGServer;
import com.scene7.is.sleng.ImageAccess;
import com.scene7.is.sleng.ImageAccessException;
import com.scene7.is.sleng.ImageServer;
import com.scene7.is.util.MimeTypeEnum;
import com.scene7.is.util.RectInt;
import com.scene7.is.util.Size;
import java.io.DataOutputStream;
import java.io.IOException;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

public class TileRequester
extends ImageRequesterAbstract {
    private final TileRect tileRect;
    private final String version;

    public TileRequester(@NotNull byte[] code, @NotNull MimeTypeEnum mimeType, @NotNull TileRect tileRect, @NotNull Size sizeLimit, @NotNull String version, @Nullable SlengCompiler compiler, boolean optimize, @NotNull ImageServer imageServer, @NotNull FXGServer fxgServer) throws IZoomException {
        super(code, mimeType, compiler, optimize, imageServer, fxgServer);
        if ((double)tileRect.rect.width > sizeLimit.width || (double)tileRect.rect.height > sizeLimit.height) {
            throw new IZoomException(IZoomException.MAX_IMAGE_SIZE_EXCEEDED, "", null);
        }
        this.tileRect = tileRect;
        this.version = version;
    }

    @NotNull
    @Override
    public byte[] getPixels(@NotNull ImageAccess imageAccess) throws ImageAccessException {
        return imageAccess.getRaw(this.tileRect.rect, this.tileRect.scale);
    }

    @Override
    public void updateDigest(@NotNull DataOutputStream out) throws IOException {
        out.writeInt(this.tileRect.rect.x);
        out.writeInt(this.tileRect.rect.y);
        out.writeInt(this.tileRect.rect.width);
        out.writeInt(this.tileRect.rect.height);
        out.writeDouble(this.tileRect.scale);
        out.writeUTF(this.version);
    }
}