├── .github ├── stale.yml └── workflows │ ├── build.yml │ └── gradle-wrapper-validation.yml ├── .gitignore ├── .gitmodules ├── .idea ├── codeStyleSettings.xml └── inspectionProfiles │ └── Project_Default.xml ├── CONTRIBUTING.md ├── ISSUE_TEMPLATE.md ├── LICENSE ├── PULL_REQUEST_TEMPLATE.md ├── README.md ├── annotation ├── .gitignore ├── build.gradle ├── compiler │ ├── .gitignore │ ├── build.gradle │ ├── gradle.properties │ ├── proguard.pro │ ├── src │ │ └── main │ │ │ ├── java │ │ │ └── com │ │ │ │ └── bumptech │ │ │ │ └── glide │ │ │ │ └── annotation │ │ │ │ └── compiler │ │ │ │ ├── AppModuleGenerator.java │ │ │ │ ├── AppModuleProcessor.java │ │ │ │ ├── ExtensionProcessor.java │ │ │ │ ├── GlideAnnotationProcessor.java │ │ │ │ ├── GlideExtensionValidator.java │ │ │ │ ├── GlideGenerator.java │ │ │ │ ├── IndexerGenerator.java │ │ │ │ ├── LibraryModuleProcessor.java │ │ │ │ ├── ProcessorUtil.java │ │ │ │ ├── RequestBuilderGenerator.java │ │ │ │ ├── RequestManagerFactoryGenerator.java │ │ │ │ ├── RequestManagerGenerator.java │ │ │ │ ├── RequestOptionsExtensionGenerator.java │ │ │ │ ├── RequestOptionsGenerator.java │ │ │ │ └── RequestOptionsOverrideGenerator.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── gradle │ │ │ └── incremental.annotation.processors │ └── test │ │ ├── .gitignore │ │ ├── build.gradle │ │ └── src │ │ └── test │ │ ├── java │ │ └── com │ │ │ └── bumptech │ │ │ └── glide │ │ │ └── annotation │ │ │ └── compiler │ │ │ ├── AppGlideModuleWithExcludesTest.java │ │ │ ├── AppGlideModuleWithLibraryInPackageTest.java │ │ │ ├── AppGlideModuleWithMultipleExcludesTest.java │ │ │ ├── EmptyAppAndLibraryGlideModulesTest.java │ │ │ ├── EmptyAppGlideModuleTest.java │ │ │ ├── EmptyLibraryGlideModuleTest.java │ │ │ ├── GlideExtensionOptionsTest.java │ │ │ ├── GlideExtensionWithOptionTest.java │ │ │ ├── GlideExtensionWithTypeTest.java │ │ │ ├── InvalidAppGlideModuleWithExcludesTest.java │ │ │ ├── InvalidGlideExtensionTest.java │ │ │ ├── InvalidGlideOptionsExtensionTest.java │ │ │ ├── InvalidGlideTypeExtensionTest.java │ │ │ ├── MultipleAppGlideModuleTest.java │ │ │ ├── MultipleEmptyLibraryGlideModuleTest.java │ │ │ ├── OverlyLongFileNameTest.java │ │ │ └── test │ │ │ ├── CompilationProvider.java │ │ │ ├── ReferencedResource.java │ │ │ ├── RegenerateResourcesRule.java │ │ │ ├── SubDirectory.java │ │ │ ├── TestDescription.java │ │ │ └── Util.java │ │ └── resources │ │ ├── AppGlideModuleWithExcludesTest │ │ ├── AppModuleWithExcludes.java │ │ └── GeneratedAppGlideModuleImpl.java │ │ ├── AppGlideModuleWithLibraryInPackageTest │ │ ├── AppModuleWithLibraryInPackage.java │ │ ├── GeneratedAppGlideModuleImpl.java │ │ └── LibraryModuleInPackage.java │ │ ├── AppGlideModuleWithMultipleExcludesTest │ │ ├── AppModuleWithMultipleExcludes.java │ │ ├── EmptyLibraryModule1.java │ │ ├── EmptyLibraryModule2.java │ │ └── GeneratedAppGlideModuleImpl.java │ │ ├── EmptyAppAndLibraryGlideModulesTest │ │ └── GeneratedAppGlideModuleImpl.java │ │ ├── EmptyAppGlideModuleTest │ │ ├── EmptyAppModule.java │ │ ├── GeneratedAppGlideModuleImpl.java │ │ ├── GeneratedRequestManagerFactory.java │ │ ├── GlideApp.java │ │ ├── GlideOptions.java │ │ ├── GlideRequest.java │ │ └── GlideRequests.java │ │ ├── EmptyLibraryGlideModuleTest │ │ ├── EmptyLibraryModule.java │ │ └── GlideIndexer_GlideModule_com_bumptech_glide_test_EmptyLibraryModule.java │ │ ├── GlideExtensionOptionsTest │ │ ├── MemoizeStaticMethod │ │ │ ├── Extension.java │ │ │ ├── GlideOptions.java │ │ │ └── GlideRequest.java │ │ ├── OverrideExtend │ │ │ ├── Extension.java │ │ │ ├── GlideOptions.java │ │ │ └── GlideRequest.java │ │ ├── OverrideExtendMultipleArguments │ │ │ ├── Extension.java │ │ │ ├── GlideOptions.java │ │ │ └── GlideRequest.java │ │ ├── OverrideReplace │ │ │ ├── Extension.java │ │ │ ├── GlideOptions.java │ │ │ └── GlideRequest.java │ │ ├── SkipStaticMethod │ │ │ ├── Extension.java │ │ │ ├── GlideOptions.java │ │ │ └── GlideRequest.java │ │ └── StaticMethodName │ │ │ ├── Extension.java │ │ │ ├── GlideOptions.java │ │ │ └── GlideRequest.java │ │ ├── GlideExtensionWithOptionTest │ │ ├── ExtensionWithOption.java │ │ ├── GlideOptions.java │ │ └── GlideRequest.java │ │ ├── GlideExtensionWithTypeTest │ │ ├── ExtensionWithType.java │ │ ├── GlideOptions.java │ │ └── GlideRequests.java │ │ ├── MultipleAppGlideModuleTest │ │ ├── EmptyAppModule1.java │ │ └── EmptyAppModule2.java │ │ └── MultipleEmptyLibraryGlideModuleTest │ │ ├── EmptyLibraryModule1.java │ │ ├── EmptyLibraryModule2.java │ │ └── GlideIndexer_GlideModule_com_bumptech_glide_test_EmptyLibraryModule1_com_bumptech_glide_test_EmptyLibraryModule2.java ├── gradle.properties ├── ksp │ ├── build.gradle │ ├── gradle.properties │ ├── integrationtest │ │ ├── build.gradle │ │ └── src │ │ │ └── test │ │ │ └── java │ │ │ └── com │ │ │ └── bumptech │ │ │ └── glide │ │ │ └── annotation │ │ │ └── ksp │ │ │ └── integrationtest │ │ │ └── IntegrationLibraryGlideModuleTests.kt │ ├── src │ │ └── main │ │ │ └── kotlin │ │ │ └── com │ │ │ └── bumptech │ │ │ └── glide │ │ │ └── annotation │ │ │ └── ksp │ │ │ ├── AppGlideModules.kt │ │ │ ├── GlideSymbolProcessor.kt │ │ │ ├── GlideSymbolProcessorProvider.kt │ │ │ ├── LibraryGlideModules.kt │ │ │ └── ModuleParser.kt │ └── test │ │ ├── build.gradle │ │ └── src │ │ ├── main │ │ └── kotlin │ │ │ └── com │ │ │ └── bumptech │ │ │ └── glide │ │ │ └── annotation │ │ │ └── ksp │ │ │ └── test │ │ │ └── SourceTestHelpers.kt │ │ └── test │ │ └── kotlin │ │ └── com │ │ └── bumptech │ │ └── glide │ │ └── annotation │ │ └── ksp │ │ └── test │ │ ├── LibraryGlideModuleTests.kt │ │ └── OnlyAppGlideModuleTests.kt └── src │ └── main │ └── java │ └── com │ └── bumptech │ └── glide │ └── annotation │ ├── Excludes.java │ ├── GlideExtension.java │ ├── GlideModule.java │ ├── GlideOption.java │ ├── GlideType.java │ ├── compiler │ └── Index.java │ └── ksp │ └── Index.java ├── benchmark ├── benchmark-proguard-rules.pro ├── build.gradle ├── gradle.properties └── src │ ├── androidTest │ ├── AndroidManifest.xml │ └── java │ │ └── com │ │ └── bumptech │ │ └── glide │ │ ├── benchmark │ │ ├── BenchmarkData.java │ │ ├── BenchmarkFromCache.java │ │ ├── BenchmarkMediaStoreData.java │ │ ├── BenchmarkModels.java │ │ ├── GlideBenchmarkRule.java │ │ └── data │ │ │ └── DataOpener.java │ │ └── load │ │ └── resource │ │ └── bitmap │ │ └── BenchmarkDownsampler.java │ └── main │ └── res │ └── raw │ ├── huge_header.jpg │ ├── pixel3a_exif_rotated.jpg │ ├── pixel3a_mvimg_exif_rotated.jpg │ ├── pixel3a_portrait.jpg │ ├── pixel3a_portrait_mvimg.jpg │ └── small.jpg ├── build.gradle ├── checkstyle.xml ├── checkstyle_suppressions.xml ├── debug.keystore ├── exifsamples ├── Landscape_0.jpg ├── Landscape_1.jpg ├── Landscape_2.jpg ├── Landscape_3.jpg ├── Landscape_4.jpg ├── Landscape_5.jpg ├── Landscape_6.jpg ├── Landscape_7.jpg ├── Landscape_8.jpg ├── Portrait_0.jpg ├── Portrait_1.jpg ├── Portrait_2.jpg ├── Portrait_3.jpg ├── Portrait_4.jpg ├── Portrait_5.jpg ├── Portrait_6.jpg ├── Portrait_7.jpg └── Portrait_8.jpg ├── gcloud-bumptech.json.enc ├── gcloud-sjudd.json.enc ├── glide ├── build.gradle └── gradle.properties ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── instrumentation ├── build.gradle ├── gradle.properties └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── bumptech │ │ └── glide │ │ ├── AsBytesTest.java │ │ ├── AsFileTest.java │ │ ├── CachingTest.java │ │ ├── CenterCropRegressionTest.java │ │ ├── CenterInsideRegressionTest.java │ │ ├── CircleCropRegressionTest.java │ │ ├── DarkModeTest.java │ │ ├── DataUriTest.java │ │ ├── DownsampleVideoTest.java │ │ ├── DrawableTransformationTest.java │ │ ├── ErrorHandlingTest.java │ │ ├── ExternallyClearedDiskCacheTest.java │ │ ├── FitCenterRegressionTest.java │ │ ├── LargeImageTest.java │ │ ├── LoadAnimatedImageResourceTest.java │ │ ├── LoadAssetUriTest.java │ │ ├── LoadBitmapTest.java │ │ ├── LoadBytesTest.java │ │ ├── LoadDrawableTest.java │ │ ├── LoadResourcesWithDownsamplerTest.java │ │ ├── LoadVideoResourceTest.java │ │ ├── MultiRequestTest.java │ │ ├── NonBitmapDrawableResourcesTest.java │ │ ├── PausedRequestsTest.java │ │ ├── RequestManagerLifecycleTest.java │ │ ├── RequestManagerTest.java │ │ ├── RequestTest.java │ │ ├── RoundedCornersRegressionTest.java │ │ ├── WideGamutTest.java │ │ ├── load │ │ ├── engine │ │ │ └── executor │ │ │ │ └── IdlingGlideRule.java │ │ └── resource │ │ │ ├── bitmap │ │ │ └── DownsamplerEmulatorTest.java │ │ │ └── gif │ │ │ └── GifDrawableTest.java │ │ └── test │ │ ├── BitmapRegressionTester.java │ │ ├── CanonicalBitmap.java │ │ ├── ModelGeneratorRule.java │ │ ├── RegressionTest.java │ │ ├── ResourceIds.java │ │ ├── SplitByCpu.java │ │ └── SplitBySdk.java │ └── main │ ├── AndroidManifest.xml │ ├── assets │ ├── canonical.jpg │ └── video.mp4 │ ├── java │ └── com │ │ └── bumptech │ │ └── glide │ │ └── test │ │ ├── DefaultFragmentActivity.java │ │ ├── ForceDarkOrLightModeActivity.java │ │ ├── GlideWithAsDifferentSupertypesActivity.java │ │ ├── GlideWithBeforeSuperOnCreateActivity.java │ │ └── InstrumentationAppGlideModule.java │ └── res │ ├── drawable-night │ └── dog.jpg │ ├── drawable │ ├── bitmap_alias.xml │ ├── dog.jpg │ ├── googlelogo_color_120x44dp.9.png │ ├── shape_drawable.xml │ ├── state_list_drawable.xml │ ├── vector_drawable.xml │ ├── vector_drawable_dark.xml │ └── vector_drawable_light.xml │ ├── layout │ └── default_fragment_activity.xml │ ├── raw │ ├── canonical.jpg │ ├── canonical_large.jpg │ ├── canonical_png.png │ ├── canonical_transparent_png.png │ ├── ccrt_centercrop_withrectanglelargerthanimage_returnsupscaledrectangularimage_16_armeabi_v7a.png │ ├── ccrt_centercrop_withrectanglelargerthanimage_returnsupscaledrectangularimage_16_x86.png │ ├── ccrt_centercrop_withrectanglelargerthanimage_returnsupscaledrectangularimage_21_armeabi_v7a.png │ ├── ccrt_centercrop_withrectanglelargerthanimage_returnsupscaledrectangularimage_21_x86.png │ ├── ccrt_centercrop_withrectanglelargerthanimage_returnsupscaledrectangularimage_24_x86.png │ ├── ccrt_centercrop_withrectanglesmallerthanimage_returnsrectangularimage_16_armeabi_v7a.png │ ├── ccrt_centercrop_withrectanglesmallerthanimage_returnsrectangularimage_16_x86.png │ ├── ccrt_centercrop_withrectanglesmallerthanimage_returnsrectangularimage_21_armeabi_v7a.png │ ├── ccrt_centercrop_withrectanglesmallerthanimage_returnsrectangularimage_21_x86.png │ ├── ccrt_centercrop_withrectanglesmallerthanimage_returnsrectangularimage_24_x86.png │ ├── ccrt_centercrop_withsquarelargerthanimage_returnsupscaledrectangularimage_16_armeabi_v7a.png │ ├── ccrt_centercrop_withsquarelargerthanimage_returnsupscaledrectangularimage_16_x86.png │ ├── ccrt_centercrop_withsquarelargerthanimage_returnsupscaledrectangularimage_21_armeabi_v7a.png │ ├── ccrt_centercrop_withsquarelargerthanimage_returnsupscaledrectangularimage_21_x86.png │ ├── ccrt_centercrop_withsquarelargerthanimage_returnsupscaledrectangularimage_24_x86.png │ ├── ccrt_centercrop_withsquaresmallerthanimage_returnssquareimage_16_armeabi_v7a.png │ ├── ccrt_centercrop_withsquaresmallerthanimage_returnssquareimage_16_x86.png │ ├── ccrt_centercrop_withsquaresmallerthanimage_returnssquareimage_21_armeabi_v7a.png │ ├── ccrt_centercrop_withsquaresmallerthanimage_returnssquareimage_21_x86.png │ ├── ccrt_centercrop_withsquaresmallerthanimage_returnssquareimage_24_x86.png │ ├── ccrt_circlecrop_withnarrowrectangle_cropswithin_16_armeabi_v7a.png │ ├── ccrt_circlecrop_withnarrowrectangle_cropswithin_16_x86.png │ ├── ccrt_circlecrop_withnarrowrectangle_cropswithin_18_armeabi_v7a.png │ ├── ccrt_circlecrop_withnarrowrectangle_cropswithin_18_x86.png │ ├── ccrt_circlecrop_withnarrowrectangle_cropswithin_21_armeabi_v7a.png │ ├── ccrt_circlecrop_withnarrowrectangle_cropswithin_21_x86.png │ ├── ccrt_circlecrop_withnarrowrectangle_cropswithin_23_x86.png │ ├── ccrt_circlecrop_withnarrowrectangle_cropswithin_24_x86.png │ ├── ccrt_circlecrop_withnarrowrectangle_cropswithin_26_x86.png │ ├── ccrt_circlecrop_withnarrowrectangle_fitswithinmaintainingaspectratio_16_x86.png │ ├── ccrt_circlecrop_withnarrowrectangle_fitswithinmaintainingaspectratio_18_x86.png │ ├── ccrt_circlecrop_withnarrowrectangle_fitswithinmaintainingaspectratio_21_x86.png │ ├── ccrt_circlecrop_withnarrowrectangle_fitswithinmaintainingaspectratio_23_x86.png │ ├── ccrt_circlecrop_withnarrowrectangle_fitswithinmaintainingaspectratio_24_x86.png │ ├── ccrt_circlecrop_withnarrowrectangle_fitswithinmaintainingaspectratio_26_x86.png │ ├── ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_16_armeabi_v7a.png │ ├── ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_16_x86.png │ ├── ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_18_armeabi_v7a.png │ ├── ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_18_x86.png │ ├── ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_21_armeabi_v7a.png │ ├── ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_21_x86.png │ ├── ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_23_x86.png │ ├── ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_24_x86.png │ ├── ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_26_x86.png │ ├── ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_16_armeabi_v7a.png │ ├── ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_16_x86.png │ ├── ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_18_armeabi_v7a.png │ ├── ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_18_x86.png │ ├── ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_21_armeabi_v7a.png │ ├── ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_21_x86.png │ ├── ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_23_x86.png │ ├── ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_24_x86.png │ ├── ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_26_x86.png │ ├── ccrt_circlecrop_withsquaresmallerthanimage_retunsimagefitwithinsquare_16_x86.png │ ├── ccrt_circlecrop_withsquaresmallerthanimage_retunsimagefitwithinsquare_18_x86.png │ ├── ccrt_circlecrop_withsquaresmallerthanimage_retunsimagefitwithinsquare_21_x86.png │ ├── ccrt_circlecrop_withsquaresmallerthanimage_retunsimagefitwithinsquare_23_x86.png │ ├── ccrt_circlecrop_withsquaresmallerthanimage_retunsimagefitwithinsquare_24_x86.png │ ├── ccrt_circlecrop_withsquaresmallerthanimage_retunsimagefitwithinsquare_26_x86.png │ ├── ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_16_armeabi_v7a.png │ ├── ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_16_x86.png │ ├── ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_18_armeabi_v7a.png │ ├── ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_18_x86.png │ ├── ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_21_armeabi_v7a.png │ ├── ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_21_x86.png │ ├── ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_23_x86.png │ ├── ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_24_x86.png │ ├── ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_26_x86.png │ ├── cirt_centerinside_withnarrowrectangle_fitswithinmaintainingaspectratio_16_armeabi_v7a.png │ ├── cirt_centerinside_withnarrowrectangle_fitswithinmaintainingaspectratio_16_x86.png │ ├── cirt_centerinside_withnarrowrectangle_fitswithinmaintainingaspectratio_21_armeabi_v7a.png │ ├── cirt_centerinside_withnarrowrectangle_fitswithinmaintainingaspectratio_21_x86.png │ ├── cirt_centerinside_withnarrowrectangle_fitswithinmaintainingaspectratio_24_x86.png │ ├── cirt_centerinside_withshortrectangle_fitswithinmaintainingaspectratio_16_armeabi_v7a.png │ ├── cirt_centerinside_withshortrectangle_fitswithinmaintainingaspectratio_16_x86.png │ ├── cirt_centerinside_withshortrectangle_fitswithinmaintainingaspectratio_21_armeabi_v7a.png │ ├── cirt_centerinside_withshortrectangle_fitswithinmaintainingaspectratio_21_x86.png │ ├── cirt_centerinside_withshortrectangle_fitswithinmaintainingaspectratio_24_x86.png │ ├── cirt_centerinside_withsquarelargerthanimage_returnsoriginalimage_16_armeabi_v7a.png │ ├── cirt_centerinside_withsquarelargerthanimage_returnsoriginalimage_16_x86.png │ ├── cirt_centerinside_withsquarelargerthanimage_returnsoriginalimage_21_armeabi_v7a.png │ ├── cirt_centerinside_withsquarelargerthanimage_returnsoriginalimage_21_x86.png │ ├── cirt_centerinside_withsquarelargerthanimage_returnsoriginalimage_24_x86.png │ ├── cirt_centerinside_withsquaresmallerthanimage_returnsimagefitwithinsquare_16_armeabi_v7a.png │ ├── cirt_centerinside_withsquaresmallerthanimage_returnsimagefitwithinsquare_16_x86.png │ ├── cirt_centerinside_withsquaresmallerthanimage_returnsimagefitwithinsquare_21_armeabi_v7a.png │ ├── cirt_centerinside_withsquaresmallerthanimage_returnsimagefitwithinsquare_21_x86.png │ ├── cirt_centerinside_withsquaresmallerthanimage_returnsimagefitwithinsquare_24_x86.png │ ├── dl_world_anim.gif │ ├── dl_world_anim_avif.avif │ ├── dl_world_anim_webp.webp │ ├── dog_dark.jpg │ ├── dog_light.jpg │ ├── fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_16_armeabi_v7a.png │ ├── fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_16_x86.png │ ├── fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_18_armeabi_v7a.png │ ├── fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_18_x86.png │ ├── fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_19_armeabi_v7a.png │ ├── fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_19_x86.png │ ├── fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_21_armeabi_v7a.png │ ├── fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_21_x86.png │ ├── fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_23_x86.png │ ├── fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_24_x86.png │ ├── fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_16_armeabi_v7a.png │ ├── fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_16_x86.png │ ├── fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_18_armeabi_v7a.png │ ├── fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_18_x86.png │ ├── fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_19_armeabi_v7a.png │ ├── fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_19_x86.png │ ├── fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_21_armeabi_v7a.png │ ├── fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_21_x86.png │ ├── fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_23_x86.png │ ├── fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_24_x86.png │ ├── fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_16_armeabi_v7a.png │ ├── fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_16_x86.png │ ├── fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_18_armeabi_v7a.png │ ├── fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_18_x86.png │ ├── fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_19_armeabi_v7a.png │ ├── fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_19_x86.png │ ├── fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_21_armeabi_v7a.png │ ├── fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_21_x86.png │ ├── fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_23_x86.png │ ├── fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_24_x86.png │ ├── fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_16_armeabi_v7a.png │ ├── fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_16_x86.png │ ├── fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_18_armeabi_v7a.png │ ├── fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_18_x86.png │ ├── fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_19_armeabi_v7a.png │ ├── fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_19_x86.png │ ├── fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_21_armeabi_v7a.png │ ├── fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_21_x86.png │ ├── fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_23_x86.png │ ├── fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_24_x86.png │ ├── interlaced_transparent_gif.gif │ ├── opaque_gif.gif │ ├── opaque_interlaced_gif.gif │ ├── rcrt_testroundedcorners_16_armeabi_v7a.png │ ├── rcrt_testroundedcorners_16_x86.png │ ├── rcrt_testroundedcorners_18_armeabi_v7a.png │ ├── rcrt_testroundedcorners_18_x86.png │ ├── rcrt_testroundedcorners_19_armeabi_v7a.png │ ├── rcrt_testroundedcorners_19_x86.png │ ├── rcrt_testroundedcorners_21_armeabi_v7a.png │ ├── rcrt_testroundedcorners_21_x86.png │ ├── rcrt_testroundedcorners_23_x86.png │ ├── rcrt_testroundedcorners_24_x86.png │ ├── rcrt_testroundedcorners_26_x86.png │ ├── rcrt_testroundedcorners_overrounded_16_armeabi_v7a.png │ ├── rcrt_testroundedcorners_overrounded_16_x86.png │ ├── rcrt_testroundedcorners_overrounded_18_armeabi_v7a.png │ ├── rcrt_testroundedcorners_overrounded_18_x86.png │ ├── rcrt_testroundedcorners_overrounded_19_armeabi_v7a.png │ ├── rcrt_testroundedcorners_overrounded_19_x86.png │ ├── rcrt_testroundedcorners_overrounded_21_armeabi_v7a.png │ ├── rcrt_testroundedcorners_overrounded_21_x86.png │ ├── rcrt_testroundedcorners_overrounded_23_x86.png │ ├── rcrt_testroundedcorners_overrounded_24_x86.png │ ├── rcrt_testroundedcorners_overrounded_26_x86.png │ ├── rcrt_testroundedcorners_usepool_16_armeabi_v7a.png │ ├── rcrt_testroundedcorners_usepool_16_x86.png │ ├── rcrt_testroundedcorners_usepool_18_armeabi_v7a.png │ ├── rcrt_testroundedcorners_usepool_18_x86.png │ ├── rcrt_testroundedcorners_usepool_19_armeabi_v7a.png │ ├── rcrt_testroundedcorners_usepool_19_x86.png │ ├── rcrt_testroundedcorners_usepool_21_armeabi_v7a.png │ ├── rcrt_testroundedcorners_usepool_21_x86.png │ ├── rcrt_testroundedcorners_usepool_23_x86.png │ ├── rcrt_testroundedcorners_usepool_24_x86.png │ ├── rcrt_testroundedcorners_usepool_26_x86.png │ ├── transparent_gif.gif │ ├── video.mp4 │ └── webkit_logo_p3.png │ ├── values-night │ └── colors.xml │ └── values │ ├── colors.xml │ ├── strings.xml │ └── styles.xml ├── integration ├── avif │ ├── build.gradle │ ├── gradle.properties │ ├── lint.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── bumptech │ │ └── glide │ │ └── integration │ │ └── avif │ │ ├── AvifByteBufferBitmapDecoder.java │ │ ├── AvifGlideModule.java │ │ └── AvifStreamBitmapDecoder.java ├── build.gradle ├── compose │ ├── api │ │ └── compose.api │ ├── build.gradle │ ├── gradle.properties │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── com │ │ │ └── bumptech │ │ │ └── glide │ │ │ ├── integration │ │ │ └── compose │ │ │ │ ├── GlideImageCustomDrawableTransformationTest.kt │ │ │ │ ├── GlideImageDefaultTransformationTest.kt │ │ │ │ ├── GlideImageErrorTest.kt │ │ │ │ ├── GlideImagePlaceholderTest.kt │ │ │ │ ├── GlideImageTest.kt │ │ │ │ ├── RememberGlidePreloadingDataTest.kt │ │ │ │ └── test │ │ │ │ ├── GlideComposeRule.kt │ │ │ │ ├── expectations.kt │ │ │ │ └── nodes.kt │ │ │ └── load │ │ │ └── engine │ │ │ └── executor │ │ │ └── GlideIdlingResourceInit.kt │ │ ├── main │ │ └── java │ │ │ └── com │ │ │ └── bumptech │ │ │ └── glide │ │ │ └── integration │ │ │ └── compose │ │ │ ├── ExperimentalGlideComposeApi.kt │ │ │ ├── GlideImage.kt │ │ │ ├── GlidePainter.kt │ │ │ ├── Preload.kt │ │ │ └── Sizes.kt │ │ └── test │ │ └── java │ │ └── com │ │ └── bumptech │ │ └── glide │ │ └── integration │ │ └── compose │ │ └── GlideImageTest.kt ├── concurrent │ ├── build.gradle │ ├── gradle.properties │ └── src │ │ ├── main │ │ └── java │ │ │ └── com │ │ │ └── bumptech │ │ │ └── glide │ │ │ └── integration │ │ │ └── concurrent │ │ │ └── GlideFutures.java │ │ └── test │ │ └── java │ │ └── com │ │ └── bumptech │ │ └── glide │ │ └── integration │ │ └── concurrent │ │ └── GlideFuturesTest.java ├── cronet │ ├── build.gradle │ ├── gradle.properties │ ├── lint.xml │ └── src │ │ ├── main │ │ ├── AndroidManifest.xml │ │ └── java │ │ │ └── com │ │ │ └── bumptech │ │ │ └── glide │ │ │ └── integration │ │ │ └── cronet │ │ │ ├── BufferQueue.java │ │ │ ├── ByteBufferParser.java │ │ │ ├── ChromiumRequestSerializer.java │ │ │ ├── ChromiumUrlFetcher.java │ │ │ ├── ChromiumUrlLoader.java │ │ │ ├── CronetEngineSingleton.java │ │ │ ├── CronetGlideModule.java │ │ │ ├── CronetLibraryGlideModule.java │ │ │ ├── CronetRequestFactory.java │ │ │ ├── CronetRequestFactoryImpl.java │ │ │ └── DataLogger.java │ │ └── test │ │ ├── AndroidManifest.xml │ │ └── java │ │ └── com │ │ └── bumptech │ │ └── glide │ │ └── integration │ │ └── cronet │ │ └── ChromiumUrlFetcherTest.java ├── gifencoder │ ├── build.gradle │ ├── gradle.properties │ ├── lint.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── com │ │ │ └── bumptech │ │ │ └── glide │ │ │ └── integration │ │ │ └── gifencoder │ │ │ └── ReEncodingGifResourceEncoder.java │ │ └── test │ │ └── java │ │ └── com │ │ └── bumptech │ │ └── glide │ │ └── integration │ │ └── gifencoder │ │ └── ReEncodingGifResourceEncoderTest.java ├── gradle.properties ├── ktx │ ├── api │ │ └── ktx.api │ ├── build.gradle │ ├── gradle.properties │ └── src │ │ ├── main │ │ └── java │ │ │ └── com │ │ │ └── bumptech │ │ │ └── glide │ │ │ ├── GlideIntegration.kt │ │ │ └── integration │ │ │ └── ktx │ │ │ ├── Flows.kt │ │ │ └── InternalGlideApi.kt │ │ └── test │ │ └── java │ │ └── com │ │ └── bumptech │ │ └── glide │ │ ├── integration │ │ └── ktx │ │ │ └── FlowsTest.kt │ │ └── load │ │ └── engine │ │ └── executor │ │ └── GlideIdlingResourceInit.kt ├── okhttp │ ├── build.gradle │ ├── gradle.properties │ ├── lint.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── bumptech │ │ └── glide │ │ └── integration │ │ └── okhttp │ │ ├── OkHttpGlideModule.java │ │ ├── OkHttpLibraryGlideModule.java │ │ ├── OkHttpStreamFetcher.java │ │ └── OkHttpUrlLoader.java ├── okhttp3 │ ├── build.gradle │ ├── gradle.properties │ ├── lint.xml │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ └── java │ │ └── com │ │ └── bumptech │ │ └── glide │ │ └── integration │ │ └── okhttp3 │ │ ├── OkHttpGlideModule.java │ │ ├── OkHttpLibraryGlideModule.java │ │ ├── OkHttpStreamFetcher.java │ │ └── OkHttpUrlLoader.java ├── okhttp4 │ ├── build.gradle │ ├── gradle.properties │ ├── lint.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── bumptech │ │ └── glide │ │ └── integration │ │ └── okhttp3 │ │ ├── OkHttpLibraryGlideModule.java │ │ ├── OkHttpStreamFetcher.java │ │ └── OkHttpUrlLoader.java ├── recyclerview │ ├── build.gradle │ ├── gradle.properties │ ├── lint.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── bumptech │ │ └── glide │ │ └── integration │ │ └── recyclerview │ │ ├── RecyclerToListViewScrollListener.java │ │ └── RecyclerViewPreloader.java ├── sqljournaldiskcache │ ├── build.gradle │ ├── gradle.properties │ └── src │ │ ├── main │ │ └── java │ │ │ └── com │ │ │ └── bumptech │ │ │ └── glide │ │ │ └── integration │ │ │ └── sqljournaldiskcache │ │ │ ├── Clock.java │ │ │ ├── DefaultClock.java │ │ │ ├── DiskCacheDbHelper.java │ │ │ ├── EntryCache.java │ │ │ ├── EvictionManager.java │ │ │ ├── FileSystem.java │ │ │ ├── GlideJournaledLruDiskCacheWrapper.java │ │ │ ├── Journal.java │ │ │ ├── JournalTable.java │ │ │ ├── JournaledLruDiskCache.java │ │ │ ├── MessageIds.java │ │ │ ├── RecoveryManager.java │ │ │ ├── SizeJournal.java │ │ │ ├── SizeTable.java │ │ │ └── SqliteStatementPool.java │ │ └── test │ │ └── java │ │ └── com │ │ └── bumptech │ │ └── glide │ │ └── integration │ │ └── sqljournaldiskcache │ │ ├── DiskCacheDbHelperUpgradeTest.java │ │ ├── DiskCacheUtils.java │ │ ├── JournaledLruDiskCacheTest.java │ │ └── TestClock.java └── volley │ ├── build.gradle │ ├── gradle.properties │ ├── lint.xml │ └── src │ ├── main │ ├── AndroidManifest.xml │ └── java │ │ └── com │ │ └── bumptech │ │ └── glide │ │ └── integration │ │ └── volley │ │ ├── VolleyGlideModule.java │ │ ├── VolleyLibraryGlideModule.java │ │ ├── VolleyRequestFactory.java │ │ ├── VolleyStreamFetcher.java │ │ └── VolleyUrlLoader.java │ └── test │ └── java │ └── com │ └── bumptech │ └── glide │ └── integration │ └── volley │ └── VolleyStreamFetcherServerTest.java ├── library ├── build.gradle ├── gradle.properties ├── lint.xml ├── pmd-ruleset.xml ├── pmd │ └── build.gradle ├── proguard-rules.txt ├── src │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── bumptech │ │ │ │ └── glide │ │ │ │ ├── GeneratedAppGlideModule.java │ │ │ │ ├── GenericTransitionOptions.java │ │ │ │ ├── Glide.java │ │ │ │ ├── GlideBuilder.java │ │ │ │ ├── GlideContext.java │ │ │ │ ├── GlideExperiments.java │ │ │ │ ├── ListPreloader.java │ │ │ │ ├── MemoryCategory.java │ │ │ │ ├── ModelTypes.java │ │ │ │ ├── Priority.java │ │ │ │ ├── Registry.java │ │ │ │ ├── RegistryFactory.java │ │ │ │ ├── RequestBuilder.java │ │ │ │ ├── RequestManager.java │ │ │ │ ├── TransitionOptions.java │ │ │ │ ├── load │ │ │ │ ├── DataSource.java │ │ │ │ ├── DecodeFormat.java │ │ │ │ ├── EncodeStrategy.java │ │ │ │ ├── Encoder.java │ │ │ │ ├── HttpException.java │ │ │ │ ├── ImageHeaderParser.java │ │ │ │ ├── ImageHeaderParserUtils.java │ │ │ │ ├── Key.java │ │ │ │ ├── MultiTransformation.java │ │ │ │ ├── Option.java │ │ │ │ ├── Options.java │ │ │ │ ├── PreferredColorSpace.java │ │ │ │ ├── ResourceDecoder.java │ │ │ │ ├── ResourceEncoder.java │ │ │ │ ├── Transformation.java │ │ │ │ ├── data │ │ │ │ │ ├── AssetFileDescriptorLocalUriFetcher.java │ │ │ │ │ ├── AssetPathFetcher.java │ │ │ │ │ ├── BufferedOutputStream.java │ │ │ │ │ ├── DataFetcher.java │ │ │ │ │ ├── DataRewinder.java │ │ │ │ │ ├── DataRewinderRegistry.java │ │ │ │ │ ├── ExifOrientationStream.java │ │ │ │ │ ├── FileDescriptorAssetPathFetcher.java │ │ │ │ │ ├── FileDescriptorLocalUriFetcher.java │ │ │ │ │ ├── HttpUrlFetcher.java │ │ │ │ │ ├── InputStreamRewinder.java │ │ │ │ │ ├── LocalUriFetcher.java │ │ │ │ │ ├── ParcelFileDescriptorRewinder.java │ │ │ │ │ ├── StreamAssetPathFetcher.java │ │ │ │ │ ├── StreamLocalUriFetcher.java │ │ │ │ │ └── mediastore │ │ │ │ │ │ ├── FileService.java │ │ │ │ │ │ ├── MediaStoreUtil.java │ │ │ │ │ │ ├── ThumbFetcher.java │ │ │ │ │ │ ├── ThumbnailQuery.java │ │ │ │ │ │ └── ThumbnailStreamOpener.java │ │ │ │ ├── engine │ │ │ │ │ ├── ActiveResources.java │ │ │ │ │ ├── CallbackException.java │ │ │ │ │ ├── DataCacheGenerator.java │ │ │ │ │ ├── DataCacheKey.java │ │ │ │ │ ├── DataCacheWriter.java │ │ │ │ │ ├── DataFetcherGenerator.java │ │ │ │ │ ├── DecodeHelper.java │ │ │ │ │ ├── DecodeJob.java │ │ │ │ │ ├── DecodePath.java │ │ │ │ │ ├── DiskCacheStrategy.java │ │ │ │ │ ├── Engine.java │ │ │ │ │ ├── EngineJob.java │ │ │ │ │ ├── EngineJobListener.java │ │ │ │ │ ├── EngineKey.java │ │ │ │ │ ├── EngineKeyFactory.java │ │ │ │ │ ├── EngineResource.java │ │ │ │ │ ├── GlideException.java │ │ │ │ │ ├── Initializable.java │ │ │ │ │ ├── Jobs.java │ │ │ │ │ ├── LoadPath.java │ │ │ │ │ ├── LockedResource.java │ │ │ │ │ ├── Resource.java │ │ │ │ │ ├── ResourceCacheGenerator.java │ │ │ │ │ ├── ResourceCacheKey.java │ │ │ │ │ ├── ResourceRecycler.java │ │ │ │ │ ├── SourceGenerator.java │ │ │ │ │ ├── bitmap_recycle │ │ │ │ │ │ ├── ArrayAdapterInterface.java │ │ │ │ │ │ ├── ArrayPool.java │ │ │ │ │ │ ├── AttributeStrategy.java │ │ │ │ │ │ ├── BaseKeyPool.java │ │ │ │ │ │ ├── BitmapPool.java │ │ │ │ │ │ ├── BitmapPoolAdapter.java │ │ │ │ │ │ ├── ByteArrayAdapter.java │ │ │ │ │ │ ├── GroupedLinkedMap.java │ │ │ │ │ │ ├── IntegerArrayAdapter.java │ │ │ │ │ │ ├── LruArrayPool.java │ │ │ │ │ │ ├── LruBitmapPool.java │ │ │ │ │ │ ├── LruPoolStrategy.java │ │ │ │ │ │ ├── Poolable.java │ │ │ │ │ │ ├── PrettyPrintTreeMap.java │ │ │ │ │ │ ├── SizeConfigStrategy.java │ │ │ │ │ │ └── SizeStrategy.java │ │ │ │ │ ├── cache │ │ │ │ │ │ ├── DiskCache.java │ │ │ │ │ │ ├── DiskCacheAdapter.java │ │ │ │ │ │ ├── DiskCacheWriteLocker.java │ │ │ │ │ │ ├── DiskLruCacheFactory.java │ │ │ │ │ │ ├── DiskLruCacheWrapper.java │ │ │ │ │ │ ├── ExternalCacheDiskCacheFactory.java │ │ │ │ │ │ ├── ExternalPreferredCacheDiskCacheFactory.java │ │ │ │ │ │ ├── InternalCacheDiskCacheFactory.java │ │ │ │ │ │ ├── LruResourceCache.java │ │ │ │ │ │ ├── MemoryCache.java │ │ │ │ │ │ ├── MemoryCacheAdapter.java │ │ │ │ │ │ ├── MemorySizeCalculator.java │ │ │ │ │ │ └── SafeKeyGenerator.java │ │ │ │ │ ├── executor │ │ │ │ │ │ ├── GlideExecutor.java │ │ │ │ │ │ └── RuntimeCompat.java │ │ │ │ │ └── prefill │ │ │ │ │ │ ├── BitmapPreFillRunner.java │ │ │ │ │ │ ├── BitmapPreFiller.java │ │ │ │ │ │ ├── PreFillQueue.java │ │ │ │ │ │ └── PreFillType.java │ │ │ │ ├── model │ │ │ │ │ ├── AssetUriLoader.java │ │ │ │ │ ├── ByteArrayLoader.java │ │ │ │ │ ├── ByteBufferEncoder.java │ │ │ │ │ ├── ByteBufferFileLoader.java │ │ │ │ │ ├── DataUrlLoader.java │ │ │ │ │ ├── DirectResourceLoader.java │ │ │ │ │ ├── FileLoader.java │ │ │ │ │ ├── GlideUrl.java │ │ │ │ │ ├── Headers.java │ │ │ │ │ ├── LazyHeaderFactory.java │ │ │ │ │ ├── LazyHeaders.java │ │ │ │ │ ├── MediaStoreFileLoader.java │ │ │ │ │ ├── Model.java │ │ │ │ │ ├── ModelCache.java │ │ │ │ │ ├── ModelLoader.java │ │ │ │ │ ├── ModelLoaderFactory.java │ │ │ │ │ ├── ModelLoaderRegistry.java │ │ │ │ │ ├── MultiModelLoader.java │ │ │ │ │ ├── MultiModelLoaderFactory.java │ │ │ │ │ ├── ResourceLoader.java │ │ │ │ │ ├── ResourceUriLoader.java │ │ │ │ │ ├── StreamEncoder.java │ │ │ │ │ ├── StringLoader.java │ │ │ │ │ ├── UnitModelLoader.java │ │ │ │ │ ├── UriLoader.java │ │ │ │ │ ├── UrlUriLoader.java │ │ │ │ │ └── stream │ │ │ │ │ │ ├── BaseGlideUrlLoader.java │ │ │ │ │ │ ├── HttpGlideUrlLoader.java │ │ │ │ │ │ ├── HttpUriLoader.java │ │ │ │ │ │ ├── MediaStoreImageThumbLoader.java │ │ │ │ │ │ ├── MediaStoreVideoThumbLoader.java │ │ │ │ │ │ ├── QMediaStoreUriLoader.java │ │ │ │ │ │ └── UrlLoader.java │ │ │ │ └── resource │ │ │ │ │ ├── DefaultOnHeaderDecodedListener.java │ │ │ │ │ ├── SimpleResource.java │ │ │ │ │ ├── UnitTransformation.java │ │ │ │ │ ├── bitmap │ │ │ │ │ ├── BitmapDrawableDecoder.java │ │ │ │ │ ├── BitmapDrawableEncoder.java │ │ │ │ │ ├── BitmapDrawableResource.java │ │ │ │ │ ├── BitmapDrawableTransformation.java │ │ │ │ │ ├── BitmapEncoder.java │ │ │ │ │ ├── BitmapImageDecoderResourceDecoder.java │ │ │ │ │ ├── BitmapResource.java │ │ │ │ │ ├── BitmapTransformation.java │ │ │ │ │ ├── BitmapTransitionOptions.java │ │ │ │ │ ├── ByteBufferBitmapDecoder.java │ │ │ │ │ ├── ByteBufferBitmapImageDecoderResourceDecoder.java │ │ │ │ │ ├── CenterCrop.java │ │ │ │ │ ├── CenterInside.java │ │ │ │ │ ├── CircleCrop.java │ │ │ │ │ ├── DefaultImageHeaderParser.java │ │ │ │ │ ├── DownsampleStrategy.java │ │ │ │ │ ├── Downsampler.java │ │ │ │ │ ├── DrawableToBitmapConverter.java │ │ │ │ │ ├── DrawableTransformation.java │ │ │ │ │ ├── ExifInterfaceImageHeaderParser.java │ │ │ │ │ ├── FitCenter.java │ │ │ │ │ ├── GlideBitmapFactory.java │ │ │ │ │ ├── GranularRoundedCorners.java │ │ │ │ │ ├── HardwareConfigState.java │ │ │ │ │ ├── ImageReader.java │ │ │ │ │ ├── InputStreamBitmapImageDecoderResourceDecoder.java │ │ │ │ │ ├── LazyBitmapDrawableResource.java │ │ │ │ │ ├── ParcelFileDescriptorBitmapDecoder.java │ │ │ │ │ ├── RecyclableBufferedInputStream.java │ │ │ │ │ ├── ResourceBitmapDecoder.java │ │ │ │ │ ├── Rotate.java │ │ │ │ │ ├── RoundedCorners.java │ │ │ │ │ ├── StreamBitmapDecoder.java │ │ │ │ │ ├── TransformationUtils.java │ │ │ │ │ ├── UnitBitmapDecoder.java │ │ │ │ │ ├── VideoBitmapDecoder.java │ │ │ │ │ └── VideoDecoder.java │ │ │ │ │ ├── bytes │ │ │ │ │ ├── ByteBufferRewinder.java │ │ │ │ │ └── BytesResource.java │ │ │ │ │ ├── drawable │ │ │ │ │ ├── AnimatedImageDecoder.java │ │ │ │ │ ├── AnimatedWebpDecoder.java │ │ │ │ │ ├── DrawableDecoderCompat.java │ │ │ │ │ ├── DrawableResource.java │ │ │ │ │ ├── DrawableTransitionOptions.java │ │ │ │ │ ├── NonOwnedDrawableResource.java │ │ │ │ │ ├── ResourceDrawableDecoder.java │ │ │ │ │ └── UnitDrawableDecoder.java │ │ │ │ │ ├── file │ │ │ │ │ ├── FileDecoder.java │ │ │ │ │ └── FileResource.java │ │ │ │ │ ├── gif │ │ │ │ │ ├── ByteBufferGifDecoder.java │ │ │ │ │ ├── GifBitmapProvider.java │ │ │ │ │ ├── GifDrawable.java │ │ │ │ │ ├── GifDrawableEncoder.java │ │ │ │ │ ├── GifDrawableResource.java │ │ │ │ │ ├── GifDrawableTransformation.java │ │ │ │ │ ├── GifFrameLoader.java │ │ │ │ │ ├── GifFrameResourceDecoder.java │ │ │ │ │ ├── GifOptions.java │ │ │ │ │ └── StreamGifDecoder.java │ │ │ │ │ └── transcode │ │ │ │ │ ├── BitmapBytesTranscoder.java │ │ │ │ │ ├── BitmapDrawableTranscoder.java │ │ │ │ │ ├── DrawableBytesTranscoder.java │ │ │ │ │ ├── GifDrawableBytesTranscoder.java │ │ │ │ │ ├── ResourceTranscoder.java │ │ │ │ │ ├── TranscoderRegistry.java │ │ │ │ │ └── UnitTranscoder.java │ │ │ │ ├── manager │ │ │ │ ├── ApplicationLifecycle.java │ │ │ │ ├── ConnectivityMonitor.java │ │ │ │ ├── ConnectivityMonitorFactory.java │ │ │ │ ├── DefaultConnectivityMonitor.java │ │ │ │ ├── DefaultConnectivityMonitorFactory.java │ │ │ │ ├── DoNothingFirstFrameWaiter.java │ │ │ │ ├── EmptyRequestManagerTreeNode.java │ │ │ │ ├── FirstFrameWaiter.java │ │ │ │ ├── FrameWaiter.java │ │ │ │ ├── Lifecycle.java │ │ │ │ ├── LifecycleLifecycle.java │ │ │ │ ├── LifecycleListener.java │ │ │ │ ├── LifecycleRequestManagerRetriever.java │ │ │ │ ├── NullConnectivityMonitor.java │ │ │ │ ├── RequestManagerFragment.java │ │ │ │ ├── RequestManagerRetriever.java │ │ │ │ ├── RequestManagerTreeNode.java │ │ │ │ ├── RequestTracker.java │ │ │ │ ├── SingletonConnectivityReceiver.java │ │ │ │ ├── SupportRequestManagerFragment.java │ │ │ │ └── TargetTracker.java │ │ │ │ ├── module │ │ │ │ ├── AppGlideModule.java │ │ │ │ ├── AppliesOptions.java │ │ │ │ ├── GlideModule.java │ │ │ │ ├── LibraryGlideModule.java │ │ │ │ ├── ManifestParser.java │ │ │ │ └── RegistersComponents.java │ │ │ │ ├── provider │ │ │ │ ├── EncoderRegistry.java │ │ │ │ ├── ImageHeaderParserRegistry.java │ │ │ │ ├── LoadPathCache.java │ │ │ │ ├── ModelToResourceClassCache.java │ │ │ │ ├── ResourceDecoderRegistry.java │ │ │ │ └── ResourceEncoderRegistry.java │ │ │ │ ├── request │ │ │ │ ├── BaseRequestOptions.java │ │ │ │ ├── ErrorRequestCoordinator.java │ │ │ │ ├── ExperimentalRequestListener.java │ │ │ │ ├── FutureTarget.java │ │ │ │ ├── Request.java │ │ │ │ ├── RequestCoordinator.java │ │ │ │ ├── RequestFutureTarget.java │ │ │ │ ├── RequestListener.java │ │ │ │ ├── RequestOptions.java │ │ │ │ ├── ResourceCallback.java │ │ │ │ ├── SingleRequest.java │ │ │ │ ├── ThumbnailRequestCoordinator.java │ │ │ │ ├── target │ │ │ │ │ ├── AppWidgetTarget.java │ │ │ │ │ ├── BaseTarget.java │ │ │ │ │ ├── BitmapImageViewTarget.java │ │ │ │ │ ├── BitmapThumbnailImageViewTarget.java │ │ │ │ │ ├── CustomTarget.java │ │ │ │ │ ├── CustomViewTarget.java │ │ │ │ │ ├── DrawableImageViewTarget.java │ │ │ │ │ ├── DrawableThumbnailImageViewTarget.java │ │ │ │ │ ├── FixedSizeDrawable.java │ │ │ │ │ ├── ImageViewTarget.java │ │ │ │ │ ├── ImageViewTargetFactory.java │ │ │ │ │ ├── NotificationTarget.java │ │ │ │ │ ├── PreloadTarget.java │ │ │ │ │ ├── SimpleTarget.java │ │ │ │ │ ├── SizeReadyCallback.java │ │ │ │ │ ├── Target.java │ │ │ │ │ ├── ThumbnailImageViewTarget.java │ │ │ │ │ └── ViewTarget.java │ │ │ │ └── transition │ │ │ │ │ ├── BitmapContainerTransitionFactory.java │ │ │ │ │ ├── BitmapTransitionFactory.java │ │ │ │ │ ├── DrawableCrossFadeFactory.java │ │ │ │ │ ├── DrawableCrossFadeTransition.java │ │ │ │ │ ├── NoTransition.java │ │ │ │ │ ├── Transition.java │ │ │ │ │ ├── TransitionFactory.java │ │ │ │ │ ├── ViewAnimationFactory.java │ │ │ │ │ ├── ViewPropertyAnimationFactory.java │ │ │ │ │ ├── ViewPropertyTransition.java │ │ │ │ │ └── ViewTransition.java │ │ │ │ ├── signature │ │ │ │ ├── AndroidResourceSignature.java │ │ │ │ ├── ApplicationVersionSignature.java │ │ │ │ ├── EmptySignature.java │ │ │ │ ├── MediaStoreSignature.java │ │ │ │ └── ObjectKey.java │ │ │ │ └── util │ │ │ │ ├── ByteBufferUtil.java │ │ │ │ ├── CachedHashCodeArrayMap.java │ │ │ │ ├── ContentLengthInputStream.java │ │ │ │ ├── ExceptionCatchingInputStream.java │ │ │ │ ├── ExceptionPassthroughInputStream.java │ │ │ │ ├── Executors.java │ │ │ │ ├── FixedPreloadSizeProvider.java │ │ │ │ ├── GlideSuppliers.java │ │ │ │ ├── LogTime.java │ │ │ │ ├── LruCache.java │ │ │ │ ├── MarkEnforcingInputStream.java │ │ │ │ ├── MultiClassKey.java │ │ │ │ ├── Preconditions.java │ │ │ │ ├── Synthetic.java │ │ │ │ ├── Util.java │ │ │ │ ├── ViewPreloadSizeProvider.java │ │ │ │ └── pool │ │ │ │ ├── FactoryPools.java │ │ │ │ ├── GlideTrace.java │ │ │ │ └── StateVerifier.java │ │ └── res │ │ │ └── values │ │ │ └── ids.xml │ └── test │ │ └── java │ │ └── com │ │ └── bumptech │ │ └── glide │ │ └── request │ │ └── target │ │ └── CustomViewTargetTest.java └── test │ ├── build.gradle │ └── src │ └── test │ ├── java │ ├── com │ │ └── bumptech │ │ │ └── glide │ │ │ ├── GlideContextTest.java │ │ │ ├── GlideTest.java │ │ │ ├── InitializeGlideTest.java │ │ │ ├── ListPreloaderTest.java │ │ │ ├── RegistryFactoryTest.java │ │ │ ├── RegistryTest.java │ │ │ ├── RequestBuilderTest.java │ │ │ ├── RequestManagerTest.java │ │ │ ├── load │ │ │ ├── ImageHeaderParserUtilsTest.java │ │ │ ├── MultiTransformationTest.java │ │ │ ├── OptionsTest.java │ │ │ ├── data │ │ │ │ ├── BufferedOutputStreamFuzzTest.java │ │ │ │ ├── BufferedOutputStreamTest.java │ │ │ │ ├── ExifOrientationStreamTest.java │ │ │ │ ├── FileDescriptorAssetPathFetcherTest.java │ │ │ │ ├── HttpUrlFetcherServerTest.java │ │ │ │ ├── HttpUrlFetcherTest.java │ │ │ │ ├── LocalUriFetcherTest.java │ │ │ │ ├── StreamAssetPathFetcherTest.java │ │ │ │ ├── mediastore │ │ │ │ │ ├── MediaStoreUtilTest.java │ │ │ │ │ ├── ThumbFetcherTest.java │ │ │ │ │ └── ThumbnailStreamOpenerTest.java │ │ │ │ └── resource │ │ │ │ │ ├── FileDescriptorLocalUriFetcherTest.java │ │ │ │ │ └── StreamLocalUriFetcherTest.java │ │ │ ├── engine │ │ │ │ ├── ActiveResourcesTest.java │ │ │ │ ├── DataCacheKeyTest.java │ │ │ │ ├── EngineJobTest.java │ │ │ │ ├── EngineKeyTest.java │ │ │ │ ├── EngineResourceTest.java │ │ │ │ ├── EngineTest.java │ │ │ │ ├── ResourceCacheKeyTest.java │ │ │ │ ├── ResourceRecyclerTest.java │ │ │ │ ├── bitmap_recycle │ │ │ │ │ ├── AttributeStrategyKeyTest.java │ │ │ │ │ ├── AttributeStrategyTest.java │ │ │ │ │ ├── GroupedLinkedMapTest.java │ │ │ │ │ ├── LruArrayPoolTest.java │ │ │ │ │ ├── LruBitmapPoolTest.java │ │ │ │ │ ├── SizeConfigStrategyTest.java │ │ │ │ │ └── SizeStrategyKeyTest.java │ │ │ │ ├── cache │ │ │ │ │ ├── DiskLruCacheWrapperTest.java │ │ │ │ │ ├── LruCacheTest.java │ │ │ │ │ ├── LruResourceCacheTest.java │ │ │ │ │ ├── MemorySizeCalculatorTest.java │ │ │ │ │ └── SafeKeyGeneratorTest.java │ │ │ │ ├── executor │ │ │ │ │ └── GlideExecutorTest.java │ │ │ │ └── prefill │ │ │ │ │ ├── BitmapPreFillRunnerTest.java │ │ │ │ │ ├── BitmapPreFillerTest.java │ │ │ │ │ └── PreFillTypeTest.java │ │ │ ├── model │ │ │ │ ├── AssetUriLoaderTest.java │ │ │ │ ├── ByteArrayLoaderTest.java │ │ │ │ ├── DataUrlLoaderTest.java │ │ │ │ ├── GlideUrlTest.java │ │ │ │ ├── LazyHeadersTest.java │ │ │ │ ├── ModelCacheTest.java │ │ │ │ ├── ModelLoaderRegistryTest.java │ │ │ │ ├── MultiModelLoaderFactoryTest.java │ │ │ │ ├── ResourceLoaderTest.java │ │ │ │ ├── StreamEncoderTest.java │ │ │ │ ├── StringLoaderTest.java │ │ │ │ ├── UriLoaderTest.java │ │ │ │ ├── UrlUriLoaderTest.java │ │ │ │ └── stream │ │ │ │ │ ├── BaseGlideUrlLoaderTest.java │ │ │ │ │ └── HttpGlideUrlLoaderTest.java │ │ │ └── resource │ │ │ │ ├── SimpleResourceTest.java │ │ │ │ ├── UnitTransformationTest.java │ │ │ │ ├── bitmap │ │ │ │ ├── BitmapDrawableResourceTest.java │ │ │ │ ├── BitmapDrawableTransformationTest.java │ │ │ │ ├── BitmapEncoderTest.java │ │ │ │ ├── BitmapResourceTest.java │ │ │ │ ├── BitmapTransformationTest.java │ │ │ │ ├── CenterCropTest.java │ │ │ │ ├── CenterInsideTest.java │ │ │ │ ├── CircleCropTest.java │ │ │ │ ├── DefaultImageHeaderParserTest.java │ │ │ │ ├── DownsampleStrategyTest.java │ │ │ │ ├── DrawableTransformationTest.java │ │ │ │ ├── FitCenterTest.java │ │ │ │ ├── HardwareConfigStateTest.java │ │ │ │ ├── LazyBitmapDrawableResourceTest.java │ │ │ │ ├── RecyclableBufferedInputStreamTest.java │ │ │ │ ├── TransformationUtilsTest.java │ │ │ │ └── VideoDecoderTest.java │ │ │ │ ├── bytes │ │ │ │ └── BytesResourceTest.java │ │ │ │ ├── drawable │ │ │ │ └── DrawableResourceTest.java │ │ │ │ ├── file │ │ │ │ ├── FileDecoderTest.java │ │ │ │ └── FileResourceTest.java │ │ │ │ ├── gif │ │ │ │ ├── ByteBufferGifDecoderTest.java │ │ │ │ ├── GifDrawableResourceTest.java │ │ │ │ ├── GifDrawableTest.java │ │ │ │ ├── GifDrawableTransformationTest.java │ │ │ │ ├── GifFrameLoaderTest.java │ │ │ │ ├── GifFrameResourceDecoderTest.java │ │ │ │ └── StreamGifDecoderTest.java │ │ │ │ └── transcode │ │ │ │ ├── BitmapBytesTranscoderTest.java │ │ │ │ ├── BitmapDrawableTranscoderTest.java │ │ │ │ ├── GifDrawableBytesTranscoderTest.java │ │ │ │ ├── TranscoderRegistryTest.java │ │ │ │ └── UnitTranscoderTest.java │ │ │ ├── manager │ │ │ ├── DefaultConnectivityMonitorFactoryTest.java │ │ │ ├── DefaultConnectivityMonitorTest.java │ │ │ ├── Issue117Activity.java │ │ │ ├── RequestManagerRetrieverTest.java │ │ │ └── RequestTrackerTest.java │ │ │ ├── module │ │ │ └── ManifestParserTest.java │ │ │ ├── request │ │ │ ├── ErrorRequestCoordinatorTest.java │ │ │ ├── RequestFutureTargetTest.java │ │ │ ├── RequestOptionsTest.java │ │ │ ├── SingleRequestTest.java │ │ │ ├── ThumbnailRequestCoordinatorTest.java │ │ │ ├── target │ │ │ │ ├── AppWidgetTargetTest.java │ │ │ │ ├── BitmapImageViewTargetTest.java │ │ │ │ ├── ImageViewTargetFactoryTest.java │ │ │ │ ├── ImageViewTargetTest.java │ │ │ │ ├── NotificationTargetTest.java │ │ │ │ ├── PreloadTargetTest.java │ │ │ │ ├── SimpleTargetTest.java │ │ │ │ └── ViewTargetTest.java │ │ │ └── transition │ │ │ │ ├── DrawableCrossFadeFactoryTest.java │ │ │ │ ├── DrawableCrossFadeViewAnimationTest.java │ │ │ │ ├── ViewAnimationTest.java │ │ │ │ ├── ViewPropertyAnimationTest.java │ │ │ │ ├── ViewPropertyViewTransitionAnimationFactoryTest.java │ │ │ │ └── ViewTransitionAnimationFactoryTest.java │ │ │ ├── resize │ │ │ └── load │ │ │ │ └── ExifTest.java │ │ │ ├── signature │ │ │ ├── AndroidResourceSignatureTest.java │ │ │ ├── ApplicationVersionSignatureTest.java │ │ │ ├── EmptySignatureTest.java │ │ │ ├── MediaStoreSignatureTest.java │ │ │ └── ObjectKeyTest.java │ │ │ ├── tests │ │ │ ├── BackgroundUtil.java │ │ │ ├── ContentResolverShadow.java │ │ │ ├── GlideShadowLog.java │ │ │ ├── KeyTester.java │ │ │ ├── TearDownGlide.java │ │ │ └── Util.java │ │ │ └── util │ │ │ ├── ByteBufferUtilTest.java │ │ │ ├── ContentLengthInputStreamTest.java │ │ │ ├── ExceptionPassthroughInputStreamTest.java │ │ │ ├── FixedPreloadSizeProviderTest.java │ │ │ ├── MarkEnforcingInputStreamTest.java │ │ │ ├── UtilTest.java │ │ │ └── ViewPreloadSizeProviderTest.java │ └── opengles │ │ └── GL.java │ └── resources │ ├── animated_avif.avif │ ├── animated_webp.webp │ ├── issue387_rotated_jpeg.jpg │ ├── org.robolectric.Config.properties │ ├── short_exif_sample.jpg │ ├── small_gainmap_image.jpg │ └── test.gif ├── mocks ├── build.gradle ├── gradle.properties ├── lint.xml └── src │ └── main │ └── java │ └── com │ └── bumptech │ └── glide │ ├── load │ └── engine │ │ └── executor │ │ └── MockGlideExecutor.java │ └── mocks │ ├── AnswerSelf.java │ └── MockGlideBuilders.java ├── renovate.json ├── samples ├── contacturi │ ├── build.gradle │ ├── lint.xml │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── com │ │ │ └── bumptech │ │ │ └── glide │ │ │ └── samples │ │ │ └── contacturi │ │ │ ├── ContactUriModule.java │ │ │ └── MainActivity.java │ │ └── res │ │ ├── layout │ │ └── activity_main.xml │ │ └── values │ │ ├── dimens.xml │ │ └── strings.xml ├── flickr │ ├── build.gradle │ ├── lint.xml │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── com │ │ │ └── bumptech │ │ │ └── glide │ │ │ └── samples │ │ │ └── flickr │ │ │ ├── FlickrGlideExtension.java │ │ │ ├── FlickrGlideModule.java │ │ │ ├── FlickrModelLoader.java │ │ │ ├── FlickrPhotoGrid.java │ │ │ ├── FlickrPhotoList.java │ │ │ ├── FlickrSearchActivity.java │ │ │ ├── FullscreenActivity.java │ │ │ ├── PhotoViewer.java │ │ │ ├── SquareImageView.java │ │ │ └── api │ │ │ ├── Api.java │ │ │ ├── FlickrQueryResponseListener.java │ │ │ ├── Photo.java │ │ │ ├── PhotoJsonStringParser.java │ │ │ ├── Query.java │ │ │ ├── RecentQuery.java │ │ │ └── SearchQuery.java │ │ └── res │ │ ├── layout │ │ ├── flickr_photo_grid.xml │ │ ├── flickr_photo_grid_item.xml │ │ ├── flickr_photo_list.xml │ │ ├── flickr_photo_list_item.xml │ │ ├── flickr_search_activity.xml │ │ └── fullscreen_activity.xml │ │ ├── menu │ │ └── search_activity.xml │ │ ├── values │ │ ├── colors.xml │ │ ├── dimens.xml │ │ └── strings.xml │ │ └── xml │ │ └── network_security_config.xml ├── gallery │ ├── build.gradle │ ├── lint.xml │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── com │ │ │ └── bumptech │ │ │ └── glide │ │ │ └── samples │ │ │ └── gallery │ │ │ ├── GalleryModule.kt │ │ │ ├── GalleryViewModel.kt │ │ │ ├── HorizontalGalleryFragment.kt │ │ │ ├── MainActivity.kt │ │ │ └── MediaStoreDataSource.kt │ │ └── res │ │ ├── layout │ │ ├── main_activity.xml │ │ ├── recycler_item.xml │ │ └── recycler_view.xml │ │ └── values │ │ ├── ids.xml │ │ └── strings.xml ├── giphy │ ├── build.gradle │ ├── lint.xml │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── com │ │ │ └── bumptech │ │ │ └── glide │ │ │ └── samples │ │ │ └── giphy │ │ │ ├── Api.java │ │ │ ├── FullscreenActivity.java │ │ │ ├── GiphyGlideModule.java │ │ │ ├── GiphyModelLoader.java │ │ │ └── MainActivity.java │ │ └── res │ │ ├── layout │ │ ├── activity_main.xml │ │ ├── fullscreen_activity.xml │ │ └── gif_list_item.xml │ │ ├── raw │ │ └── large_giphy_logo.gif │ │ └── values │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── styles.xml ├── imgur │ ├── .gitignore │ ├── build.gradle │ ├── gradle.properties │ ├── lint.xml │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── com │ │ │ └── bumptech │ │ │ └── glide │ │ │ └── samples │ │ │ └── imgur │ │ │ ├── ApplicationModule.java │ │ │ ├── ImgurApplication.java │ │ │ ├── ImgurApplicationComponent.java │ │ │ ├── ImgurGlideModule.java │ │ │ ├── MainActivity.java │ │ │ ├── MainActivityModule.java │ │ │ └── api │ │ │ ├── ApiModule.java │ │ │ ├── Gallery.java │ │ │ ├── Image.java │ │ │ ├── ImgurObservables.java │ │ │ └── ImgurService.java │ │ └── res │ │ ├── layout │ │ ├── activity_main.xml │ │ └── image_card.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml │ │ └── xml │ │ └── network_security_config.xml └── svg │ ├── build.gradle │ ├── lint.xml │ └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── bumptech │ │ └── glide │ │ └── samples │ │ └── svg │ │ ├── MainActivity.java │ │ ├── SvgDecoder.java │ │ ├── SvgDrawableTranscoder.java │ │ ├── SvgModule.java │ │ └── SvgSoftwareLayerSetter.java │ └── res │ ├── drawable │ ├── dot_dot_dot.xml │ ├── image_error.xml │ └── image_loading.xml │ ├── layout │ └── activity_main.xml │ ├── mipmap-hdpi │ └── ic_launcher.png │ ├── mipmap-mdpi │ └── ic_launcher.png │ ├── mipmap-xhdpi │ └── ic_launcher.png │ ├── mipmap-xxhdpi │ └── ic_launcher.png │ ├── mipmap-xxxhdpi │ └── ic_launcher.png │ ├── raw │ └── android_toy_h.svg │ ├── values-w820dp │ └── dimens.xml │ └── values │ ├── dimens.xml │ └── strings.xml ├── scripts ├── android-wait-for-emulator.sh ├── ci_unit.sh ├── install_firebase.sh ├── regenerate_resources.sh ├── release_checks.sh ├── run_instrumentation_tests.sh ├── run_sample_robo_tests.sh ├── split_by_sdk.sh ├── update_javadocs.sh └── upload.gradle ├── settings.gradle ├── static ├── glide_circle_logo.png ├── glide_logo.png ├── logo-icon.svg └── logo-styles.css ├── testutil ├── build.gradle └── src │ └── main │ └── java │ └── com │ └── bumptech │ └── glide │ ├── RobolectricConstants.java │ └── testutil │ ├── BitmapSubject.java │ ├── ConcurrencyHelper.java │ ├── MockModelLoader.java │ ├── TearDownGlide.java │ ├── TestResourceUtil.java │ ├── TestUtil.java │ ├── WaitModelLoader.java │ └── WaitModelLoaderRule.java └── third_party ├── disklrucache ├── .gitignore ├── CHANGELOG.md ├── LICENSE ├── LICENSE.txt ├── README.md ├── THIRD_PARTY.md ├── build.gradle ├── checkstyle.xml ├── gradle.properties └── src │ ├── main │ └── java │ │ └── com │ │ └── bumptech │ │ └── glide │ │ └── disklrucache │ │ ├── DiskLruCache.java │ │ ├── StrictLineReader.java │ │ └── Util.java │ └── test │ └── java │ └── com │ └── bumptech │ └── glide │ └── disklrucache │ ├── DiskLruCacheTest.java │ └── StrictLineReaderTest.java ├── gif_decoder ├── LICENSE ├── THIRD_PARTY.md ├── build.gradle ├── gradle.properties ├── lint.xml └── src │ ├── main │ └── java │ │ └── com │ │ └── bumptech │ │ └── glide │ │ └── gifdecoder │ │ ├── GifDecoder.java │ │ ├── GifFrame.java │ │ ├── GifHeader.java │ │ ├── GifHeaderParser.java │ │ └── StandardGifDecoder.java │ └── test │ ├── java │ └── com │ │ └── bumptech │ │ └── glide │ │ └── gifdecoder │ │ ├── GifDecoderTest.java │ │ ├── GifHeaderParserTest.java │ │ └── test │ │ ├── GifBytesTestUtil.java │ │ └── GifBytesTestUtilTest.java │ └── resources │ ├── gif_netscape_iteration_0.gif │ ├── gif_netscape_iteration_1.gif │ ├── gif_netscape_iteration_255.gif │ ├── gif_netscape_iteration_256.gif │ ├── gif_netscape_iteration_65535.gif │ ├── gif_without_graphical_control_extension.gif │ ├── gif_without_netscape_iteration.gif │ ├── partial_gif_decode.gif │ ├── transparent_disposal_background.gif │ ├── transparent_disposal_none.gif │ └── white_black_row.gif ├── gif_encoder ├── LICENSE ├── THIRD_PARTY.md ├── lint.xml └── src │ └── main │ └── java │ └── com │ └── bumptech │ └── glide │ └── gifencoder │ ├── AnimatedGifEncoder.java │ ├── LZWEncoder.java │ └── NeuQuant.java └── gradle.properties /.github/workflows/gradle-wrapper-validation.yml: -------------------------------------------------------------------------------- 1 | name: "Validate Gradle Wrapper" 2 | on: [push, pull_request] 3 | 4 | jobs: 5 | validation: 6 | name: "Validation" 7 | runs-on: ubuntu-latest 8 | steps: 9 | - uses: actions/checkout@v3 10 | - uses: gradle/wrapper-validation-action@v1 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Android 2 | local.properties 3 | *.keystore 4 | *.DS_Store 5 | 6 | # Gradle 7 | .gradle 8 | build 9 | jacoco.exec 10 | 11 | # gh-pages 12 | doc/** 13 | _site/* 14 | _pages/* 15 | docs/**/* 16 | 17 | # Vim 18 | *.swp 19 | *.swo 20 | 21 | # sed 22 | *.bak 23 | 24 | # Intellij 25 | *.iml 26 | *.ipr 27 | *.iws 28 | .idea/** 29 | !.idea/codeStyleSettings.xml 30 | !.idea/inspectionProfiles 31 | !.idea/inspectionProfiles/Project_Default.xml 32 | 33 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/.gitmodules -------------------------------------------------------------------------------- /.idea/inspectionProfiles/Project_Default.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | -------------------------------------------------------------------------------- /PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | ## Description 7 | 8 | 9 | 10 | ## Motivation and Context 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /annotation/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /annotation/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'java' 2 | 3 | apply from: "${rootProject.projectDir}/scripts/upload.gradle" 4 | 5 | java { 6 | sourceCompatibility = JavaVersion.VERSION_1_7 7 | targetCompatibility = JavaVersion.VERSION_1_7 8 | } -------------------------------------------------------------------------------- /annotation/compiler/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /annotation/compiler/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=Glide Annotation processor 2 | POM_ARTIFACT_ID=compiler 3 | POM_PACKAGING=jar 4 | POM_DESCRIPTION=Glide's anntation processor. Should be included in all Applications and in all libraries that use Glide's modules for configuration. 5 | -------------------------------------------------------------------------------- /annotation/compiler/src/main/resources/META-INF/gradle/incremental.annotation.processors: -------------------------------------------------------------------------------- 1 | com.bumptech.glide.annotation.compiler.GlideAnnotationProcessor,aggregating 2 | -------------------------------------------------------------------------------- /annotation/compiler/test/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/java/com/bumptech/glide/annotation/compiler/test/CompilationProvider.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.annotation.compiler.test; 2 | 3 | import com.google.testing.compile.Compilation; 4 | 5 | /** Provides the {@link Compilation} used to compile test code. */ 6 | public interface CompilationProvider { 7 | Compilation getCompilation(); 8 | } 9 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/java/com/bumptech/glide/annotation/compiler/test/SubDirectory.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.annotation.compiler.test; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | /** 9 | * Indicates the subdirectory for a particular test that contains the test resource(s) used for the 10 | * method. 11 | * 12 | *

