Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package com.koushikdutta.ion.loader;
  
  import  android.content.Context;
  import  android.graphics.Bitmap;
  import  android.graphics.BitmapFactory;
  import  android.graphics.Point;
  import  android.text.TextUtils;
  
 
 import java.io.File;
 import java.net.URI;

Created by koush on 5/22/13.
 
 public class FileLoader extends StreamLoader {
     private static final class FileFuture extends SimpleFuture<DataEmitter> {
     }
 
     @Override
     public Future<BitmapInfoloadBitmap(final Context contextfinal Ion ionfinal String keyfinal String urifinal int resizeWidthfinal int resizeHeight,
                                          final boolean animateGif) {
         if (uri == null || !uri.startsWith("file:/"))
             return null;
 
         final SimpleFuture<BitmapInforet = new SimpleFuture<BitmapInfo>();
 
 //        Log.d("FileLoader", "Loading file bitmap " + uri + " " + resizeWidth + "," + resizeHeight);
         Ion.getBitmapLoadExecutorService().execute(new Runnable() {
             @Override
             public void run() {
                 if (ret.isCancelled()) {
 //                    Log.d("FileLoader", "Bitmap load cancelled (no longer needed)");
                     return;
                 }
                 try {
                     File file = new File(URI.create(uri));
                     BitmapFactory.Options options = ion.getBitmapCache().prepareBitmapOptions(fileresizeWidthresizeHeight);
                     Point size = new Point(options.outWidthoptions.outHeight);
                     BitmapInfo info;
                     if (animateGif && TextUtils.equals("image/gif"options.outMimeType)) {
                         FileInputStream fin = new FileInputStream(file);
                         try {
                             info = loadGif(keysizefinoptions);
                         }
                         finally {
                             StreamUtility.closeQuietly(fin);
                         }
                     }
                     else {
                         Bitmap bitmap = IonBitmapCache.loadBitmap(fileoptions);
                         if (bitmap == null)
                             throw new Exception("Bitmap failed to load");
                         info = new BitmapInfo(keyoptions.outMimeTypenew Bitmap[] { bitmap }, size);
                     }
                     info.loadedFrom =  ..;
                     ret.setComplete(info);
                 }
                 catch (OutOfMemoryError e) {
                     ret.setComplete(new Exception(e), null);
                 }
                 catch (Exception e) {
                     ret.setComplete(e);
                 }
             }
         });
 
         return ret;
     }
 
     @Override
     public Future<InputStreamload(final Ion ionfinal AsyncHttpRequest request) {
         if (!request.getUri().getScheme().startsWith("file"))
             return null;
         final SimpleFuture<InputStreamret = new SimpleFuture<InputStream>();
         Ion.getIoExecutorService().execute(new Runnable() {
             @Override
             public void run() {
                 try {
                     InputStream stream = new FileInputStream(new File(URI.create(request.getUri().toString())));
                     ret.setComplete(stream);
                 } catch (Exception e) {
                     ret.setComplete(e);
                 }
            }
        });
        return ret;
    }
    @Override
    public Future<DataEmitterload(final Ion ionfinal AsyncHttpRequest requestfinal FutureCallback<LoaderEmittercallback) {
        if (!request.getUri().getScheme().startsWith("file"))
            return null;
        final FileFuture ret = new FileFuture();
        ion.getHttpClient().getServer().post(new Runnable() {
            @Override
            public void run() {
                File file = new File(URI.create(request.getUri().toString()));
                FileDataEmitter emitter = new FileDataEmitter(ion.getHttpClient().getServer(), file);
                ret.setComplete(emitter);
                callback.onCompleted(nullnew LoaderEmitter(emitter, (int)file.length(), .nullrequest));
            }
        });
        return ret;
    }
New to GrepCode? Check out our FAQ X