/* * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. */ package com.facebook.imagepipeline.decoder; import java.util.ArrayList; import java.util.List; import com.facebook.imagepipeline.image.ImmutableQualityInfo; import com.facebook.imagepipeline.image.QualityInfo; /** * Simple {@link ProgressiveJpegConfig} with predefined scans to decode and good-enough scan number. * * <p/> If no specific scans to decode are provided, every scan is allowed to be decoded. */ public class SimpleProgressiveJpegConfig implements ProgressiveJpegConfig { private final List<Integer> mScansToDecode; private final int mGoodEnoughScanNumber; public SimpleProgressiveJpegConfig() { this(new ArrayList<Integer>(), 0); } public SimpleProgressiveJpegConfig( List<Integer> scansToDecode, int goodEnoughScanNumber) { mScansToDecode = scansToDecode; mGoodEnoughScanNumber = goodEnoughScanNumber; } @Override public int getNextScanNumberToDecode(int scanNumber) { if (mScansToDecode == null || mScansToDecode.isEmpty()) { return scanNumber + 1; } for (int i = 0; i < mScansToDecode.size(); i++) { if (mScansToDecode.get(i) > scanNumber) { return mScansToDecode.get(i); } } return Integer.MAX_VALUE; } @Override public QualityInfo getQualityInfo(int scanNumber) { return ImmutableQualityInfo.of( scanNumber, /* isOfGoodEnoughQuality */ scanNumber >= mGoodEnoughScanNumber, /* isOfFullQuality */ false); } }