19fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddpackage com.bumptech.glide.load.model.file_descriptor; 2fcd787c911d5fbca2a34ff0963d4665543a03275Sam Judd 3fcd787c911d5fbca2a34ff0963d4665543a03275Sam Juddimport android.content.Context; 4fcd787c911d5fbca2a34ff0963d4665543a03275Sam Juddimport android.net.Uri; 5fcd787c911d5fbca2a34ff0963d4665543a03275Sam Juddimport android.os.ParcelFileDescriptor; 6f7a6d65cf7c1a41908dd48e0dab68ee5b881387eSam Judd 74626911b917568f6c1bd9d93f91ae1c70cb43554Sam Juddimport com.bumptech.glide.Glide; 8b51cd256aa6d673e49c77676a5e1f9bb644cd2b3Sam Juddimport com.bumptech.glide.load.data.DataFetcher; 9b51cd256aa6d673e49c77676a5e1f9bb644cd2b3Sam Juddimport com.bumptech.glide.load.data.FileDescriptorAssetPathFetcher; 10b51cd256aa6d673e49c77676a5e1f9bb644cd2b3Sam Juddimport com.bumptech.glide.load.data.FileDescriptorLocalUriFetcher; 119fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddimport com.bumptech.glide.load.model.GenericLoaderFactory; 129fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddimport com.bumptech.glide.load.model.GlideUrl; 139fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddimport com.bumptech.glide.load.model.ModelLoader; 149fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddimport com.bumptech.glide.load.model.ModelLoaderFactory; 159fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddimport com.bumptech.glide.load.model.UriLoader; 16fcd787c911d5fbca2a34ff0963d4665543a03275Sam Judd 17fcd787c911d5fbca2a34ff0963d4665543a03275Sam Judd/** 185f4610b54d517be58105bcf73ce3291ba79f9f40Sam Judd * A {@link ModelLoader} For translating {@link Uri} models for local uris into {@link ParcelFileDescriptor} data. 19fcd787c911d5fbca2a34ff0963d4665543a03275Sam Judd */ 20fcd787c911d5fbca2a34ff0963d4665543a03275Sam Juddpublic class FileDescriptorUriLoader extends UriLoader<ParcelFileDescriptor> implements FileDescriptorModelLoader<Uri> { 21b2bcf70a40da4ebb1f914ab5ccedf3de593b6951Sam Judd 22b5419dc08eb0a0f82821d774435720e5a31bc936Sam Judd /** 23b5419dc08eb0a0f82821d774435720e5a31bc936Sam Judd * The default factory for {@link com.bumptech.glide.load.model.file_descriptor.FileDescriptorUriLoader}s. 24b5419dc08eb0a0f82821d774435720e5a31bc936Sam Judd */ 25fcd787c911d5fbca2a34ff0963d4665543a03275Sam Judd public static class Factory implements ModelLoaderFactory<Uri, ParcelFileDescriptor> { 26fcd787c911d5fbca2a34ff0963d4665543a03275Sam Judd @Override 27fcd787c911d5fbca2a34ff0963d4665543a03275Sam Judd public ModelLoader<Uri, ParcelFileDescriptor> build(Context context, GenericLoaderFactory factories) { 28fe090f50f3040f4d478143a3e0ffa8cdf813fefcSam Judd return new FileDescriptorUriLoader(context, factories.buildModelLoader(GlideUrl.class, 291c213bd9646c0292439767103060391121624ff9Sam Judd ParcelFileDescriptor.class)); 30fcd787c911d5fbca2a34ff0963d4665543a03275Sam Judd } 31fcd787c911d5fbca2a34ff0963d4665543a03275Sam Judd 32fcd787c911d5fbca2a34ff0963d4665543a03275Sam Judd @Override 33de24d6a2112bebef8d42def8c1f21c79ab7d418fRobert Papp public void teardown() { 34de24d6a2112bebef8d42def8c1f21c79ab7d418fRobert Papp // Do nothing. 35de24d6a2112bebef8d42def8c1f21c79ab7d418fRobert Papp } 36fcd787c911d5fbca2a34ff0963d4665543a03275Sam Judd } 37fcd787c911d5fbca2a34ff0963d4665543a03275Sam Judd 384626911b917568f6c1bd9d93f91ae1c70cb43554Sam Judd public FileDescriptorUriLoader(Context context) { 39c5ba6fb229c79a6f90e9c430f11d02b43bfdc247Sam Judd this(context, Glide.buildFileDescriptorModelLoader(GlideUrl.class, context)); 404626911b917568f6c1bd9d93f91ae1c70cb43554Sam Judd } 414626911b917568f6c1bd9d93f91ae1c70cb43554Sam Judd 42c5ba6fb229c79a6f90e9c430f11d02b43bfdc247Sam Judd public FileDescriptorUriLoader(Context context, ModelLoader<GlideUrl, ParcelFileDescriptor> urlLoader) { 43fcd787c911d5fbca2a34ff0963d4665543a03275Sam Judd super(context, urlLoader); 44fcd787c911d5fbca2a34ff0963d4665543a03275Sam Judd } 45fcd787c911d5fbca2a34ff0963d4665543a03275Sam Judd 46fcd787c911d5fbca2a34ff0963d4665543a03275Sam Judd @Override 47bcf4a0dae04a4ad14287eeb34069a97c96fe9bb1Sam Judd protected DataFetcher<ParcelFileDescriptor> getLocalUriFetcher(Context context, Uri uri) { 48fcd787c911d5fbca2a34ff0963d4665543a03275Sam Judd return new FileDescriptorLocalUriFetcher(context, uri); 49fcd787c911d5fbca2a34ff0963d4665543a03275Sam Judd } 50b51cd256aa6d673e49c77676a5e1f9bb644cd2b3Sam Judd 51b51cd256aa6d673e49c77676a5e1f9bb644cd2b3Sam Judd @Override 52b51cd256aa6d673e49c77676a5e1f9bb644cd2b3Sam Judd protected DataFetcher<ParcelFileDescriptor> getAssetPathFetcher(Context context, String assetPath) { 53b51cd256aa6d673e49c77676a5e1f9bb644cd2b3Sam Judd return new FileDescriptorAssetPathFetcher(context.getApplicationContext().getAssets(), assetPath); 54b51cd256aa6d673e49c77676a5e1f9bb644cd2b3Sam Judd } 55fcd787c911d5fbca2a34ff0963d4665543a03275Sam Judd} 56