Used both by tests to extract the correct subdirectory and by the {@link 13 | * RegenerateResourcesRule} for the same purpose. 14 | */ 15 | @Target(ElementType.METHOD) 16 | @Retention(RetentionPolicy.RUNTIME) 17 | public @interface SubDirectory { 18 | String value(); 19 | } 20 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/java/com/bumptech/glide/annotation/compiler/test/TestDescription.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.annotation.compiler.test; 2 | 3 | import org.junit.rules.TestWatcher; 4 | import org.junit.runner.Description; 5 | 6 | /** 7 | * Exposes the {@link Description} for the current test, similar to {@link 8 | * org.junit.rules.TestName}. 9 | */ 10 | public final class TestDescription extends TestWatcher { 11 | private Description description; 12 | 13 | @Override 14 | protected void starting(Description description) { 15 | this.description = description; 16 | } 17 | 18 | public Description getDescription() { 19 | return description; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/AppGlideModuleWithExcludesTest/AppModuleWithExcludes.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import com.bumptech.glide.annotation.Excludes; 4 | import com.bumptech.glide.annotation.GlideModule; 5 | import com.bumptech.glide.module.AppGlideModule; 6 | 7 | @GlideModule 8 | @Excludes(EmptyLibraryModule.class) 9 | public final class AppModuleWithExcludes extends AppGlideModule {} -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/AppGlideModuleWithLibraryInPackageTest/AppModuleWithLibraryInPackage.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import com.bumptech.glide.annotation.Excludes; 4 | import com.bumptech.glide.annotation.GlideModule; 5 | import com.bumptech.glide.module.AppGlideModule; 6 | import com.bumptech.glide.test._package.LibraryModuleInPackage; 7 | 8 | @GlideModule 9 | @Excludes(LibraryModuleInPackage.class) 10 | public final class AppModuleWithLibraryInPackage extends AppGlideModule {} 11 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/AppGlideModuleWithLibraryInPackageTest/LibraryModuleInPackage.java: -------------------------------------------------------------------------------- 1 | // _ in the name is important otherwise everything would work 2 | package com.bumptech.glide.test._package; 3 | 4 | import com.bumptech.glide.annotation.GlideModule; 5 | import com.bumptech.glide.module.LibraryGlideModule; 6 | 7 | @GlideModule 8 | public final class LibraryModuleInPackage extends LibraryGlideModule {} 9 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/AppGlideModuleWithMultipleExcludesTest/AppModuleWithMultipleExcludes.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import com.bumptech.glide.annotation.Excludes; 4 | import com.bumptech.glide.annotation.GlideModule; 5 | import com.bumptech.glide.module.AppGlideModule; 6 | 7 | @GlideModule 8 | @Excludes({EmptyLibraryModule1.class, EmptyLibraryModule2.class}) 9 | public final class AppModuleWithMultipleExcludes extends AppGlideModule {} -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/AppGlideModuleWithMultipleExcludesTest/EmptyLibraryModule1.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import com.bumptech.glide.annotation.GlideModule; 4 | import com.bumptech.glide.module.LibraryGlideModule; 5 | 6 | @GlideModule 7 | public final class EmptyLibraryModule1 extends LibraryGlideModule {} 8 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/AppGlideModuleWithMultipleExcludesTest/EmptyLibraryModule2.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import com.bumptech.glide.annotation.GlideModule; 4 | import com.bumptech.glide.module.LibraryGlideModule; 5 | 6 | @GlideModule 7 | public final class EmptyLibraryModule2 extends LibraryGlideModule {} 8 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/EmptyAppGlideModuleTest/EmptyAppModule.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import com.bumptech.glide.annotation.GlideModule; 4 | import com.bumptech.glide.module.AppGlideModule; 5 | 6 | @GlideModule 7 | public final class EmptyAppModule extends AppGlideModule {} -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/EmptyAppGlideModuleTest/GeneratedRequestManagerFactory.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide; 2 | 3 | import android.content.Context; 4 | import androidx.annotation.NonNull; 5 | import com.bumptech.glide.manager.Lifecycle; 6 | import com.bumptech.glide.manager.RequestManagerRetriever; 7 | import com.bumptech.glide.manager.RequestManagerTreeNode; 8 | import com.bumptech.glide.test.GlideRequests; 9 | 10 | /** 11 | * Generated code, do not modify 12 | */ 13 | final class GeneratedRequestManagerFactory implements RequestManagerRetriever.RequestManagerFactory { 14 | @Override 15 | @NonNull 16 | public RequestManager build(@NonNull Glide glide, @NonNull Lifecycle lifecycle, 17 | @NonNull RequestManagerTreeNode treeNode, @NonNull Context context) { 18 | return new GlideRequests(glide, lifecycle, treeNode, context); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/EmptyLibraryGlideModuleTest/EmptyLibraryModule.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import com.bumptech.glide.annotation.GlideModule; 4 | import com.bumptech.glide.module.LibraryGlideModule; 5 | 6 | @GlideModule 7 | public final class EmptyLibraryModule extends LibraryGlideModule {} 8 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/EmptyLibraryGlideModuleTest/GlideIndexer_GlideModule_com_bumptech_glide_test_EmptyLibraryModule.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.annotation.compiler; 2 | 3 | @Index( 4 | modules = "com.bumptech.glide.test.EmptyLibraryModule" 5 | ) 6 | public class GlideIndexer_GlideModule_com_bumptech_glide_test_EmptyLibraryModule { 7 | } 8 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/MemoizeStaticMethod/Extension.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import androidx.annotation.NonNull; 4 | import com.bumptech.glide.annotation.GlideExtension; 5 | import com.bumptech.glide.annotation.GlideOption; 6 | import com.bumptech.glide.request.BaseRequestOptions; 7 | 8 | @GlideExtension 9 | public final class Extension { 10 | 11 | private Extension() { 12 | // Utility class. 13 | } 14 | 15 | @NonNull 16 | @GlideOption(memoizeStaticMethod = true) 17 | public static BaseRequestOptions test(BaseRequestOptions requestOptions) { 18 | return requestOptions.centerCrop(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/OverrideExtend/Extension.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import androidx.annotation.NonNull; 4 | import com.bumptech.glide.annotation.GlideExtension; 5 | import com.bumptech.glide.annotation.GlideOption; 6 | import com.bumptech.glide.request.BaseRequestOptions; 7 | 8 | @GlideExtension 9 | public final class Extension { 10 | 11 | private Extension() { 12 | // Utility class. 13 | } 14 | 15 | @NonNull 16 | @GlideOption(override = GlideOption.OVERRIDE_EXTEND) 17 | public static BaseRequestOptions centerCrop(BaseRequestOptions requestOptions) { 18 | return requestOptions.centerCrop(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/OverrideExtendMultipleArguments/Extension.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import androidx.annotation.NonNull; 4 | import com.bumptech.glide.annotation.GlideExtension; 5 | import com.bumptech.glide.annotation.GlideOption; 6 | import com.bumptech.glide.request.BaseRequestOptions; 7 | 8 | @GlideExtension 9 | public final class Extension { 10 | 11 | private Extension() { 12 | // Utility class. 13 | } 14 | 15 | @NonNull 16 | @GlideOption(override = GlideOption.OVERRIDE_EXTEND) 17 | public static BaseRequestOptions override(BaseRequestOptions requestOptions, int width, int height) { 18 | return requestOptions 19 | .override(width, height) 20 | .centerCrop(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/OverrideReplace/Extension.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import androidx.annotation.NonNull; 4 | import com.bumptech.glide.annotation.GlideExtension; 5 | import com.bumptech.glide.annotation.GlideOption; 6 | import com.bumptech.glide.request.BaseRequestOptions; 7 | 8 | @GlideExtension 9 | public final class Extension { 10 | 11 | private Extension() { 12 | // Utility class. 13 | } 14 | 15 | @NonNull 16 | @GlideOption(override = GlideOption.OVERRIDE_REPLACE) 17 | public static BaseRequestOptions centerCrop(BaseRequestOptions requestOptions) { 18 | return requestOptions.centerCrop(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/SkipStaticMethod/Extension.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import androidx.annotation.NonNull; 4 | import com.bumptech.glide.annotation.GlideExtension; 5 | import com.bumptech.glide.annotation.GlideOption; 6 | import com.bumptech.glide.request.BaseRequestOptions; 7 | 8 | @GlideExtension 9 | public final class Extension { 10 | 11 | private Extension() { 12 | // Utility class. 13 | } 14 | 15 | @NonNull 16 | @GlideOption(skipStaticMethod = true) 17 | public static BaseRequestOptions test(BaseRequestOptions requestOptions) { 18 | return requestOptions.centerCrop(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/StaticMethodName/Extension.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import androidx.annotation.NonNull; 4 | import com.bumptech.glide.annotation.GlideExtension; 5 | import com.bumptech.glide.annotation.GlideOption; 6 | import com.bumptech.glide.request.BaseRequestOptions; 7 | 8 | @GlideExtension 9 | public final class Extension { 10 | 11 | private Extension() { 12 | // Utility class. 13 | } 14 | 15 | @NonNull 16 | @GlideOption(staticMethodName = "testSomething") 17 | public static BaseRequestOptions test(BaseRequestOptions requestOptions) { 18 | return requestOptions.centerCrop(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/GlideExtensionWithOptionTest/ExtensionWithOption.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import androidx.annotation.NonNull; 4 | import com.bumptech.glide.annotation.GlideExtension; 5 | import com.bumptech.glide.annotation.GlideOption; 6 | import com.bumptech.glide.request.BaseRequestOptions; 7 | 8 | @GlideExtension 9 | public final class ExtensionWithOption { 10 | 11 | private ExtensionWithOption() { 12 | // Utility class. 13 | } 14 | 15 | @NonNull 16 | @GlideOption 17 | public static BaseRequestOptions squareThumb(BaseRequestOptions requestOptions) { 18 | return requestOptions.centerCrop(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/GlideExtensionWithTypeTest/ExtensionWithType.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import androidx.annotation.NonNull; 4 | import com.bumptech.glide.RequestBuilder; 5 | import com.bumptech.glide.annotation.GlideExtension; 6 | import com.bumptech.glide.annotation.GlideType; 7 | 8 | @GlideExtension 9 | public final class ExtensionWithType { 10 | 11 | private ExtensionWithType() { 12 | // Utility class. 13 | } 14 | 15 | @NonNull 16 | @GlideType(Number.class) 17 | public static RequestBuilder asNumber(RequestBuilder builder) { 18 | return builder; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/MultipleAppGlideModuleTest/EmptyAppModule1.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import com.bumptech.glide.annotation.GlideModule; 4 | import com.bumptech.glide.module.AppGlideModule; 5 | 6 | @GlideModule 7 | public final class EmptyAppModule1 extends AppGlideModule {} -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/MultipleAppGlideModuleTest/EmptyAppModule2.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import com.bumptech.glide.annotation.GlideModule; 4 | import com.bumptech.glide.module.AppGlideModule; 5 | 6 | @GlideModule 7 | public final class EmptyAppModule2 extends AppGlideModule {} -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/MultipleEmptyLibraryGlideModuleTest/EmptyLibraryModule1.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import com.bumptech.glide.annotation.GlideModule; 4 | import com.bumptech.glide.module.LibraryGlideModule; 5 | 6 | @GlideModule 7 | public final class EmptyLibraryModule1 extends LibraryGlideModule {} 8 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/MultipleEmptyLibraryGlideModuleTest/EmptyLibraryModule2.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import com.bumptech.glide.annotation.GlideModule; 4 | import com.bumptech.glide.module.LibraryGlideModule; 5 | 6 | @GlideModule 7 | public final class EmptyLibraryModule2 extends LibraryGlideModule {} 8 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/MultipleEmptyLibraryGlideModuleTest/GlideIndexer_GlideModule_com_bumptech_glide_test_EmptyLibraryModule1_com_bumptech_glide_test_EmptyLibraryModule2.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.annotation.compiler; 2 | 3 | @Index( 4 | modules = { 5 | "com.bumptech.glide.test.EmptyLibraryModule1", 6 | "com.bumptech.glide.test.EmptyLibraryModule2" 7 | } 8 | ) 9 | public class GlideIndexer_GlideModule_com_bumptech_glide_test_EmptyLibraryModule1_com_bumptech_glide_test_EmptyLibraryModule2 { 10 | } 11 | -------------------------------------------------------------------------------- /annotation/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=Glide Annotations 2 | POM_ARTIFACT_ID=annotations 3 | POM_PACKAGING=jar 4 | POM_DESCRIPTION=A set of annotations for configuring Glide. 5 | -------------------------------------------------------------------------------- /annotation/ksp/build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id 'org.jetbrains.kotlin.jvm' 3 | id 'com.google.devtools.ksp' 4 | } 5 | 6 | dependencies { 7 | implementation libs.kotlinpoet 8 | implementation project(":annotation") 9 | implementation libs.ksp 10 | implementation libs.autoservice.annotations 11 | ksp libs.ksp.autoservice 12 | } 13 | 14 | apply from: "${rootProject.projectDir}/scripts/upload.gradle" 15 | 16 | kotlin { 17 | jvmToolchain { 18 | languageVersion.set(JavaLanguageVersion.of(11)) 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /annotation/ksp/gradle.properties: -------------------------------------------------------------------------------- 1 | kotlin.code.style=official 2 | 3 | POM_NAME=Glide KSP Annotation Processor 4 | POM_ARTIFACT_ID=ksp 5 | POM_PACKAGING=jar 6 | POM_DESCRIPTION=Glide's KSP based annotation processor. Should be included in all Kotlin applications and libraries that use Glide's modules for configuration and do not require the more advanced features of the Java based compiler. 7 | -------------------------------------------------------------------------------- /annotation/ksp/src/main/kotlin/com/bumptech/glide/annotation/ksp/GlideSymbolProcessorProvider.kt: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.annotation.ksp 2 | 3 | import com.google.auto.service.AutoService 4 | import com.google.devtools.ksp.processing.SymbolProcessor 5 | import com.google.devtools.ksp.processing.SymbolProcessorEnvironment 6 | import com.google.devtools.ksp.processing.SymbolProcessorProvider 7 | 8 | @AutoService(SymbolProcessorProvider::class) 9 | class GlideSymbolProcessorProvider : SymbolProcessorProvider { 10 | override fun create(environment: SymbolProcessorEnvironment): SymbolProcessor { 11 | return GlideSymbolProcessor(environment) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /annotation/src/main/java/com/bumptech/glide/annotation/Excludes.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.annotation; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | /** 9 | * Specifies a set of GlideModule and/or LibraryGlideModule classes that should be excluded from an 10 | * application. 11 | * 12 | *

Used only on AppGlideModules. Adding this annotation to other classes will have no affect. 13 | * 14 | *

Cannot be used to exclude AppGlideModules (there must be at most one per Application anyway). 15 | */ 16 | @Target(ElementType.TYPE) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | public @interface Excludes { 19 | Class[] value(); 20 | } 21 | -------------------------------------------------------------------------------- /annotation/src/main/java/com/bumptech/glide/annotation/GlideExtension.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.annotation; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | /** 9 | * Indicate a class that extends Glide's public API. 10 | * 11 | * @see GlideOption 12 | */ 13 | @Target(ElementType.TYPE) 14 | @Retention(RetentionPolicy.CLASS) 15 | public @interface GlideExtension {} 16 | -------------------------------------------------------------------------------- /annotation/src/main/java/com/bumptech/glide/annotation/GlideModule.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.annotation; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | /** 9 | * Identifies AppGlideModules and LibraryGlideModules for Glide's annotation processor to merge at 10 | * compile time. 11 | * 12 | *

Replaces {@code } tags in AndroidManifest.xml. 13 | */ 14 | @Target(ElementType.TYPE) 15 | @Retention(RetentionPolicy.CLASS) 16 | public @interface GlideModule { 17 | /** 18 | * Returns the name of the class that will be used as a replacement for {@code 19 | * com.bumptech.glide.Glide} in Applications that depend on Glide's generated code. 20 | */ 21 | String glideName() default "GlideApp"; 22 | } 23 | -------------------------------------------------------------------------------- /annotation/src/main/java/com/bumptech/glide/annotation/compiler/Index.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.annotation.compiler; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | /** 9 | * Used to retrieve LibraryGlideModule and GlideExtension classes in our annotation processor from 10 | * libraries and applications. 11 | * 12 | *

Part of the internals of Glide's annotation processor and not for public use. 13 | */ 14 | @Target(ElementType.TYPE) 15 | // Needs to be parsed from class files in JAR. 16 | @Retention(RetentionPolicy.CLASS) 17 | @interface Index { 18 | String[] modules() default {}; 19 | 20 | String[] extensions() default {}; 21 | } 22 | -------------------------------------------------------------------------------- /annotation/src/main/java/com/bumptech/glide/annotation/ksp/Index.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.annotation.ksp; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | /** 9 | * Used to retrieve LibraryGlideModule and GlideExtension classes in our annotation processor from 10 | * libraries and applications. 11 | * 12 | *

Part of the internals of Glide's annotation processor and not for public use. 13 | */ 14 | @Target(ElementType.TYPE) 15 | // Needs to be parsed from class files in JAR. 16 | @Retention(RetentionPolicy.CLASS) 17 | @interface Index { 18 | String[] modules() default {}; 19 | } 20 | -------------------------------------------------------------------------------- /benchmark/gradle.properties: -------------------------------------------------------------------------------- 1 | android.enableAdditionalTestOutput=true 2 | -------------------------------------------------------------------------------- /benchmark/src/androidTest/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 11 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /benchmark/src/main/res/raw/huge_header.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/benchmark/src/main/res/raw/huge_header.jpg -------------------------------------------------------------------------------- /benchmark/src/main/res/raw/pixel3a_exif_rotated.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/benchmark/src/main/res/raw/pixel3a_exif_rotated.jpg -------------------------------------------------------------------------------- /benchmark/src/main/res/raw/pixel3a_mvimg_exif_rotated.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/benchmark/src/main/res/raw/pixel3a_mvimg_exif_rotated.jpg -------------------------------------------------------------------------------- /benchmark/src/main/res/raw/pixel3a_portrait.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/benchmark/src/main/res/raw/pixel3a_portrait.jpg -------------------------------------------------------------------------------- /benchmark/src/main/res/raw/pixel3a_portrait_mvimg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/benchmark/src/main/res/raw/pixel3a_portrait_mvimg.jpg -------------------------------------------------------------------------------- /benchmark/src/main/res/raw/small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/benchmark/src/main/res/raw/small.jpg -------------------------------------------------------------------------------- /debug.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/debug.keystore -------------------------------------------------------------------------------- /exifsamples/Landscape_0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/exifsamples/Landscape_0.jpg -------------------------------------------------------------------------------- /exifsamples/Landscape_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/exifsamples/Landscape_1.jpg -------------------------------------------------------------------------------- /exifsamples/Landscape_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/exifsamples/Landscape_2.jpg -------------------------------------------------------------------------------- /exifsamples/Landscape_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/exifsamples/Landscape_3.jpg -------------------------------------------------------------------------------- /exifsamples/Landscape_4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/exifsamples/Landscape_4.jpg -------------------------------------------------------------------------------- /exifsamples/Landscape_5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/exifsamples/Landscape_5.jpg -------------------------------------------------------------------------------- /exifsamples/Landscape_6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/exifsamples/Landscape_6.jpg -------------------------------------------------------------------------------- /exifsamples/Landscape_7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/exifsamples/Landscape_7.jpg -------------------------------------------------------------------------------- /exifsamples/Landscape_8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/exifsamples/Landscape_8.jpg -------------------------------------------------------------------------------- /exifsamples/Portrait_0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/exifsamples/Portrait_0.jpg -------------------------------------------------------------------------------- /exifsamples/Portrait_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/exifsamples/Portrait_1.jpg -------------------------------------------------------------------------------- /exifsamples/Portrait_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/exifsamples/Portrait_2.jpg -------------------------------------------------------------------------------- /exifsamples/Portrait_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/exifsamples/Portrait_3.jpg -------------------------------------------------------------------------------- /exifsamples/Portrait_4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/exifsamples/Portrait_4.jpg -------------------------------------------------------------------------------- /exifsamples/Portrait_5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/exifsamples/Portrait_5.jpg -------------------------------------------------------------------------------- /exifsamples/Portrait_6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/exifsamples/Portrait_6.jpg -------------------------------------------------------------------------------- /exifsamples/Portrait_7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/exifsamples/Portrait_7.jpg -------------------------------------------------------------------------------- /exifsamples/Portrait_8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/exifsamples/Portrait_8.jpg -------------------------------------------------------------------------------- /gcloud-bumptech.json.enc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/gcloud-bumptech.json.enc -------------------------------------------------------------------------------- /gcloud-sjudd.json.enc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/gcloud-sjudd.json.enc -------------------------------------------------------------------------------- /glide/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=Glide Full 2 | POM_ARTIFACT_ID=glide-full 3 | POM_PACKAGING=jar 4 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /instrumentation/gradle.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/gradle.properties -------------------------------------------------------------------------------- /instrumentation/src/androidTest/java/com/bumptech/glide/test/RegressionTest.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | /** 9 | * Indicates that a test is a regression test that relies on comparing a newly transformed image to 10 | * a previously generated copy of the same image to detect changes. 11 | */ 12 | @Target(ElementType.TYPE) 13 | @Retention(RetentionPolicy.RUNTIME) 14 | public @interface RegressionTest { 15 | // Intentionally empty. 16 | } 17 | -------------------------------------------------------------------------------- /instrumentation/src/androidTest/java/com/bumptech/glide/test/SplitByCpu.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | /** 9 | * Indicates that the test relies on transformations or operations that may produce different 10 | * outputs on different CPUs. 11 | */ 12 | @Target(ElementType.TYPE) 13 | @Retention(RetentionPolicy.RUNTIME) 14 | public @interface SplitByCpu {} 15 | -------------------------------------------------------------------------------- /instrumentation/src/androidTest/java/com/bumptech/glide/test/SplitBySdk.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | /** 9 | * Used by {@link BitmapRegressionTester} to generate SDK specific resources to account for 10 | * differences in Android's image decoding APIs across versions. 11 | */ 12 | @Target({ElementType.METHOD, ElementType.TYPE}) 13 | @Retention(RetentionPolicy.RUNTIME) 14 | public @interface SplitBySdk { 15 | int[] value(); 16 | } 17 | -------------------------------------------------------------------------------- /instrumentation/src/main/assets/canonical.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/assets/canonical.jpg -------------------------------------------------------------------------------- /instrumentation/src/main/assets/video.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/assets/video.mp4 -------------------------------------------------------------------------------- /instrumentation/src/main/java/com/bumptech/glide/test/DefaultFragmentActivity.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import android.os.Bundle; 4 | import androidx.annotation.Nullable; 5 | import androidx.fragment.app.FragmentActivity; 6 | import com.bumptech.glide.instrumentation.R; 7 | 8 | public class DefaultFragmentActivity extends FragmentActivity { 9 | 10 | @Override 11 | protected void onCreate(@Nullable Bundle savedInstanceState) { 12 | super.onCreate(savedInstanceState); 13 | setContentView(R.layout.default_fragment_activity); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /instrumentation/src/main/java/com/bumptech/glide/test/GlideWithAsDifferentSupertypesActivity.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import android.app.Activity; 4 | import android.content.Context; 5 | import android.os.Bundle; 6 | import androidx.annotation.Nullable; 7 | import androidx.fragment.app.FragmentActivity; 8 | import com.bumptech.glide.Glide; 9 | 10 | public class GlideWithAsDifferentSupertypesActivity extends FragmentActivity { 11 | 12 | @Override 13 | protected void onCreate(@Nullable Bundle savedInstanceState) { 14 | super.onCreate(savedInstanceState); 15 | Glide.with(this); 16 | Glide.with((Context) this); 17 | Glide.with((Activity) this); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /instrumentation/src/main/java/com/bumptech/glide/test/GlideWithBeforeSuperOnCreateActivity.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import android.os.Bundle; 4 | import android.widget.TextView; 5 | import androidx.annotation.Nullable; 6 | import androidx.fragment.app.FragmentActivity; 7 | import com.bumptech.glide.Glide; 8 | 9 | public class GlideWithBeforeSuperOnCreateActivity extends FragmentActivity { 10 | 11 | @Override 12 | protected void onCreate(@Nullable Bundle savedInstanceState) { 13 | Glide.with(this); 14 | super.onCreate(savedInstanceState); 15 | setContentView(new TextView(this)); 16 | } 17 | 18 | @Override 19 | protected void onResume() { 20 | super.onResume(); 21 | Glide.with(this); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /instrumentation/src/main/java/com/bumptech/glide/test/InstrumentationAppGlideModule.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import com.bumptech.glide.annotation.GlideModule; 4 | import com.bumptech.glide.module.AppGlideModule; 5 | 6 | @GlideModule 7 | public class InstrumentationAppGlideModule extends AppGlideModule { 8 | // Intentionally empty. 9 | } 10 | -------------------------------------------------------------------------------- /instrumentation/src/main/res/drawable-night/dog.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/drawable-night/dog.jpg -------------------------------------------------------------------------------- /instrumentation/src/main/res/drawable/bitmap_alias.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | -------------------------------------------------------------------------------- /instrumentation/src/main/res/drawable/dog.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/drawable/dog.jpg -------------------------------------------------------------------------------- /instrumentation/src/main/res/drawable/googlelogo_color_120x44dp.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/drawable/googlelogo_color_120x44dp.9.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/drawable/shape_drawable.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /instrumentation/src/main/res/drawable/state_list_drawable.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /instrumentation/src/main/res/layout/default_fragment_activity.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/canonical.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/canonical.jpg -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/canonical_large.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/canonical_large.jpg -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/canonical_png.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/canonical_png.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/canonical_transparent_png.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/canonical_transparent_png.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_centercrop_withrectanglelargerthanimage_returnsupscaledrectangularimage_16_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_centercrop_withrectanglelargerthanimage_returnsupscaledrectangularimage_16_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_centercrop_withrectanglelargerthanimage_returnsupscaledrectangularimage_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_centercrop_withrectanglelargerthanimage_returnsupscaledrectangularimage_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_centercrop_withrectanglelargerthanimage_returnsupscaledrectangularimage_21_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_centercrop_withrectanglelargerthanimage_returnsupscaledrectangularimage_21_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_centercrop_withrectanglelargerthanimage_returnsupscaledrectangularimage_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_centercrop_withrectanglelargerthanimage_returnsupscaledrectangularimage_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_centercrop_withrectanglelargerthanimage_returnsupscaledrectangularimage_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_centercrop_withrectanglelargerthanimage_returnsupscaledrectangularimage_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_centercrop_withrectanglesmallerthanimage_returnsrectangularimage_16_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_centercrop_withrectanglesmallerthanimage_returnsrectangularimage_16_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_centercrop_withrectanglesmallerthanimage_returnsrectangularimage_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_centercrop_withrectanglesmallerthanimage_returnsrectangularimage_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_centercrop_withrectanglesmallerthanimage_returnsrectangularimage_21_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_centercrop_withrectanglesmallerthanimage_returnsrectangularimage_21_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_centercrop_withrectanglesmallerthanimage_returnsrectangularimage_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_centercrop_withrectanglesmallerthanimage_returnsrectangularimage_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_centercrop_withrectanglesmallerthanimage_returnsrectangularimage_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_centercrop_withrectanglesmallerthanimage_returnsrectangularimage_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_centercrop_withsquarelargerthanimage_returnsupscaledrectangularimage_16_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_centercrop_withsquarelargerthanimage_returnsupscaledrectangularimage_16_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_centercrop_withsquarelargerthanimage_returnsupscaledrectangularimage_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_centercrop_withsquarelargerthanimage_returnsupscaledrectangularimage_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_centercrop_withsquarelargerthanimage_returnsupscaledrectangularimage_21_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_centercrop_withsquarelargerthanimage_returnsupscaledrectangularimage_21_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_centercrop_withsquarelargerthanimage_returnsupscaledrectangularimage_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_centercrop_withsquarelargerthanimage_returnsupscaledrectangularimage_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_centercrop_withsquarelargerthanimage_returnsupscaledrectangularimage_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_centercrop_withsquarelargerthanimage_returnsupscaledrectangularimage_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_centercrop_withsquaresmallerthanimage_returnssquareimage_16_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_centercrop_withsquaresmallerthanimage_returnssquareimage_16_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_centercrop_withsquaresmallerthanimage_returnssquareimage_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_centercrop_withsquaresmallerthanimage_returnssquareimage_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_centercrop_withsquaresmallerthanimage_returnssquareimage_21_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_centercrop_withsquaresmallerthanimage_returnssquareimage_21_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_centercrop_withsquaresmallerthanimage_returnssquareimage_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_centercrop_withsquaresmallerthanimage_returnssquareimage_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_centercrop_withsquaresmallerthanimage_returnssquareimage_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_centercrop_withsquaresmallerthanimage_returnssquareimage_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_cropswithin_16_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_cropswithin_16_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_cropswithin_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_cropswithin_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_cropswithin_18_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_cropswithin_18_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_cropswithin_18_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_cropswithin_18_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_cropswithin_21_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_cropswithin_21_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_cropswithin_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_cropswithin_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_cropswithin_23_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_cropswithin_23_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_cropswithin_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_cropswithin_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_cropswithin_26_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_cropswithin_26_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_fitswithinmaintainingaspectratio_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_fitswithinmaintainingaspectratio_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_fitswithinmaintainingaspectratio_18_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_fitswithinmaintainingaspectratio_18_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_fitswithinmaintainingaspectratio_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_fitswithinmaintainingaspectratio_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_fitswithinmaintainingaspectratio_23_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_fitswithinmaintainingaspectratio_23_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_fitswithinmaintainingaspectratio_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_fitswithinmaintainingaspectratio_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_fitswithinmaintainingaspectratio_26_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_fitswithinmaintainingaspectratio_26_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_16_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_16_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_18_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_18_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_18_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_18_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_21_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_21_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_23_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_23_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_26_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_26_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_16_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_16_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_18_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_18_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_18_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_18_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_21_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_21_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_23_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_23_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_26_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_26_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_retunsimagefitwithinsquare_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_retunsimagefitwithinsquare_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_retunsimagefitwithinsquare_18_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_retunsimagefitwithinsquare_18_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_retunsimagefitwithinsquare_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_retunsimagefitwithinsquare_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_retunsimagefitwithinsquare_23_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_retunsimagefitwithinsquare_23_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_retunsimagefitwithinsquare_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_retunsimagefitwithinsquare_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_retunsimagefitwithinsquare_26_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_retunsimagefitwithinsquare_26_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_16_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_16_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_18_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_18_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_18_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_18_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_21_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_21_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_23_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_23_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_26_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_26_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/cirt_centerinside_withnarrowrectangle_fitswithinmaintainingaspectratio_16_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/cirt_centerinside_withnarrowrectangle_fitswithinmaintainingaspectratio_16_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/cirt_centerinside_withnarrowrectangle_fitswithinmaintainingaspectratio_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/cirt_centerinside_withnarrowrectangle_fitswithinmaintainingaspectratio_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/cirt_centerinside_withnarrowrectangle_fitswithinmaintainingaspectratio_21_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/cirt_centerinside_withnarrowrectangle_fitswithinmaintainingaspectratio_21_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/cirt_centerinside_withnarrowrectangle_fitswithinmaintainingaspectratio_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/cirt_centerinside_withnarrowrectangle_fitswithinmaintainingaspectratio_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/cirt_centerinside_withnarrowrectangle_fitswithinmaintainingaspectratio_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/cirt_centerinside_withnarrowrectangle_fitswithinmaintainingaspectratio_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/cirt_centerinside_withshortrectangle_fitswithinmaintainingaspectratio_16_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/cirt_centerinside_withshortrectangle_fitswithinmaintainingaspectratio_16_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/cirt_centerinside_withshortrectangle_fitswithinmaintainingaspectratio_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/cirt_centerinside_withshortrectangle_fitswithinmaintainingaspectratio_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/cirt_centerinside_withshortrectangle_fitswithinmaintainingaspectratio_21_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/cirt_centerinside_withshortrectangle_fitswithinmaintainingaspectratio_21_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/cirt_centerinside_withshortrectangle_fitswithinmaintainingaspectratio_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/cirt_centerinside_withshortrectangle_fitswithinmaintainingaspectratio_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/cirt_centerinside_withshortrectangle_fitswithinmaintainingaspectratio_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/cirt_centerinside_withshortrectangle_fitswithinmaintainingaspectratio_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/cirt_centerinside_withsquarelargerthanimage_returnsoriginalimage_16_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/cirt_centerinside_withsquarelargerthanimage_returnsoriginalimage_16_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/cirt_centerinside_withsquarelargerthanimage_returnsoriginalimage_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/cirt_centerinside_withsquarelargerthanimage_returnsoriginalimage_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/cirt_centerinside_withsquarelargerthanimage_returnsoriginalimage_21_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/cirt_centerinside_withsquarelargerthanimage_returnsoriginalimage_21_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/cirt_centerinside_withsquarelargerthanimage_returnsoriginalimage_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/cirt_centerinside_withsquarelargerthanimage_returnsoriginalimage_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/cirt_centerinside_withsquarelargerthanimage_returnsoriginalimage_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/cirt_centerinside_withsquarelargerthanimage_returnsoriginalimage_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/cirt_centerinside_withsquaresmallerthanimage_returnsimagefitwithinsquare_16_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/cirt_centerinside_withsquaresmallerthanimage_returnsimagefitwithinsquare_16_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/cirt_centerinside_withsquaresmallerthanimage_returnsimagefitwithinsquare_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/cirt_centerinside_withsquaresmallerthanimage_returnsimagefitwithinsquare_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/cirt_centerinside_withsquaresmallerthanimage_returnsimagefitwithinsquare_21_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/cirt_centerinside_withsquaresmallerthanimage_returnsimagefitwithinsquare_21_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/cirt_centerinside_withsquaresmallerthanimage_returnsimagefitwithinsquare_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/cirt_centerinside_withsquaresmallerthanimage_returnsimagefitwithinsquare_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/cirt_centerinside_withsquaresmallerthanimage_returnsimagefitwithinsquare_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/cirt_centerinside_withsquaresmallerthanimage_returnsimagefitwithinsquare_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/dl_world_anim.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/dl_world_anim.gif -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/dl_world_anim_avif.avif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/dl_world_anim_avif.avif -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/dl_world_anim_webp.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/dl_world_anim_webp.webp -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/dog_dark.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/dog_dark.jpg -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/dog_light.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/dog_light.jpg -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_16_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_16_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_18_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_18_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_18_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_18_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_19_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_19_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_19_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_19_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_21_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_21_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_23_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_23_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_16_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_16_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_18_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_18_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_18_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_18_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_19_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_19_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_19_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_19_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_21_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_21_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_23_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_23_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_16_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_16_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_18_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_18_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_18_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_18_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_19_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_19_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_19_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_19_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_21_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_21_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_23_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_23_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_16_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_16_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_18_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_18_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_18_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_18_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_19_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_19_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_19_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_19_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_21_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_21_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_23_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_23_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/interlaced_transparent_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/interlaced_transparent_gif.gif -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/opaque_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/opaque_gif.gif -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/opaque_interlaced_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/opaque_interlaced_gif.gif -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_16_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/rcrt_testroundedcorners_16_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/rcrt_testroundedcorners_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_18_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/rcrt_testroundedcorners_18_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_18_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/rcrt_testroundedcorners_18_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_19_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/rcrt_testroundedcorners_19_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_19_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/rcrt_testroundedcorners_19_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_21_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/rcrt_testroundedcorners_21_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/rcrt_testroundedcorners_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_23_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/rcrt_testroundedcorners_23_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/rcrt_testroundedcorners_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_26_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/rcrt_testroundedcorners_26_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_16_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_16_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_18_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_18_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_18_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_18_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_19_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_19_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_19_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_19_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_21_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_21_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_23_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_23_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_26_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_26_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_16_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_16_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_18_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_18_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_18_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_18_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_19_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_19_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_19_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_19_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_21_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_21_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_23_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_23_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_26_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_26_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/transparent_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/transparent_gif.gif -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/video.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/video.mp4 -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/webkit_logo_p3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/instrumentation/src/main/res/raw/webkit_logo_p3.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/values-night/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #048b9f 4 | -------------------------------------------------------------------------------- /instrumentation/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | #f9b840 5 | -------------------------------------------------------------------------------- /instrumentation/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /instrumentation/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /integration/avif/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=Glide AVIF Integration 2 | POM_ARTIFACT_ID=avif-integration 3 | POM_PACKAGING=aar 4 | POM_DESCRIPTION=An integration library to support AVIF images in Glide 5 | -------------------------------------------------------------------------------- /integration/avif/lint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /integration/build.gradle: -------------------------------------------------------------------------------- 1 | // keep an empty file to make sure Gradle recognizes the properties 2 | -------------------------------------------------------------------------------- /integration/compose/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=Glide Compose Integration 2 | POM_ARTIFACT_ID=compose 3 | POM_PACKAGING=aar 4 | POM_DESCRIPTION=An integration library to integrate with Jetpack Compose 5 | 6 | VERSION_MAJOR=1 7 | VERSION_MINOR=0 8 | VERSION_PATCH=0 9 | VERSION_NAME=1.0.0-beta02-SNAPSHOT 10 | -------------------------------------------------------------------------------- /integration/compose/src/main/java/com/bumptech/glide/integration/compose/ExperimentalGlideComposeApi.kt: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.integration.compose 2 | 3 | @RequiresOptIn( 4 | level = RequiresOptIn.Level.ERROR, 5 | message = 6 | "Glide's Compose integration is experimental. APIs may change or be removed without" + 7 | " warning." 8 | ) 9 | @Retention(AnnotationRetention.BINARY) 10 | @kotlin.annotation.Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION) 11 | public annotation class ExperimentalGlideComposeApi 12 | -------------------------------------------------------------------------------- /integration/concurrent/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=Glide Concurrent Integration 2 | POM_ARTIFACT_ID=concurrent-integration 3 | POM_PACKAGING=aar 4 | POM_DESCRIPTION=An integration library for using Glide with ListenableFutures 5 | -------------------------------------------------------------------------------- /integration/cronet/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=Glide Cronet Integration 2 | POM_ARTIFACT_ID=cronet-integration 3 | POM_PACKAGING=aar 4 | POM_DESCRIPTION=An integration library to use Cronet to fetch data over http/https in Glide 5 | -------------------------------------------------------------------------------- /integration/cronet/lint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /integration/cronet/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /integration/cronet/src/main/java/com/bumptech/glide/integration/cronet/ByteBufferParser.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.integration.cronet; 2 | 3 | import java.nio.ByteBuffer; 4 | 5 | /** 6 | * Parses a {@link java.nio.ByteBuffer} to a particular data type. 7 | * 8 | * @param The type of data to parse the buffer to. 9 | */ 10 | interface ByteBufferParser { 11 | /** Returns the required type of data parsed from the given {@link ByteBuffer}. */ 12 | T parse(ByteBuffer byteBuffer); 13 | 14 | /** Returns the {@link Class} of the data that will be parsed from {@link ByteBuffer}s. */ 15 | Class getDataClass(); 16 | } 17 | -------------------------------------------------------------------------------- /integration/cronet/src/main/java/com/bumptech/glide/integration/cronet/CronetRequestFactory.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.integration.cronet; 2 | 3 | import java.util.Map; 4 | import org.chromium.net.UrlRequest; 5 | 6 | /** Factory to build custom cronet requests. */ 7 | public interface CronetRequestFactory { 8 | 9 | UrlRequest.Builder newRequest( 10 | String url, int requestPriority, Map headers, UrlRequest.Callback listener); 11 | } 12 | -------------------------------------------------------------------------------- /integration/cronet/src/test/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /integration/gifencoder/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=Glide GifEncoder Integration 2 | POM_ARTIFACT_ID=gifencoder-integration 3 | POM_PACKAGING=aar 4 | POM_DESCRIPTION=An integration library allowing users to re-encode or create animated GIFs 5 | -------------------------------------------------------------------------------- /integration/gifencoder/lint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /integration/gradle.properties: -------------------------------------------------------------------------------- 1 | # Prefix and postfix for source and javadoc jars. 2 | JAR_PREFIX=glide- 3 | JAR_POSTFIX=-integration 4 | -------------------------------------------------------------------------------- /integration/ktx/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=Glide Kotlin Extensions 2 | POM_ARTIFACT_ID=ktx 3 | POM_PACKAGING=aar 4 | POM_DESCRIPTION=An integration library to improve Kotlin interop with Glide 5 | 6 | VERSION_MAJOR=1 7 | VERSION_MINOR=0 8 | VERSION_PATCH=0 9 | VERSION_NAME=1.0.0-beta02-SNAPSHOT 10 | -------------------------------------------------------------------------------- /integration/ktx/src/main/java/com/bumptech/glide/GlideIntegration.kt: -------------------------------------------------------------------------------- 1 | /** 2 | * Functions that give us access to some of Glide's non-public internals to make the flows API a bit 3 | * better. 4 | */ 5 | package com.bumptech.glide 6 | 7 | import com.bumptech.glide.request.RequestListener 8 | import com.bumptech.glide.request.target.Target 9 | 10 | internal fun RequestBuilder<*>.requestManager() = this.requestManager 11 | 12 | internal fun RequestBuilder.intoDirect( 13 | targetAndRequestListener: TargetAndRequestListenerT, 14 | ) where TargetAndRequestListenerT : Target, 15 | TargetAndRequestListenerT : RequestListener { 16 | this.into(targetAndRequestListener, targetAndRequestListener) { 17 | it.run() 18 | } 19 | } -------------------------------------------------------------------------------- /integration/ktx/src/main/java/com/bumptech/glide/integration/ktx/InternalGlideApi.kt: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.integration.ktx 2 | 3 | @RequiresOptIn( 4 | level = RequiresOptIn.Level.ERROR, 5 | message = 6 | "An internal only API not intended for public use, may change, break or be removed" + 7 | " at any time without warning." 8 | ) 9 | @Retention(AnnotationRetention.BINARY) 10 | @kotlin.annotation.Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION) 11 | public annotation class InternalGlideApi 12 | -------------------------------------------------------------------------------- /integration/okhttp/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | dependencies { 4 | implementation project(':library') 5 | annotationProcessor project(':annotation:compiler') 6 | 7 | api libs.okhttp2 8 | api libs.androidx.annotation 9 | } 10 | 11 | android { 12 | namespace 'com.bumptech.glide.integration.okhttp' 13 | compileSdkVersion libs.versions.compile.sdk.version.get() 14 | 15 | defaultConfig { 16 | minSdk libs.versions.min.sdk.version.get() as int 17 | targetSdk libs.versions.target.sdk.version.get() as int 18 | 19 | versionName VERSION_NAME as String 20 | } 21 | 22 | compileOptions { 23 | sourceCompatibility JavaVersion.VERSION_1_8 24 | targetCompatibility JavaVersion.VERSION_1_8 25 | } 26 | } 27 | 28 | apply from: "${rootProject.projectDir}/scripts/upload.gradle" 29 | -------------------------------------------------------------------------------- /integration/okhttp/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=Glide OkHttp Integration 2 | POM_ARTIFACT_ID=okhttp-integration 3 | POM_PACKAGING=aar 4 | POM_DESCRIPTION=An integration library to use OkHttp 2.x to fetch data over http/https in Glide 5 | -------------------------------------------------------------------------------- /integration/okhttp/lint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /integration/okhttp3/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | dependencies { 4 | implementation project(':library') 5 | annotationProcessor project(':annotation:compiler') 6 | 7 | api libs.okhttp3 8 | api libs.androidx.annotation 9 | } 10 | 11 | android { 12 | namespace 'com.bumptech.glide.integration.okhttp' 13 | compileSdkVersion libs.versions.compile.sdk.version.get() 14 | 15 | defaultConfig { 16 | minSdk libs.versions.min.sdk.version.get() as int 17 | targetSdk libs.versions.target.sdk.version.get() as int 18 | 19 | versionName VERSION_NAME as String 20 | } 21 | 22 | compileOptions { 23 | sourceCompatibility JavaVersion.VERSION_1_8 24 | targetCompatibility JavaVersion.VERSION_1_8 25 | } 26 | } 27 | 28 | apply from: "${rootProject.projectDir}/scripts/upload.gradle" 29 | -------------------------------------------------------------------------------- /integration/okhttp3/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=Glide OkHttp 3.x Integration 2 | POM_ARTIFACT_ID=okhttp3-integration 3 | POM_PACKAGING=aar 4 | POM_DESCRIPTION=An integration library to use OkHttp 3.x to fetch data over http/https in Glide 5 | -------------------------------------------------------------------------------- /integration/okhttp3/lint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /integration/okhttp3/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /integration/okhttp4/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | dependencies { 4 | implementation project(':library') 5 | annotationProcessor project(':annotation:compiler') 6 | 7 | api libs.okhttp4 8 | api libs.androidx.annotation 9 | } 10 | 11 | android { 12 | namespace 'com.bumptech.glide.integration.okhttp' 13 | compileSdkVersion libs.versions.compile.sdk.version.get() 14 | 15 | defaultConfig { 16 | minSdk libs.versions.okhttp.min.sdk.version.get() as int 17 | targetSdk libs.versions.target.sdk.version.get() as int 18 | 19 | versionName VERSION_NAME as String 20 | } 21 | 22 | compileOptions { 23 | sourceCompatibility JavaVersion.VERSION_1_8 24 | targetCompatibility JavaVersion.VERSION_1_8 25 | } 26 | } 27 | 28 | apply from: "${rootProject.projectDir}/scripts/upload.gradle" 29 | -------------------------------------------------------------------------------- /integration/okhttp4/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=Glide OkHttp 4.x Integration 2 | POM_ARTIFACT_ID=okhttp4-integration 3 | POM_PACKAGING=aar 4 | POM_DESCRIPTION=An integration library to use OkHttp 4.x to fetch data over http/https in Glide 5 | -------------------------------------------------------------------------------- /integration/okhttp4/lint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /integration/recyclerview/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | dependencies { 4 | implementation project(':library') 5 | compileOnly libs.androidx.recyclerview 6 | compileOnly libs.androidx.fragment 7 | } 8 | 9 | android { 10 | namespace 'com.bumptech.glide.integration.recyclerview' 11 | compileSdkVersion libs.versions.compile.sdk.version.get() 12 | 13 | defaultConfig { 14 | minSdk libs.versions.min.sdk.version.get() as int 15 | targetSdk libs.versions.target.sdk.version.get() as int 16 | 17 | versionName VERSION_NAME as String 18 | } 19 | 20 | compileOptions { 21 | sourceCompatibility JavaVersion.VERSION_1_8 22 | targetCompatibility JavaVersion.VERSION_1_8 23 | } 24 | } 25 | 26 | apply from: "${rootProject.projectDir}/scripts/upload.gradle" 27 | -------------------------------------------------------------------------------- /integration/recyclerview/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=Glide RecyclerView Integration 2 | POM_ARTIFACT_ID=recyclerview-integration 3 | POM_PACKAGING=aar 4 | POM_DESCRIPTION=An integration library to display images in RecyclerView. 5 | -------------------------------------------------------------------------------- /integration/recyclerview/lint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /integration/sqljournaldiskcache/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=Glide SQL Journaled Disk Cache 2 | POM_ARTIFACT_ID=sqljournaldiskcache 3 | POM_PACKAGING=aar 4 | POM_DESCRIPTION=A sql journaled LRU disk cache alternative to Glide's standard disk cache 5 | -------------------------------------------------------------------------------- /integration/sqljournaldiskcache/src/main/java/com/bumptech/glide/integration/sqljournaldiskcache/Clock.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.integration.sqljournaldiskcache; 2 | 3 | /** 4 | * A simple wrapper for obtaining the current time for testing. 5 | * 6 | *

While this interface exists in lots of libraries, especially internally at Google, there 7 | * doesn't seem to be a reasonable public version. For now we're just duplicating it again in Glide 8 | * so that the library can be open sourced. 9 | */ 10 | public interface Clock { 11 | long currentTimeMillis(); 12 | } 13 | -------------------------------------------------------------------------------- /integration/sqljournaldiskcache/src/main/java/com/bumptech/glide/integration/sqljournaldiskcache/DefaultClock.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.integration.sqljournaldiskcache; 2 | 3 | final class DefaultClock implements Clock { 4 | @Override 5 | public long currentTimeMillis() { 6 | return System.currentTimeMillis(); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /integration/sqljournaldiskcache/src/main/java/com/bumptech/glide/integration/sqljournaldiskcache/MessageIds.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.integration.sqljournaldiskcache; 2 | 3 | /** 4 | * A unique set of non-zero message ids to use when requesting that work be done on the disk cache's 5 | * background thread. 6 | */ 7 | interface MessageIds { 8 | int ADD_LAST_MODIFIED_KEY = 1; 9 | int EVICT = 2; 10 | int RECOVER = 3; 11 | } 12 | -------------------------------------------------------------------------------- /integration/sqljournaldiskcache/src/main/java/com/bumptech/glide/integration/sqljournaldiskcache/SizeTable.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.integration.sqljournaldiskcache; 2 | 3 | final class SizeTable { 4 | static final String TABLE_NAME = "size"; 5 | 6 | interface Columns { 7 | String ID = "id"; 8 | 9 | /** The total size in bytes of all files in the cache (+- pending deletes and inserts). */ 10 | String SIZE = "size"; 11 | } 12 | 13 | static String getSqlCreateStatement() { 14 | return "CREATE TABLE " 15 | + TABLE_NAME 16 | + " (" 17 | + Columns.ID 18 | + " INTEGER PRIMARY KEY, " 19 | + Columns.SIZE 20 | + " INTEGER NOT NULL DEFAULT 0" 21 | + ")"; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /integration/sqljournaldiskcache/src/test/java/com/bumptech/glide/integration/sqljournaldiskcache/TestClock.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.integration.sqljournaldiskcache; 2 | 3 | import java.time.Duration; 4 | 5 | final class TestClock implements Clock { 6 | private long currentTimeMillis = 0L; 7 | 8 | @Override 9 | public long currentTimeMillis() { 10 | return currentTimeMillis; 11 | } 12 | 13 | void set(long timeMillis) { 14 | currentTimeMillis = timeMillis; 15 | } 16 | 17 | void advance(Duration duration) { 18 | currentTimeMillis += duration.toMillis(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /integration/volley/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=Glide Volley Integration 2 | POM_ARTIFACT_ID=volley-integration 3 | POM_PACKAGING=aar 4 | POM_DESCRIPTION=An integration library to use Volley to fetch data over http/https in Glide 5 | -------------------------------------------------------------------------------- /integration/volley/lint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /integration/volley/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /integration/volley/src/main/java/com/bumptech/glide/integration/volley/VolleyRequestFactory.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.integration.volley; 2 | 3 | import com.android.volley.Request; 4 | import com.android.volley.Request.Priority; 5 | import com.bumptech.glide.load.data.DataFetcher.DataCallback; 6 | import java.io.InputStream; 7 | import java.util.Map; 8 | 9 | /** Used to construct a custom Volley request, such as for authentication header decoration. */ 10 | public interface VolleyRequestFactory { 11 | 12 | /** 13 | * Returns a Volley request for the given image url. The given future should be put as a listener 14 | * or called when the request completes. 15 | */ 16 | Request create( 17 | String url, 18 | DataCallback callback, 19 | Priority priority, 20 | Map headers); 21 | } 22 | -------------------------------------------------------------------------------- /library/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=Glide 2 | POM_ARTIFACT_ID=glide 3 | POM_PACKAGING=aar 4 | 5 | # Prefix and postfix for source and javadoc jars. 6 | JAR_PREFIX=glide- 7 | JAR_POSTFIX= 8 | -------------------------------------------------------------------------------- /library/lint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /library/proguard-rules.txt: -------------------------------------------------------------------------------- 1 | -keep public class * implements com.bumptech.glide.module.GlideModule 2 | -keep class * extends com.bumptech.glide.module.AppGlideModule { 3 | (...); 4 | } 5 | -keep public enum com.bumptech.glide.load.ImageHeaderParser$** { 6 | **[] $VALUES; 7 | public *; 8 | } 9 | -keep class com.bumptech.glide.load.data.ParcelFileDescriptorRewinder$InternalRewinder { 10 | *** rewind(); 11 | } 12 | 13 | # Uncomment for DexGuard only 14 | #-keepresourcexmlelements manifest/application/meta-data@value=GlideModule 15 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/Priority.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide; 2 | 3 | /** 4 | * Priorities for completing loads. If more than one load is queued at a time, the load with the 5 | * higher priority will be started first. Priorities are considered best effort, there are no 6 | * guarantees about the order in which loads will start or finish. 7 | */ 8 | public enum Priority { 9 | IMMEDIATE, 10 | HIGH, 11 | NORMAL, 12 | LOW, 13 | } 14 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/load/DataSource.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load; 2 | 3 | /** Indicates the origin of some retrieved data. */ 4 | public enum DataSource { 5 | /** 6 | * Indicates data was probably retrieved locally from the device, although it may have been 7 | * obtained through a content provider that may have obtained the data from a remote source. 8 | */ 9 | LOCAL, 10 | /** Indicates data was retrieved from a remote source other than the device. */ 11 | REMOTE, 12 | /** Indicates data was retrieved unmodified from the on device cache. */ 13 | DATA_DISK_CACHE, 14 | /** Indicates data was retrieved from modified content in the on device cache. */ 15 | RESOURCE_DISK_CACHE, 16 | /** Indicates data was retrieved from the in memory cache. */ 17 | MEMORY_CACHE, 18 | } 19 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/load/EncodeStrategy.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load; 2 | 3 | /** 4 | * Details how an {@link com.bumptech.glide.load.ResourceEncoder} will encode a resource to cache. 5 | */ 6 | public enum EncodeStrategy { 7 | /** 8 | * Writes the original unmodified data for the resource to disk, not include downsampling or 9 | * transformations. 10 | */ 11 | SOURCE, 12 | 13 | /** Writes the decoded, downsampled and transformed data for the resource to disk. */ 14 | TRANSFORMED, 15 | 16 | /** Will write no data. */ 17 | NONE, 18 | } 19 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/load/Encoder.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load; 2 | 3 | import androidx.annotation.NonNull; 4 | import java.io.File; 5 | 6 | /** 7 | * An interface for writing data to some persistent data store (i.e. a local File cache). 8 | * 9 | * @param The type of the data that will be written. 10 | */ 11 | public interface Encoder { 12 | /** 13 | * Writes the given data to the given output stream and returns True if the write completed 14 | * successfully and should be committed. 15 | * 16 | * @param data The data to write. 17 | * @param file The file to write the data to. 18 | * @param options The set of options to apply when encoding. 19 | */ 20 | boolean encode(@NonNull T data, @NonNull File file, @NonNull Options options); 21 | } 22 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/load/ResourceEncoder.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load; 2 | 3 | import androidx.annotation.NonNull; 4 | import com.bumptech.glide.load.engine.Resource; 5 | 6 | /** 7 | * An interface for writing data from a resource to some persistent data store (i.e. a local File 8 | * cache). 9 | * 10 | * @param The type of the data contained by the resource. 11 | */ 12 | public interface ResourceEncoder extends Encoder> { 13 | // specializing the generic arguments 14 | @NonNull 15 | EncodeStrategy getEncodeStrategy(@NonNull Options options); 16 | } 17 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/load/data/mediastore/FileService.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load.data.mediastore; 2 | 3 | import java.io.File; 4 | 5 | class FileService { 6 | public boolean exists(File file) { 7 | return file.exists(); 8 | } 9 | 10 | public long length(File file) { 11 | return file.length(); 12 | } 13 | 14 | public File get(String path) { 15 | return new File(path); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/load/data/mediastore/ThumbnailQuery.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load.data.mediastore; 2 | 3 | import android.database.Cursor; 4 | import android.net.Uri; 5 | 6 | interface ThumbnailQuery { 7 | Cursor query(Uri uri); 8 | } 9 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/load/engine/CallbackException.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load.engine; 2 | 3 | /** 4 | * An exception indicating that code outside of Glide threw an unexpected exception. 5 | * 6 | *

This is useful to allow us to distinguish developer errors on the part of users of Glide from 7 | * developer errors on the part of developers of Glide itself. 8 | */ 9 | final class CallbackException extends RuntimeException { 10 | private static final long serialVersionUID = -7530898992688511851L; 11 | 12 | CallbackException(Throwable cause) { 13 | super("Unexpected exception thrown by non-Glide code", cause); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/load/engine/EngineJobListener.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load.engine; 2 | 3 | import com.bumptech.glide.load.Key; 4 | 5 | interface EngineJobListener { 6 | 7 | void onEngineJobComplete(EngineJob engineJob, Key key, EngineResource resource); 8 | 9 | void onEngineJobCancelled(EngineJob engineJob, Key key); 10 | } 11 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/load/engine/EngineKeyFactory.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load.engine; 2 | 3 | import com.bumptech.glide.load.Key; 4 | import com.bumptech.glide.load.Options; 5 | import com.bumptech.glide.load.Transformation; 6 | import java.util.Map; 7 | 8 | class EngineKeyFactory { 9 | 10 | @SuppressWarnings("rawtypes") 11 | EngineKey buildKey( 12 | Object model, 13 | Key signature, 14 | int width, 15 | int height, 16 | Map, Transformation> transformations, 17 | Class resourceClass, 18 | Class transcodeClass, 19 | Options options) { 20 | return new EngineKey( 21 | model, signature, width, height, transformations, resourceClass, transcodeClass, options); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/load/engine/Initializable.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load.engine; 2 | 3 | /** 4 | * A callback allowing a resource to do some optimization on a background thread before being 5 | * returned to the ui. 6 | */ 7 | public interface Initializable { 8 | 9 | /** Called on a background thread so the {@link Resource} can do some eager initialization. */ 10 | void initialize(); 11 | } 12 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/load/engine/bitmap_recycle/ArrayAdapterInterface.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load.engine.bitmap_recycle; 2 | 3 | /** 4 | * Interface for handling operations on a primitive array type. 5 | * 6 | * @param Array type (e.g. byte[], int[]) 7 | */ 8 | interface ArrayAdapterInterface { 9 | 10 | /** TAG for logging. */ 11 | String getTag(); 12 | 13 | /** Return the length of the given array. */ 14 | int getArrayLength(T array); 15 | 16 | /** Allocate and return an array of the specified size. */ 17 | T newArray(int length); 18 | 19 | /** Return the size of an element in the array in bytes (e.g. for int return 4). */ 20 | int getElementSizeInBytes(); 21 | } 22 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/load/engine/bitmap_recycle/BaseKeyPool.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load.engine.bitmap_recycle; 2 | 3 | import com.bumptech.glide.util.Util; 4 | import java.util.Queue; 5 | 6 | abstract class BaseKeyPool { 7 | private static final int MAX_SIZE = 20; 8 | private final Queue keyPool = Util.createQueue(MAX_SIZE); 9 | 10 | T get() { 11 | T result = keyPool.poll(); 12 | if (result == null) { 13 | result = create(); 14 | } 15 | return result; 16 | } 17 | 18 | public void offer(T key) { 19 | if (keyPool.size() < MAX_SIZE) { 20 | keyPool.offer(key); 21 | } 22 | } 23 | 24 | abstract T create(); 25 | } 26 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/load/engine/bitmap_recycle/ByteArrayAdapter.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load.engine.bitmap_recycle; 2 | 3 | /** Adapter for handling primitive byte arrays. */ 4 | @SuppressWarnings("PMD.UseVarargs") 5 | public final class ByteArrayAdapter implements ArrayAdapterInterface { 6 | private static final String TAG = "ByteArrayPool"; 7 | 8 | @Override 9 | public String getTag() { 10 | return TAG; 11 | } 12 | 13 | @Override 14 | public int getArrayLength(byte[] array) { 15 | return array.length; 16 | } 17 | 18 | @Override 19 | public byte[] newArray(int length) { 20 | return new byte[length]; 21 | } 22 | 23 | @Override 24 | public int getElementSizeInBytes() { 25 | return 1; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/load/engine/bitmap_recycle/IntegerArrayAdapter.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load.engine.bitmap_recycle; 2 | 3 | /** Adapter for handling primitive int arrays. */ 4 | @SuppressWarnings("PMD.UseVarargs") 5 | public final class IntegerArrayAdapter implements ArrayAdapterInterface { 6 | private static final String TAG = "IntegerArrayPool"; 7 | 8 | @Override 9 | public String getTag() { 10 | return TAG; 11 | } 12 | 13 | @Override 14 | public int getArrayLength(int[] array) { 15 | return array.length; 16 | } 17 | 18 | @Override 19 | public int[] newArray(int length) { 20 | return new int[length]; 21 | } 22 | 23 | @Override 24 | public int getElementSizeInBytes() { 25 | return 4; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/load/engine/bitmap_recycle/LruPoolStrategy.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load.engine.bitmap_recycle; 2 | 3 | import android.graphics.Bitmap; 4 | import androidx.annotation.Nullable; 5 | 6 | interface LruPoolStrategy { 7 | void put(Bitmap bitmap); 8 | 9 | @Nullable 10 | Bitmap get(int width, int height, Bitmap.Config config); 11 | 12 | @Nullable 13 | Bitmap removeLast(); 14 | 15 | String logBitmap(Bitmap bitmap); 16 | 17 | String logBitmap(int width, int height, Bitmap.Config config); 18 | 19 | int getSize(Bitmap bitmap); 20 | } 21 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/load/engine/bitmap_recycle/Poolable.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load.engine.bitmap_recycle; 2 | 3 | interface Poolable { 4 | void offer(); 5 | } 6 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/load/engine/bitmap_recycle/PrettyPrintTreeMap.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load.engine.bitmap_recycle; 2 | 3 | import java.util.TreeMap; 4 | 5 | // Never serialized. 6 | @SuppressWarnings("serial") 7 | class PrettyPrintTreeMap extends TreeMap { 8 | @Override 9 | public String toString() { 10 | StringBuilder sb = new StringBuilder(); 11 | sb.append("( "); 12 | for (Entry entry : entrySet()) { 13 | sb.append('{').append(entry.getKey()).append(':').append(entry.getValue()).append("}, "); 14 | } 15 | if (!isEmpty()) { 16 | sb.replace(sb.length() - 2, sb.length(), ""); 17 | } 18 | return sb.append(" )").toString(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/load/resource/file/FileResource.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load.resource.file; 2 | 3 | import com.bumptech.glide.load.resource.SimpleResource; 4 | import java.io.File; 5 | 6 | /** A simple {@link com.bumptech.glide.load.engine.Resource} that wraps a {@link File}. */ 7 | // Public API. 8 | @SuppressWarnings("WeakerAccess") 9 | public class FileResource extends SimpleResource { 10 | public FileResource(File file) { 11 | super(file); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/manager/ApplicationLifecycle.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.manager; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | /** 6 | * A {@link com.bumptech.glide.manager.Lifecycle} implementation for tracking and notifying 7 | * listeners of {@link android.app.Application} lifecycle events. 8 | * 9 | *

Since there are essentially no {@link android.app.Application} lifecycle events, this class 10 | * simply defaults to notifying new listeners that they are started. 11 | */ 12 | class ApplicationLifecycle implements Lifecycle { 13 | @Override 14 | public void addListener(@NonNull LifecycleListener listener) { 15 | listener.onStart(); 16 | } 17 | 18 | @Override 19 | public void removeListener(@NonNull LifecycleListener listener) { 20 | // Do nothing. 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/manager/ConnectivityMonitor.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.manager; 2 | 3 | /** An interface for monitoring network connectivity events. */ 4 | public interface ConnectivityMonitor extends LifecycleListener { 5 | 6 | /** An interface for listening to network connectivity events picked up by the monitor. */ 7 | interface ConnectivityListener { 8 | /** 9 | * Called when the connectivity state changes. 10 | * 11 | * @param isConnected True if we're currently connected to a network, false otherwise. 12 | */ 13 | void onConnectivityChanged(boolean isConnected); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/manager/ConnectivityMonitorFactory.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.manager; 2 | 3 | import android.content.Context; 4 | import androidx.annotation.NonNull; 5 | 6 | /** 7 | * A factory class that produces a functional {@link 8 | * com.bumptech.glide.manager.ConnectivityMonitor}. 9 | */ 10 | public interface ConnectivityMonitorFactory { 11 | 12 | @NonNull 13 | ConnectivityMonitor build( 14 | @NonNull Context context, @NonNull ConnectivityMonitor.ConnectivityListener listener); 15 | } 16 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/manager/DoNothingFirstFrameWaiter.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.manager; 2 | 3 | import android.app.Activity; 4 | 5 | final class DoNothingFirstFrameWaiter implements FrameWaiter { 6 | 7 | @Override 8 | public void registerSelf(Activity activity) { 9 | // Do nothing. 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/manager/EmptyRequestManagerTreeNode.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.manager; 2 | 3 | import androidx.annotation.NonNull; 4 | import com.bumptech.glide.RequestManager; 5 | import java.util.Collections; 6 | import java.util.Set; 7 | 8 | /** A {@link RequestManagerTreeNode} that returns no relatives. */ 9 | final class EmptyRequestManagerTreeNode implements RequestManagerTreeNode { 10 | @NonNull 11 | @Override 12 | public Set getDescendants() { 13 | return Collections.emptySet(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/manager/FrameWaiter.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.manager; 2 | 3 | import android.app.Activity; 4 | 5 | interface FrameWaiter { 6 | void registerSelf(Activity activity); 7 | } 8 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/manager/Lifecycle.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.manager; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | /** An interface for listening to Activity/Fragment lifecycle events. */ 6 | public interface Lifecycle { 7 | /** Adds the given listener to the set of listeners managed by this Lifecycle implementation. */ 8 | void addListener(@NonNull LifecycleListener listener); 9 | 10 | /** 11 | * Removes the given listener from the set of listeners managed by this Lifecycle implementation, 12 | * returning {@code true} if the listener was removed successfully, and {@code false} otherwise. 13 | * 14 | *

This is an optimization only, there is no guarantee that every added listener will 15 | * eventually be removed. 16 | */ 17 | void removeListener(@NonNull LifecycleListener listener); 18 | } 19 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/manager/LifecycleListener.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.manager; 2 | 3 | /** 4 | * An interface for listener to {@link android.app.Fragment} and {@link android.app.Activity} 5 | * lifecycle events. 6 | */ 7 | public interface LifecycleListener { 8 | 9 | /** 10 | * Callback for when {@link android.app.Fragment#onStart()}} or {@link 11 | * android.app.Activity#onStart()} is called. 12 | */ 13 | void onStart(); 14 | 15 | /** 16 | * Callback for when {@link android.app.Fragment#onStop()}} or {@link 17 | * android.app.Activity#onStop()}} is called. 18 | */ 19 | void onStop(); 20 | 21 | /** 22 | * Callback for when {@link android.app.Fragment#onDestroy()}} or {@link 23 | * android.app.Activity#onDestroy()} is called. 24 | */ 25 | void onDestroy(); 26 | } 27 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/manager/NullConnectivityMonitor.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.manager; 2 | 3 | /** A no-op {@link com.bumptech.glide.manager.ConnectivityMonitor}. */ 4 | class NullConnectivityMonitor implements ConnectivityMonitor { 5 | 6 | @Override 7 | public void onStart() { 8 | // Do nothing. 9 | } 10 | 11 | @Override 12 | public void onStop() { 13 | // Do nothing. 14 | } 15 | 16 | @Override 17 | public void onDestroy() { 18 | // Do nothing. 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/manager/RequestManagerTreeNode.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.manager; 2 | 3 | import androidx.annotation.NonNull; 4 | import com.bumptech.glide.RequestManager; 5 | import java.util.Set; 6 | 7 | /** 8 | * Provides access to the relatives of a RequestManager based on the current context. The context 9 | * hierarchy is provided by nesting in Activity and Fragments; the application context does not 10 | * provide access to any other RequestManagers hierarchically. 11 | */ 12 | public interface RequestManagerTreeNode { 13 | /** 14 | * Returns all descendant {@link RequestManager}s relative to the context of the current {@link 15 | * RequestManager}. 16 | */ 17 | @NonNull 18 | Set getDescendants(); 19 | } 20 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/provider/ImageHeaderParserRegistry.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.provider; 2 | 3 | import androidx.annotation.NonNull; 4 | import com.bumptech.glide.load.ImageHeaderParser; 5 | import java.util.ArrayList; 6 | import java.util.List; 7 | 8 | /** Contains an unordered list of {@link ImageHeaderParser}s capable of parsing image headers. */ 9 | public final class ImageHeaderParserRegistry { 10 | private final List parsers = new ArrayList<>(); 11 | 12 | @NonNull 13 | public synchronized List getParsers() { 14 | return parsers; 15 | } 16 | 17 | public synchronized void add(@NonNull ImageHeaderParser parser) { 18 | parsers.add(parser); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/request/target/SizeReadyCallback.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.request.target; 2 | 3 | /** 4 | * A callback that must be called when the target has determined its size. For fixed size targets it 5 | * can be called synchronously. 6 | */ 7 | public interface SizeReadyCallback { 8 | /** 9 | * A callback called on the main thread. 10 | * 11 | * @param width The width in pixels of the target, or {@link Target#SIZE_ORIGINAL} to indicate 12 | * that we want the resource at its original width. 13 | * @param height The height in pixels of the target, or {@link Target#SIZE_ORIGINAL} to indicate 14 | * that we want the resource at its original height. 15 | */ 16 | void onSizeReady(int width, int height); 17 | } 18 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/request/transition/TransitionFactory.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.request.transition; 2 | 3 | import com.bumptech.glide.load.DataSource; 4 | 5 | /** 6 | * A factory class that can produce different {@link Transition}s based on the state of the request. 7 | * 8 | * @param The type of resource that needs to be animated into the target. 9 | */ 10 | public interface TransitionFactory { 11 | 12 | /** 13 | * Returns a new {@link Transition}. 14 | * 15 | * @param dataSource The {@link com.bumptech.glide.load.DataSource} the resource was loaded from. 16 | * @param isFirstResource True if this is the first resource to be loaded into the target. 17 | */ 18 | Transition build(DataSource dataSource, boolean isFirstResource); 19 | } 20 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/signature/EmptySignature.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.signature; 2 | 3 | import androidx.annotation.NonNull; 4 | import com.bumptech.glide.load.Key; 5 | import java.security.MessageDigest; 6 | 7 | /** An empty key that is always equal to all other empty keys. */ 8 | public final class EmptySignature implements Key { 9 | private static final EmptySignature EMPTY_KEY = new EmptySignature(); 10 | 11 | @NonNull 12 | public static EmptySignature obtain() { 13 | return EMPTY_KEY; 14 | } 15 | 16 | private EmptySignature() { 17 | // Empty. 18 | } 19 | 20 | @Override 21 | public String toString() { 22 | return "EmptySignature"; 23 | } 24 | 25 | @Override 26 | public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) { 27 | // Do nothing. 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/util/Synthetic.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.util; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | /** Indicates that target's visibility can be relaxed to avoid synthetic methods. */ 9 | @Retention(RetentionPolicy.SOURCE) 10 | @Target({ElementType.FIELD, ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.TYPE}) 11 | public @interface Synthetic {} 12 | -------------------------------------------------------------------------------- /library/src/main/res/values/ids.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /library/test/src/test/java/com/bumptech/glide/load/resource/file/FileResourceTest.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load.resource.file; 2 | 3 | import static org.junit.Assert.assertEquals; 4 | 5 | import java.io.File; 6 | import org.junit.Before; 7 | import org.junit.Test; 8 | import org.junit.runner.RunWith; 9 | import org.junit.runners.JUnit4; 10 | 11 | @RunWith(JUnit4.class) 12 | public class FileResourceTest { 13 | 14 | private File file; 15 | private FileResource resource; 16 | 17 | @Before 18 | public void setUp() { 19 | file = new File("Test"); 20 | resource = new FileResource(file); 21 | } 22 | 23 | @Test 24 | public void testReturnsGivenFile() { 25 | assertEquals(file, resource.get()); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /library/test/src/test/java/com/bumptech/glide/load/resource/transcode/UnitTranscoderTest.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load.resource.transcode; 2 | 3 | import static com.bumptech.glide.tests.Util.mockResource; 4 | import static org.junit.Assert.assertEquals; 5 | 6 | import com.bumptech.glide.load.Options; 7 | import com.bumptech.glide.load.engine.Resource; 8 | import org.junit.Test; 9 | import org.junit.runner.RunWith; 10 | import org.junit.runners.JUnit4; 11 | 12 | @RunWith(JUnit4.class) 13 | public class UnitTranscoderTest { 14 | 15 | @Test 16 | public void testReturnsTheGivenResource() { 17 | Resource resource = mockResource(); 18 | ResourceTranscoder unitTranscoder = UnitTranscoder.get(); 19 | 20 | assertEquals(resource, unitTranscoder.transcode(resource, new Options())); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /library/test/src/test/java/com/bumptech/glide/signature/EmptySignatureTest.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.signature; 2 | 3 | import static org.mockito.Mockito.mock; 4 | 5 | import com.bumptech.glide.load.Key; 6 | import com.bumptech.glide.tests.KeyTester; 7 | import org.junit.Rule; 8 | import org.junit.Test; 9 | import org.junit.runner.RunWith; 10 | import org.junit.runners.JUnit4; 11 | 12 | @RunWith(JUnit4.class) 13 | public class EmptySignatureTest { 14 | @Rule public final KeyTester keyTester = new KeyTester(); 15 | 16 | @Test 17 | public void testEquals() { 18 | keyTester 19 | .addEquivalenceGroup(EmptySignature.obtain(), EmptySignature.obtain()) 20 | .addEquivalenceGroup(mock(Key.class)) 21 | .addEmptyDigestRegressionTest(EmptySignature.obtain()) 22 | .test(); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /library/test/src/test/java/com/bumptech/glide/tests/GlideShadowLog.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.tests; 2 | 3 | import android.util.Log; 4 | import org.robolectric.annotation.Implementation; 5 | import org.robolectric.annotation.Implements; 6 | import org.robolectric.shadows.ShadowLog; 7 | 8 | /** 9 | * Exists only to "enable" logging for test coverage. 10 | * 11 | *

TODO: when we can ignore Log.* via configuration, remove this class. 12 | */ 13 | @Implements(Log.class) 14 | public class GlideShadowLog extends ShadowLog { 15 | 16 | @Implementation 17 | public static boolean isLoggable(String tag, int level) { 18 | return true; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /library/test/src/test/java/com/bumptech/glide/tests/TearDownGlide.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.tests; 2 | 3 | import com.bumptech.glide.Glide; 4 | import org.junit.rules.TestRule; 5 | import org.junit.runner.Description; 6 | import org.junit.runners.model.Statement; 7 | 8 | /** Clears out Glide's disk cache and the Glide singleton after every test method. */ 9 | public final class TearDownGlide implements TestRule { 10 | @Override 11 | public Statement apply(final Statement base, Description description) { 12 | return new Statement() { 13 | @Override 14 | public void evaluate() throws Throwable { 15 | try { 16 | base.evaluate(); 17 | } finally { 18 | Glide.tearDown(); 19 | } 20 | } 21 | }; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /library/test/src/test/java/opengles/GL.java: -------------------------------------------------------------------------------- 1 | package javax.microedition.khronos.opengles; 2 | 3 | /** 4 | * TODO: Figure out why this is necessary and remove it. See: 5 | * https://github.com/robolectric/robolectric-gradle-plugin/issues/145 6 | */ 7 | public interface GL {} 8 | -------------------------------------------------------------------------------- /library/test/src/test/resources/animated_avif.avif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/library/test/src/test/resources/animated_avif.avif -------------------------------------------------------------------------------- /library/test/src/test/resources/animated_webp.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/library/test/src/test/resources/animated_webp.webp -------------------------------------------------------------------------------- /library/test/src/test/resources/issue387_rotated_jpeg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/library/test/src/test/resources/issue387_rotated_jpeg.jpg -------------------------------------------------------------------------------- /library/test/src/test/resources/org.robolectric.Config.properties: -------------------------------------------------------------------------------- 1 | # Exists only to "enable" logging for test coverage. 2 | # TODO: when we can ignore Log.* via configuration, remove this line. 3 | shadows=com.bumptech.glide.tests.GlideShadowLog 4 | -------------------------------------------------------------------------------- /library/test/src/test/resources/short_exif_sample.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/library/test/src/test/resources/short_exif_sample.jpg -------------------------------------------------------------------------------- /library/test/src/test/resources/small_gainmap_image.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/library/test/src/test/resources/small_gainmap_image.jpg -------------------------------------------------------------------------------- /library/test/src/test/resources/test.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/library/test/src/test/resources/test.gif -------------------------------------------------------------------------------- /mocks/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | dependencies { 4 | implementation project(':library') 5 | implementation libs.androidx.annotation 6 | implementation libs.guava 7 | implementation libs.mockito 8 | } 9 | 10 | android { 11 | namespace 'com.bumptech.glide.mocks' 12 | compileSdkVersion libs.versions.compile.sdk.version.get() 13 | 14 | defaultConfig { 15 | minSdk libs.versions.min.sdk.version.get() as int 16 | targetSdk libs.versions.target.sdk.version.get() as int 17 | 18 | versionName = VERSION_NAME as String 19 | } 20 | 21 | compileOptions { 22 | sourceCompatibility JavaVersion.VERSION_1_8 23 | targetCompatibility JavaVersion.VERSION_1_8 24 | } 25 | } 26 | 27 | apply from: "${rootProject.projectDir}/scripts/upload.gradle" 28 | -------------------------------------------------------------------------------- /mocks/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=Glide mocks 2 | POM_ARTIFACT_ID=mocks 3 | POM_PACKAGING=aar 4 | POM_DESCRIPTION=A set of mocks to ease testing with Glide 5 | 6 | JAR_PREFIX=glide- 7 | JAR_POSTFIX= 8 | -------------------------------------------------------------------------------- /mocks/lint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "extends": [ 4 | "config:recommended" 5 | ], 6 | "semanticCommits": "disabled", 7 | "packageRules": [ 8 | { 9 | "matchUpdateTypes": ["minor", "patch", "pin", "digest"], 10 | "automerge": true, 11 | "automergeType": "branch" 12 | } 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /samples/contacturi/lint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /samples/contacturi/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 11 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /samples/contacturi/src/main/java/com/bumptech/glide/samples/contacturi/ContactUriModule.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.samples.contacturi; 2 | 3 | import com.bumptech.glide.annotation.GlideModule; 4 | import com.bumptech.glide.module.AppGlideModule; 5 | 6 | /** Ensures that Glide's generated API is created for the Contact Uri sample. */ 7 | @GlideModule 8 | public class ContactUriModule extends AppGlideModule { 9 | // Intentionally empty. 10 | } 11 | -------------------------------------------------------------------------------- /samples/contacturi/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16dp 4 | 16dp 5 | 6 | -------------------------------------------------------------------------------- /samples/contacturi/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | ContactUri Sample 4 | Pick Contact 5 | Image based on contact Uri, best size on latest Android 6 | Image based on lookup Uri, same as contact Uri 7 | Image based on photo Uri, thumbnail sized, usually 96x96px 8 | Image based on display photo Uri, possibly 512x512px 9 | Find by phone number 10 | Find 11 | 12 | -------------------------------------------------------------------------------- /samples/flickr/lint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /samples/flickr/src/main/java/com/bumptech/glide/samples/flickr/PhotoViewer.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.samples.flickr; 2 | 3 | import com.bumptech.glide.samples.flickr.api.Photo; 4 | import java.util.List; 5 | 6 | /** 7 | * An interface for an object that displays {@link com.bumptech.glide.samples.flickr.api.Photo} 8 | * objects. 9 | */ 10 | interface PhotoViewer { 11 | /** 12 | * Called whenever new {@link com.bumptech.glide.samples.flickr.api.Photo}s are loaded. 13 | * 14 | * @param photos The loaded photos. 15 | */ 16 | void onPhotosUpdated(List photos); 17 | } 18 | -------------------------------------------------------------------------------- /samples/flickr/src/main/java/com/bumptech/glide/samples/flickr/api/Query.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.samples.flickr.api; 2 | 3 | import android.os.Parcelable; 4 | 5 | /** An interface representing a query in Flickr's API that returns a list of photos. */ 6 | public interface Query extends Parcelable { 7 | /** A user facing description of the query. */ 8 | String getDescription(); 9 | 10 | /** The url to use to execute the query. */ 11 | String getUrl(); 12 | } 13 | -------------------------------------------------------------------------------- /samples/flickr/src/main/res/layout/flickr_photo_grid.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | -------------------------------------------------------------------------------- /samples/flickr/src/main/res/layout/flickr_photo_grid_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | -------------------------------------------------------------------------------- /samples/flickr/src/main/res/layout/flickr_photo_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /samples/flickr/src/main/res/layout/fullscreen_activity.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | -------------------------------------------------------------------------------- /samples/flickr/src/main/res/menu/search_activity.xml: -------------------------------------------------------------------------------- 1 | 2 |

4 | 9 | 10 | -------------------------------------------------------------------------------- /samples/flickr/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #B0000000 4 | 5 | -------------------------------------------------------------------------------- /samples/flickr/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 110dp 4 | 55dp 5 | 170dp 6 | 5dp 7 | 8dp 8 | 9 | 10 | -------------------------------------------------------------------------------- /samples/flickr/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Glide Flickr Demo 4 | Search 5 | Searching for \"%s\" on Flickr 6 | Search for \"%s\" failed, check your network connection and try again 7 | Small 8 | Medium 9 | List 10 | An image from the list of results for a search query 11 | Full screen view of an image 12 | 13 | -------------------------------------------------------------------------------- /samples/flickr/src/main/res/xml/network_security_config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | staticflickr.com 5 | 6 | 7 | -------------------------------------------------------------------------------- /samples/gallery/lint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /samples/gallery/src/main/java/com/bumptech/glide/samples/gallery/GalleryModule.kt: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.samples.gallery 2 | 3 | import android.content.Context 4 | import com.bumptech.glide.GlideBuilder 5 | import com.bumptech.glide.annotation.GlideModule 6 | import com.bumptech.glide.module.AppGlideModule 7 | 8 | /** Ensures that Glide's generated API is created for the Gallery sample. */ 9 | @GlideModule 10 | class GalleryModule : AppGlideModule() { 11 | override fun applyOptions(context: Context, builder: GlideBuilder) { 12 | super.applyOptions(context, builder) 13 | builder.setIsActiveResourceRetentionAllowed(true) 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /samples/gallery/src/main/res/layout/main_activity.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | -------------------------------------------------------------------------------- /samples/gallery/src/main/res/layout/recycler_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | -------------------------------------------------------------------------------- /samples/gallery/src/main/res/layout/recycler_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | -------------------------------------------------------------------------------- /samples/gallery/src/main/res/values/ids.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /samples/gallery/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | gallery 4 | Photo 5 | 6 | -------------------------------------------------------------------------------- /samples/giphy/lint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /samples/giphy/src/main/res/layout/fullscreen_activity.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | -------------------------------------------------------------------------------- /samples/giphy/src/main/res/layout/gif_list_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | -------------------------------------------------------------------------------- /samples/giphy/src/main/res/raw/large_giphy_logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/samples/giphy/src/main/res/raw/large_giphy_logo.gif -------------------------------------------------------------------------------- /samples/giphy/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 16dp 3 | 4 | -------------------------------------------------------------------------------- /samples/giphy/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | GiphySample 4 | An image from the list of results for a search query 5 | An animated version of the Giphy company logo 6 | Full screen view of an image 7 | 8 | -------------------------------------------------------------------------------- /samples/giphy/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /samples/imgur/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /samples/imgur/gradle.properties: -------------------------------------------------------------------------------- 1 | android.useAndroidX=true 2 | android.enableJetifier=true -------------------------------------------------------------------------------- /samples/imgur/lint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /samples/imgur/src/main/java/com/bumptech/glide/samples/imgur/ApplicationModule.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.samples.imgur; 2 | 3 | import dagger.Module; 4 | import dagger.Provides; 5 | import okhttp3.OkHttpClient; 6 | 7 | /** The Application Dagger module for the Imgur sample. */ 8 | @Module 9 | class ApplicationModule { 10 | @Provides 11 | OkHttpClient okHttpClient() { 12 | return new OkHttpClient(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /samples/imgur/src/main/java/com/bumptech/glide/samples/imgur/ImgurApplication.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.samples.imgur; 2 | 3 | import dagger.android.AndroidInjector; 4 | import dagger.android.DaggerApplication; 5 | 6 | /** Runs Dagger injection in the Imgur sample. */ 7 | public final class ImgurApplication extends DaggerApplication { 8 | @Override 9 | protected AndroidInjector applicationInjector() { 10 | return DaggerImgurApplicationComponent.create(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /samples/imgur/src/main/java/com/bumptech/glide/samples/imgur/ImgurApplicationComponent.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.samples.imgur; 2 | 3 | import com.bumptech.glide.samples.imgur.api.ApiModule; 4 | import dagger.Component; 5 | import dagger.android.AndroidInjectionModule; 6 | import dagger.android.AndroidInjector; 7 | import javax.inject.Singleton; 8 | 9 | /** Specifies Dagger modules for {@link ImgurApplication}. */ 10 | @Singleton 11 | @Component( 12 | modules = { 13 | AndroidInjectionModule.class, 14 | MainActivityModule.class, 15 | ApplicationModule.class, 16 | ApiModule.class 17 | }) 18 | public interface ImgurApplicationComponent extends AndroidInjector { 19 | // Empty. 20 | } 21 | -------------------------------------------------------------------------------- /samples/imgur/src/main/java/com/bumptech/glide/samples/imgur/ImgurGlideModule.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.samples.imgur; 2 | 3 | import com.bumptech.glide.annotation.GlideModule; 4 | import com.bumptech.glide.module.AppGlideModule; 5 | 6 | /** Generates a Glide API for the Imgur sample. */ 7 | @GlideModule(glideName = "ImgurGlide") 8 | public class ImgurGlideModule extends AppGlideModule { 9 | // Intentionally Empty. 10 | } 11 | -------------------------------------------------------------------------------- /samples/imgur/src/main/java/com/bumptech/glide/samples/imgur/MainActivityModule.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.samples.imgur; 2 | 3 | import dagger.Module; 4 | import dagger.android.ContributesAndroidInjector; 5 | 6 | @Module 7 | abstract class MainActivityModule { 8 | @ContributesAndroidInjector 9 | abstract MainActivity contributeMainActivityInjector(); 10 | } 11 | -------------------------------------------------------------------------------- /samples/imgur/src/main/java/com/bumptech/glide/samples/imgur/api/Gallery.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.samples.imgur.api; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * Represents Imgur's Gallery resource. 7 | * 8 | *

Populated automatically by GSON. 9 | */ 10 | final class Gallery { 11 | public List data; 12 | 13 | @Override 14 | public String toString() { 15 | return "Gallery{" + "data=" + data + '}'; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /samples/imgur/src/main/java/com/bumptech/glide/samples/imgur/api/Image.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.samples.imgur.api; 2 | 3 | /** 4 | * Represents Imgur's Image resource. 5 | * 6 | *

Populated automatically by GSON 7 | */ 8 | public final class Image { 9 | private String id; 10 | public String title; 11 | public String description; 12 | public String link; 13 | boolean is_album; 14 | 15 | @Override 16 | public String toString() { 17 | return "Image{" 18 | + "id='" 19 | + id 20 | + '\'' 21 | + ", title='" 22 | + title 23 | + '\'' 24 | + ", description='" 25 | + description 26 | + '\'' 27 | + ", link='" 28 | + link 29 | + '\'' 30 | + ", is_album='" 31 | + is_album 32 | + '\'' 33 | + '}'; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /samples/imgur/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 13 | 14 | -------------------------------------------------------------------------------- /samples/imgur/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/samples/imgur/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /samples/imgur/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/samples/imgur/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /samples/imgur/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/samples/imgur/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /samples/imgur/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/samples/imgur/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /samples/imgur/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/samples/imgur/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /samples/imgur/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/samples/imgur/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /samples/imgur/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/samples/imgur/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /samples/imgur/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/samples/imgur/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /samples/imgur/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/samples/imgur/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /samples/imgur/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/samples/imgur/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /samples/imgur/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #FF4081 6 | 7 | -------------------------------------------------------------------------------- /samples/imgur/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Imgur 3 | 4 | -------------------------------------------------------------------------------- /samples/imgur/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /samples/imgur/src/main/res/xml/network_security_config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | imgur.com 5 | 6 | 7 | -------------------------------------------------------------------------------- /samples/svg/lint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /samples/svg/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 10 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /samples/svg/src/main/res/drawable/image_loading.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 12 | 13 | -------------------------------------------------------------------------------- /samples/svg/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/samples/svg/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /samples/svg/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/samples/svg/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /samples/svg/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/samples/svg/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /samples/svg/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/samples/svg/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /samples/svg/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/samples/svg/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /samples/svg/src/main/res/values-w820dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 64dp 6 | 7 | -------------------------------------------------------------------------------- /samples/svg/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16dp 4 | 16dp 5 | 6 | -------------------------------------------------------------------------------- /samples/svg/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SVGSample 4 | An Android robot playing with a blue linen should appear below after a \"dot dot dot\" loading image on both the left and the right side. The left is loaded from a raw resource and the right is from the internet. Click here to clear all caches. 5 | Click to cycle scale type (current: %1$s) 6 | An android playing with blue linen 7 | 8 | -------------------------------------------------------------------------------- /scripts/android-wait-for-emulator.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Originally written by Ralf Kistner , but placed in the public domain 4 | 5 | set +e 6 | 7 | bootanim="" 8 | failcounter=0 9 | timeout_in_sec=360 10 | 11 | until [[ "$bootanim" =~ "stopped" ]]; do 12 | bootanim=`adb -e shell getprop init.svc.bootanim 2>&1 &` 13 | if [[ "$bootanim" =~ "device not found" || "$bootanim" =~ "device offline" 14 | || "$bootanim" =~ "running" ]]; then 15 | let "failcounter += 1" 16 | echo "Waiting for emulator to start" 17 | if [[ $failcounter -gt timeout_in_sec ]]; then 18 | echo "Timeout ($timeout_in_sec seconds) reached; failed to start emulator" 19 | exit 1 20 | fi 21 | fi 22 | sleep 1 23 | done 24 | 25 | echo "Emulator is ready" 26 | -------------------------------------------------------------------------------- /scripts/install_firebase.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | 5 | openssl aes-256-cbc -K $encrypted_ad2664a1c4dd_key -iv $encrypted_ad2664a1c4dd_iv -in $GCLOUD_FILE -out gcloud.json -d 6 | 7 | wget https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-176.0.0-linux-x86_64.tar.gz 8 | tar xf google-cloud-sdk-176.0.0-linux-x86_64.tar.gz 9 | echo "y" | ./google-cloud-sdk/bin/gcloud components update beta 10 | ./google-cloud-sdk/bin/gcloud auth activate-service-account --key-file gcloud.json 11 | -------------------------------------------------------------------------------- /static/glide_circle_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/static/glide_circle_logo.png -------------------------------------------------------------------------------- /static/glide_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/static/glide_logo.png -------------------------------------------------------------------------------- /static/logo-styles.css: -------------------------------------------------------------------------------- 1 | .library-name a { 2 | position: relative; 3 | --logo-width: 75px; 4 | margin-left: calc(var(--logo-width) + 5px); 5 | } 6 | 7 | .library-name a::before { 8 | content: ''; 9 | background: url("../images/glide_circle_logo.png") center no-repeat; 10 | background-size: contain; 11 | position: absolute; 12 | width: var(--logo-width); 13 | height: 50px; 14 | top: -18px; 15 | left: calc(-1 * var(--logo-width) - 5px); 16 | /* other styles required to make your page pretty */ 17 | } -------------------------------------------------------------------------------- /testutil/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | dependencies { 4 | implementation libs.truth 5 | implementation project(":library") 6 | api libs.androidx.annotation 7 | api libs.androidx.core 8 | api libs.androidx.test.core 9 | } 10 | 11 | android { 12 | namespace 'com.bumptech.glide.testutil' 13 | compileSdkVersion libs.versions.compile.sdk.version.get() 14 | 15 | defaultConfig { 16 | minSdk libs.versions.min.sdk.version.get() as int 17 | targetSdk libs.versions.target.sdk.version.get() as int 18 | versionName VERSION_NAME as String 19 | } 20 | 21 | compileOptions { 22 | sourceCompatibility JavaVersion.VERSION_11 23 | targetCompatibility JavaVersion.VERSION_11 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /testutil/src/main/java/com/bumptech/glide/RobolectricConstants.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide; 2 | 3 | public class RobolectricConstants { 4 | /** The default SDK used for Robolectric tests */ 5 | public static final int ROBOLECTRIC_SDK = 21; 6 | } 7 | -------------------------------------------------------------------------------- /testutil/src/main/java/com/bumptech/glide/testutil/TestResourceUtil.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.testutil; 2 | 3 | import java.io.InputStream; 4 | 5 | /** Test only utility for opening resources in androidTest/resources. */ 6 | public final class TestResourceUtil { 7 | private TestResourceUtil() { 8 | // Utility class 9 | } 10 | 11 | /** 12 | * Returns an InputStream for the given test class and sub-path. 13 | * 14 | * @param testClass A Junit test class. 15 | * @param subPath The sub-path under androidTest/resources where the desired resource is located. 16 | * Should not be prefixed with a '/' 17 | */ 18 | public static InputStream openResource(Class testClass, String subPath) { 19 | return testClass.getResourceAsStream("/" + subPath); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /third_party/disklrucache/.gitignore: -------------------------------------------------------------------------------- 1 | #Eclipse 2 | .project 3 | .classpath 4 | .settings 5 | .checkstyle 6 | 7 | #IntelliJ IDEA 8 | .idea 9 | *.iml 10 | *.ipr 11 | *.iws 12 | 13 | #Maven 14 | target 15 | release.properties 16 | pom.xml.* 17 | 18 | #OSX 19 | .DS_Store 20 | 21 | #gradle 22 | build/** 23 | .gradle/** 24 | -------------------------------------------------------------------------------- /third_party/disklrucache/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2012 Jake Wharton 2 | Copyright 2011 The Android Open Source Project 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | -------------------------------------------------------------------------------- /third_party/disklrucache/THIRD_PARTY.md: -------------------------------------------------------------------------------- 1 | URL: https://github.com/JakeWharton/DiskLruCache/tarball/7a1ecbd38d2ad0873fb843e911d60235b7434acb 2 | Version: 7a1ecbd38d2ad0873fb843e911d60235b7434acb 3 | License: Apache 2.0 4 | License File: LICENSE 5 | 6 | Description: 7 | Java implementation of a Disk-based LRU cache which specifically targets Android compatibility. 8 | 9 | Local Modifications: 10 | Exposed File objects directly to gets, removed key validation, removed test sources. 11 | -------------------------------------------------------------------------------- /third_party/disklrucache/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=Glide Disk LRU Cache Library 2 | POM_ARTIFACT_ID=disklrucache 3 | POM_PACKAGING=jar 4 | POM_DESCRIPTION=A cache that uses a bounded amount of space on a filesystem. Based on Jake Wharton's tailored for Glide. 5 | -------------------------------------------------------------------------------- /third_party/gif_decoder/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | dependencies { 4 | implementation libs.androidx.annotation 5 | 6 | testImplementation project(':testutil') 7 | testImplementation libs.androidx.annotation 8 | testImplementation libs.truth 9 | testImplementation libs.junit 10 | testImplementation libs.mockito 11 | testImplementation libs.robolectric 12 | } 13 | 14 | android { 15 | namespace 'com.bumptech.glide.gifdecoder' 16 | compileSdkVersion libs.versions.compile.sdk.version.get() 17 | 18 | defaultConfig { 19 | minSdk libs.versions.min.sdk.version.get() as int 20 | targetSdk libs.versions.target.sdk.version.get() as int 21 | } 22 | } 23 | 24 | apply from: "${rootProject.projectDir}/scripts/upload.gradle" 25 | -------------------------------------------------------------------------------- /third_party/gif_decoder/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=Glide GIF Decoder Library 2 | POM_ARTIFACT_ID=gifdecoder 3 | POM_PACKAGING=aar 4 | POM_DESCRIPTION=Implementation of GifDecoder that is more memory efficient to animate for Android devices. 5 | -------------------------------------------------------------------------------- /third_party/gif_decoder/lint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /third_party/gif_decoder/src/test/resources/gif_netscape_iteration_0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/third_party/gif_decoder/src/test/resources/gif_netscape_iteration_0.gif -------------------------------------------------------------------------------- /third_party/gif_decoder/src/test/resources/gif_netscape_iteration_1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/third_party/gif_decoder/src/test/resources/gif_netscape_iteration_1.gif -------------------------------------------------------------------------------- /third_party/gif_decoder/src/test/resources/gif_netscape_iteration_255.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/third_party/gif_decoder/src/test/resources/gif_netscape_iteration_255.gif -------------------------------------------------------------------------------- /third_party/gif_decoder/src/test/resources/gif_netscape_iteration_256.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/third_party/gif_decoder/src/test/resources/gif_netscape_iteration_256.gif -------------------------------------------------------------------------------- /third_party/gif_decoder/src/test/resources/gif_netscape_iteration_65535.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/third_party/gif_decoder/src/test/resources/gif_netscape_iteration_65535.gif -------------------------------------------------------------------------------- /third_party/gif_decoder/src/test/resources/gif_without_graphical_control_extension.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/third_party/gif_decoder/src/test/resources/gif_without_graphical_control_extension.gif -------------------------------------------------------------------------------- /third_party/gif_decoder/src/test/resources/gif_without_netscape_iteration.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/third_party/gif_decoder/src/test/resources/gif_without_netscape_iteration.gif -------------------------------------------------------------------------------- /third_party/gif_decoder/src/test/resources/partial_gif_decode.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/third_party/gif_decoder/src/test/resources/partial_gif_decode.gif -------------------------------------------------------------------------------- /third_party/gif_decoder/src/test/resources/transparent_disposal_background.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/third_party/gif_decoder/src/test/resources/transparent_disposal_background.gif -------------------------------------------------------------------------------- /third_party/gif_decoder/src/test/resources/transparent_disposal_none.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/third_party/gif_decoder/src/test/resources/transparent_disposal_none.gif -------------------------------------------------------------------------------- /third_party/gif_decoder/src/test/resources/white_black_row.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bumptech/glide/8a23b1e5db8c03330a898164df5c4fa7f90fc058/third_party/gif_decoder/src/test/resources/white_black_row.gif -------------------------------------------------------------------------------- /third_party/gif_encoder/THIRD_PARTY.md: -------------------------------------------------------------------------------- 1 | URL: http://java2s.com/Code/Java/2D-Graphics-GUI/AnimatedGifEncoder.htm 2 | Version: Downloaded 9/4/2014. 3 | License: Notice 4 | License File: LICENSE 5 | 6 | Description: 7 | Android port of a GIF encoder. 8 | 9 | See also: 10 | http://members.ozemail.com.au/~dekker/NEUQUANT.HTML 11 | 12 | Local Modifications: 13 | Converted BufferedImage to Android's Bitmap class, split apart classes into individual files. 14 | Support setting transIndex based on the presence of transparent pixels in the Bitmap. 15 | -------------------------------------------------------------------------------- /third_party/gif_encoder/lint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /third_party/gradle.properties: -------------------------------------------------------------------------------- 1 | # Prefix and postfix for source and javadoc jars. 2 | JAR_PREFIX=glide- 3 | JAR_POSTFIX=-thirdparty 4 | --------------------------------------------------------------------------------