| package com.bumptech.glide.load.engine.prefill; |
| |
| import android.graphics.Bitmap; |
| |
| /** |
| * A container for a set of options used to pre-fill a {@link com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool} |
| * with {@link Bitmap Bitmaps} of a single size and configuration. |
| */ |
| public final class PreFillType { |
| // Visible for testing. |
| static final Bitmap.Config DEFAULT_CONFIG = Bitmap.Config.RGB_565; |
| private final int width; |
| private final int height; |
| private final Bitmap.Config config; |
| private final int weight; |
| |
| /** |
| * Constructor for a single type of {@link android.graphics.Bitmap}. |
| * |
| * @param width The width in pixels of the {@link android.graphics.Bitmap Bitmaps} to |
| * pre-fill. |
| * @param height The height in pixels of the {@link android.graphics.Bitmap Bitmaps} to |
| * pre-fill. |
| * @param config The {@link android.graphics.Bitmap.Config} of the {@link android.graphics.Bitmap Bitmaps} to |
| * pre-fill. |
| * @param weight An integer indicating how to balance pre-filling this size and configuration of |
| * {@link android.graphics.Bitmap} against any other sizes/configurations that may be being pre-filled. |
| */ |
| PreFillType(int width, int height, Bitmap.Config config, int weight) { |
| if (config == null) { |
| throw new NullPointerException("Config must not be null"); |
| } |
| |
| this.width = width; |
| this.height = height; |
| this.config = config; |
| this.weight = weight; |
| } |
| |
| /** |
| * Returns the width in pixels of the {@link android.graphics.Bitmap Bitmaps}. |
| */ |
| int getWidth() { |
| return width; |
| } |
| |
| /** |
| * Returns the height in pixels of the {@link android.graphics.Bitmap Bitmaps}. |
| */ |
| int getHeight() { |
| return height; |
| } |
| |
| /** |
| * Returns the {@link android.graphics.Bitmap.Config} of the {@link android.graphics.Bitmap Bitmaps}. |
| */ |
| Bitmap.Config getConfig() { |
| return config; |
| } |
| |
| /** |
| * Returns the weight of the {@link android.graphics.Bitmap Bitmaps} of this type. |
| */ |
| int getWeight() { |
| return weight; |
| } |
| |
| @Override |
| public boolean equals(Object o) { |
| if (o instanceof PreFillType) { |
| PreFillType other = (PreFillType) o; |
| return height == other.height |
| && width == other.width |
| && weight == other.weight |
| && config == other.config; |
| } |
| return false; |
| } |
| |
| @Override |
| public int hashCode() { |
| int result = width; |
| result = 31 * result + height; |
| result = 31 * result + config.hashCode(); |
| result = 31 * result + weight; |
| return result; |
| } |
| |
| @Override |
| public String toString() { |
| return "PreFillSize{" |
| + "width=" + width |
| + ", height=" + height |
| + ", config=" + config |
| + ", weight=" + weight |
| + '}'; |
| } |
| |
| /** |
| * Builder for {@link PreFillType}. |
| */ |
| public static class Builder { |
| private final int width; |
| private final int height; |
| |
| private Bitmap.Config config; |
| private int weight = 1; |
| |
| /** |
| * Constructor for a builder that uses the given size as the width and height of the Bitmaps to prefill. |
| * @param size The width and height in pixels of the Bitmaps to prefill. |
| */ |
| public Builder(int size) { |
| this(size, size); |
| } |
| |
| /** |
| * Constructor for a builder that uses the given dimensions as the dimensions of the Bitmaps to prefill. |
| * @param width The width in pixels of the Bitmaps to prefill. |
| * @param height The height in pixels of the Bitmaps to prefill. |
| */ |
| public Builder(int width, int height) { |
| if (width <= 0) { |
| throw new IllegalArgumentException("Width must be > 0"); |
| } |
| if (height <= 0) { |
| throw new IllegalArgumentException("Height must be > 0"); |
| } |
| this.width = width; |
| this.height = height; |
| } |
| |
| /** |
| * Sets the {@link android.graphics.Bitmap.Config} for the Bitmaps to pre-fill. |
| * @param config The config to use, or null to use Glide's default. |
| * @return This builder. |
| */ |
| public Builder setConfig(Bitmap.Config config) { |
| this.config = config; |
| return this; |
| } |
| |
| /** |
| * Returns the current {@link android.graphics.Bitmap.Config}. |
| */ |
| Bitmap.Config getConfig() { |
| return config; |
| } |
| |
| /** |
| * Sets the weight to use to balance how many Bitmaps of this type are prefilled relative to the other requested |
| * types. |
| * @param weight An integer indicating how to balance pre-filling this size and configuration of |
| * {@link android.graphics.Bitmap} against any other sizes/configurations that may be being pre-filled. |
| * @return This builder. |
| */ |
| public Builder setWeight(int weight) { |
| if (weight <= 0) { |
| throw new IllegalArgumentException("Weight must be > 0"); |
| } |
| this.weight = weight; |
| return this; |
| } |
| |
| /** |
| * Returns a new {@link PreFillType}. |
| */ |
| PreFillType build() { |
| return new PreFillType(width, height, config, weight); |
| } |
| } |
| } |