aboutsummaryrefslogtreecommitdiff
path: root/library/src/main/java/com/bumptech/glide/load/engine/prefill/PreFillType.java
diff options
context:
space:
mode:
Diffstat (limited to 'library/src/main/java/com/bumptech/glide/load/engine/prefill/PreFillType.java')
-rw-r--r--library/src/main/java/com/bumptech/glide/load/engine/prefill/PreFillType.java179
1 files changed, 179 insertions, 0 deletions
diff --git a/library/src/main/java/com/bumptech/glide/load/engine/prefill/PreFillType.java b/library/src/main/java/com/bumptech/glide/load/engine/prefill/PreFillType.java
new file mode 100644
index 00000000..33d0387e
--- /dev/null
+++ b/library/src/main/java/com/bumptech/glide/load/engine/prefill/PreFillType.java
@@ -0,0 +1,179 @@
+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");
+ }
+ if (width <= 0) {
+ throw new IllegalArgumentException("Width must be > 0");
+ }
+ if (height <= 0) {
+ throw new IllegalArgumentException("Height must be > 0");
+ }
+ if (weight <= 0) {
+ throw new IllegalArgumentException("Weight must be > 0");
+ }
+
+ 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 (this == o) {
+ return true;
+ } else if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+
+ PreFillType size = (PreFillType) o;
+
+ return height == size.height
+ && weight == size.weight
+ && width == size.width
+ && config == size.config;
+ }
+
+ @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 final 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) {
+ 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);
+ }
+ }
+}