docs: public static int computeImageSampleSize(ImageSize srcSize, ImageSize targetSize, ViewScaleType viewScaleType,
  			boolean powerOf2Scale) {
  		final int srcWidth = srcSize.getWidth();
  		final int srcHeight = srcSize.getHeight();
  		final int targetWidth = targetSize.getWidth();
  		final int targetHeight = targetSize.getHeight();
  
  		int scale = 1;
  
  		switch (viewScaleType) {
  			case FIT_INSIDE:
  				if (powerOf2Scale) {
  					final int halfWidth = srcWidth / 2;
  					final int halfHeight = srcHeight / 2;
  					while ((halfWidth / scale) > targetWidth || (halfHeight / scale) > targetHeight) { // ||
  						scale *= 2;
  					}
  				} else {
  					scale = Math.max(srcWidth / targetWidth, srcHeight / targetHeight); // max
  				}
  				break;
  			case CROP:
  				if (powerOf2Scale) {
  					final int halfWidth = srcWidth / 2;
  					final int halfHeight = srcHeight / 2;
  					while ((halfWidth / scale) > targetWidth && (halfHeight / scale) > targetHeight) { // &&
  						scale *= 2;
  					}
  				} else {
  					scale = Math.min(srcWidth / targetWidth, srcHeight / targetHeight); // min
  				}
  				break;
  		}
  
  		if (scale < 1) {
  			scale = 1;
  		}
  		scale = considerMaxTextureSize(srcWidth, srcHeight, scale, powerOf2Scale);
  
  		return scale;
  	}