summaryrefslogtreecommitdiff
path: root/java/com/android/contacts/common/util
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/android/contacts/common/util')
-rw-r--r--java/com/android/contacts/common/util/BitmapUtil.java141
-rw-r--r--java/com/android/contacts/common/util/UriUtils.java90
2 files changed, 0 insertions, 231 deletions
diff --git a/java/com/android/contacts/common/util/BitmapUtil.java b/java/com/android/contacts/common/util/BitmapUtil.java
deleted file mode 100644
index 51f65f280..000000000
--- a/java/com/android/contacts/common/util/BitmapUtil.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.contacts.common.util;
-
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.graphics.Canvas;
-import android.graphics.Paint;
-import android.graphics.PorterDuff.Mode;
-import android.graphics.PorterDuffXfermode;
-import android.graphics.Rect;
-import android.graphics.RectF;
-
-/** Provides static functions to decode bitmaps at the optimal size */
-public class BitmapUtil {
-
- private BitmapUtil() {}
-
- /**
- * Returns Width or Height of the picture, depending on which size is smaller. Doesn't actually
- * decode the picture, so it is pretty efficient to run.
- */
- public static int getSmallerExtentFromBytes(byte[] bytes) {
- final BitmapFactory.Options options = new BitmapFactory.Options();
-
- // don't actually decode the picture, just return its bounds
- options.inJustDecodeBounds = true;
- BitmapFactory.decodeByteArray(bytes, 0, bytes.length, options);
-
- // test what the best sample size is
- return Math.min(options.outWidth, options.outHeight);
- }
-
- /**
- * Finds the optimal sampleSize for loading the picture
- *
- * @param originalSmallerExtent Width or height of the picture, whichever is smaller
- * @param targetExtent Width or height of the target view, whichever is bigger.
- * <p>If either one of the parameters is 0 or smaller, no sampling is applied
- */
- public static int findOptimalSampleSize(int originalSmallerExtent, int targetExtent) {
- // If we don't know sizes, we can't do sampling.
- if (targetExtent < 1) {
- return 1;
- }
- if (originalSmallerExtent < 1) {
- return 1;
- }
-
- // Test what the best sample size is. To do that, we find the sample size that gives us
- // the best trade-off between resulting image size and memory requirement. We allow
- // the down-sampled image to be 20% smaller than the target size. That way we can get around
- // unfortunate cases where e.g. a 720 picture is requested for 362 and not down-sampled at
- // all. Why 20%? Why not. Prove me wrong.
- int extent = originalSmallerExtent;
- int sampleSize = 1;
- while ((extent >> 1) >= targetExtent * 0.8f) {
- sampleSize <<= 1;
- extent >>= 1;
- }
-
- return sampleSize;
- }
-
- /** Decodes the bitmap with the given sample size */
- public static Bitmap decodeBitmapFromBytes(byte[] bytes, int sampleSize) {
- final BitmapFactory.Options options;
- if (sampleSize <= 1) {
- options = null;
- } else {
- options = new BitmapFactory.Options();
- options.inSampleSize = sampleSize;
- }
- return BitmapFactory.decodeByteArray(bytes, 0, bytes.length, options);
- }
-
- /**
- * Given an input bitmap, scales it to the given width/height and makes it round.
- *
- * @param input {@link Bitmap} to scale and crop
- * @param targetWidth desired output width
- * @param targetHeight desired output height
- * @return output bitmap scaled to the target width/height and cropped to an oval. The cropping
- * algorithm will try to fit as much of the input into the output as possible, while
- * preserving the target width/height ratio.
- */
- public static Bitmap getRoundedBitmap(Bitmap input, int targetWidth, int targetHeight) {
- if (input == null) {
- return null;
- }
- final Bitmap.Config inputConfig = input.getConfig();
- final Bitmap result =
- Bitmap.createBitmap(
- targetWidth, targetHeight, inputConfig != null ? inputConfig : Bitmap.Config.ARGB_8888);
- final Canvas canvas = new Canvas(result);
- final Paint paint = new Paint();
- canvas.drawARGB(0, 0, 0, 0);
- paint.setAntiAlias(true);
- final RectF dst = new RectF(0, 0, targetWidth, targetHeight);
- canvas.drawOval(dst, paint);
-
- // Specifies that only pixels present in the destination (i.e. the drawn oval) should
- // be overwritten with pixels from the input bitmap.
- paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
-
- final int inputWidth = input.getWidth();
- final int inputHeight = input.getHeight();
-
- // Choose the largest scale factor that will fit inside the dimensions of the
- // input bitmap.
- final float scaleBy =
- Math.min((float) inputWidth / targetWidth, (float) inputHeight / targetHeight);
-
- final int xCropAmountHalved = (int) (scaleBy * targetWidth / 2);
- final int yCropAmountHalved = (int) (scaleBy * targetHeight / 2);
-
- final Rect src =
- new Rect(
- inputWidth / 2 - xCropAmountHalved,
- inputHeight / 2 - yCropAmountHalved,
- inputWidth / 2 + xCropAmountHalved,
- inputHeight / 2 + yCropAmountHalved);
-
- canvas.drawBitmap(input, src, dst, paint);
- return result;
- }
-}
diff --git a/java/com/android/contacts/common/util/UriUtils.java b/java/com/android/contacts/common/util/UriUtils.java
deleted file mode 100644
index 4690942ba..000000000
--- a/java/com/android/contacts/common/util/UriUtils.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.contacts.common.util;
-
-import android.net.Uri;
-import android.provider.ContactsContract;
-import java.util.List;
-
-/** Utility methods for dealing with URIs. */
-public class UriUtils {
-
- /** Static helper, not instantiable. */
- private UriUtils() {}
-
- /** Checks whether two URI are equal, taking care of the case where either is null. */
- public static boolean areEqual(Uri uri1, Uri uri2) {
- if (uri1 == null && uri2 == null) {
- return true;
- }
- if (uri1 == null || uri2 == null) {
- return false;
- }
- return uri1.equals(uri2);
- }
-
- /** Parses a string into a URI and returns null if the given string is null. */
- public static Uri parseUriOrNull(String uriString) {
- if (uriString == null) {
- return null;
- }
- return Uri.parse(uriString);
- }
-
- /** Converts a URI into a string, returns null if the given URI is null. */
- public static String uriToString(Uri uri) {
- return uri == null ? null : uri.toString();
- }
-
- public static boolean isEncodedContactUri(Uri uri) {
- if (uri == null) {
- return false;
- }
- final String lastPathSegment = uri.getLastPathSegment();
- if (lastPathSegment == null) {
- return false;
- }
- return lastPathSegment.equals(Constants.LOOKUP_URI_ENCODED);
- }
-
- /**
- * @return {@code uri} as-is if the authority is of contacts provider. Otherwise or {@code uri} is
- * null, return null otherwise
- */
- public static Uri nullForNonContactsUri(Uri uri) {
- if (uri == null) {
- return null;
- }
- return ContactsContract.AUTHORITY.equals(uri.getAuthority()) ? uri : null;
- }
-
- /** Parses the given URI to determine the original lookup key of the contact. */
- public static String getLookupKeyFromUri(Uri lookupUri) {
- // Would be nice to be able to persist the lookup key somehow to avoid having to parse
- // the uri entirely just to retrieve the lookup key, but every uri is already parsed
- // once anyway to check if it is an encoded JSON uri, so this has negligible effect
- // on performance.
- if (lookupUri != null && !UriUtils.isEncodedContactUri(lookupUri)) {
- final List<String> segments = lookupUri.getPathSegments();
- // This returns the third path segment of the uri, where the lookup key is located.
- // See {@link android.provider.ContactsContract.Contacts#CONTENT_LOOKUP_URI}.
- return (segments.size() < 3) ? null : Uri.encode(segments.get(2));
- } else {
- return null;
- }
- }
-}