private static Bitmap decodeResourcePreP(Resources resources, int id, Request request) { final BitmapFactory.Options options = createBitmapOptions(request); if (requiresInSampleSize(options)) { BitmapFactory.decodeResource(resources, id, options); calculateInSampleSize(request.targetWidth, request.targetHeight, checkNotNull(options, "options == null"), request); } return BitmapFactory.decodeResource(resources, id, options); }
boolean isWebPFile = Utils.isWebPFile(bufferedSource); boolean isPurgeable = request.purgeable && SDK_INT < Build.VERSION_CODES.LOLLIPOP; BitmapFactory.Options options = createBitmapOptions(request); boolean calculateSize = requiresInSampleSize(options);
@Test public void nullBitmapOptionsIfNoResizingOrPurgeable() { // No resize must return no bitmap options final Request noResize = new Request.Builder(URI_1).build(); final BitmapFactory.Options noResizeOptions = createBitmapOptions(noResize); assertThat(noResizeOptions).isNull(); }
@Test public void bitmapConfig() { for (Bitmap.Config config : Bitmap.Config.values()) { Request data = new Request.Builder(URI_1).config(config).build(); Request copy = data.newBuilder().build(); assertThat(createBitmapOptions(data).inPreferredConfig).isSameAs(config); assertThat(createBitmapOptions(copy).inPreferredConfig).isSameAs(config); } }
@Test public void inPurgeableIfInPurgeable() { final Request request = new Request.Builder(URI_1).purgeable().build(); final BitmapFactory.Options options = createBitmapOptions(request); assertThat(options).isNotNull(); assertThat(options.inPurgeable).isTrue(); assertThat(options.inInputShareable).isTrue(); assertThat(options.inJustDecodeBounds).isFalse(); }
@Test public void createWithConfigAndNotInJustDecodeBoundsOrInPurgeable() { // Given a config, must return bitmap options and false inJustDecodeBounds/inPurgeable final Request config = new Request.Builder(URI_1).config(RGB_565).build(); final BitmapFactory.Options configOptions = createBitmapOptions(config); assertThat(configOptions).isNotNull(); assertThat(configOptions.inJustDecodeBounds).isFalse(); assertThat(configOptions.inPurgeable).isFalse(); assertThat(configOptions.inInputShareable).isFalse(); } }
@Test public void inJustDecodeBoundsIfResizing() { // Resize must return bitmap options with inJustDecodeBounds = true final Request requiresResize = new Request.Builder(URI_1).resize(20, 15).build(); final BitmapFactory.Options resizeOptions = createBitmapOptions(requiresResize); assertThat(resizeOptions).isNotNull(); assertThat(resizeOptions.inJustDecodeBounds).isTrue(); assertThat(resizeOptions.inPurgeable).isFalse(); assertThat(resizeOptions.inInputShareable).isFalse(); }
checkNotNull(createBitmapOptions(request), "options == null"); options.inJustDecodeBounds = true;