gitextract_9qydnqng/ ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yml │ │ └── feature_request.yml │ ├── dependabot.yml │ └── workflows/ │ ├── android.yml │ ├── android_foss.yml │ ├── android_market.yml │ └── tb_release.yml ├── .gitignore ├── ARCHITECTURE.md ├── ARCHITECTURE_2 ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── app/ │ ├── .gitignore │ ├── build.gradle.kts │ ├── proguard-rules.pro │ └── src/ │ ├── main/ │ │ ├── AndroidManifest.xml │ │ ├── java/ │ │ │ └── com/ │ │ │ └── t8rin/ │ │ │ └── imagetoolbox/ │ │ │ └── app/ │ │ │ └── presentation/ │ │ │ ├── AppActivity.kt │ │ │ └── components/ │ │ │ ├── ImageToolboxApplication.kt │ │ │ ├── functions/ │ │ │ │ ├── AttachLogWriter.kt │ │ │ │ ├── InitCollages.kt │ │ │ │ ├── InitColorNames.kt │ │ │ │ ├── InitNeuralTool.kt │ │ │ │ ├── InitOpenCV.kt │ │ │ │ ├── InitPdfBox.kt │ │ │ │ ├── InitQrScanner.kt │ │ │ │ ├── InjectBaseComponent.kt │ │ │ │ ├── RegisterSecurityProviders.kt │ │ │ │ └── SetupFlags.kt │ │ │ └── utils/ │ │ │ └── GetProcessName.kt │ │ └── res/ │ │ └── resources.properties │ └── market/ │ ├── debug/ │ │ └── google-services.json │ └── release/ │ └── google-services.json ├── benchmark/ │ ├── .gitignore │ ├── build.gradle.kts │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ └── java/ │ └── com/ │ └── t8rin/ │ └── imagetoolbox/ │ └── benchmark/ │ └── BaselineProfileGenerator.kt ├── build-logic/ │ ├── .gitignore │ ├── convention/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ └── kotlin/ │ │ ├── ImageToolboxApplicationPlugin.kt │ │ ├── ImageToolboxHiltPlugin.kt │ │ ├── ImageToolboxLibraryComposePlugin.kt │ │ ├── ImageToolboxLibraryFeaturePlugin.kt │ │ ├── ImageToolboxLibraryPlugin.kt │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ ├── ConfigureCompose.kt │ │ ├── ConfigureDetekt.kt │ │ ├── ConfigureKotlinAndroid.kt │ │ └── ProjectExtensions.kt │ └── settings.gradle.kts ├── build.gradle.kts ├── compose_compiler_config.conf ├── core/ │ ├── crash/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ ├── foss/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── t8rin/ │ │ │ └── imagetoolbox/ │ │ │ └── core/ │ │ │ └── crash/ │ │ │ └── data/ │ │ │ └── AnalyticsManagerImpl.kt │ │ ├── main/ │ │ │ ├── AndroidManifest.xml │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── t8rin/ │ │ │ └── imagetoolbox/ │ │ │ └── core/ │ │ │ └── crash/ │ │ │ ├── di/ │ │ │ │ └── CrashModule.kt │ │ │ └── presentation/ │ │ │ ├── CrashActivity.kt │ │ │ ├── components/ │ │ │ │ ├── CrashActionButtons.kt │ │ │ │ ├── CrashAttentionCard.kt │ │ │ │ ├── CrashBottomButtons.kt │ │ │ │ ├── CrashHandler.kt │ │ │ │ ├── CrashInfoCard.kt │ │ │ │ ├── CrashRootContent.kt │ │ │ │ └── GlobalExceptionHandler.kt │ │ │ └── screenLogic/ │ │ │ └── CrashComponent.kt │ │ └── market/ │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── core/ │ │ └── crash/ │ │ └── data/ │ │ └── AnalyticsManagerImpl.kt │ ├── data/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── core/ │ │ └── data/ │ │ ├── coil/ │ │ │ ├── Base64Fetcher.kt │ │ │ ├── CoilLogger.kt │ │ │ ├── MemoryCache.kt │ │ │ ├── PdfDecoder.kt │ │ │ ├── TiffDecoder.kt │ │ │ ├── TimeMeasureInterceptor.kt │ │ │ └── UpscaleSvgDecoder.kt │ │ ├── coroutines/ │ │ │ ├── AndroidDispatchersHolder.kt │ │ │ └── AppScopeImpl.kt │ │ ├── di/ │ │ │ ├── CoroutinesModule.kt │ │ │ ├── ImageLoaderModule.kt │ │ │ ├── ImageModule.kt │ │ │ ├── JsonModule.kt │ │ │ ├── LocalModule.kt │ │ │ ├── RemoteModule.kt │ │ │ ├── ResourcesModule.kt │ │ │ └── SavingModule.kt │ │ ├── image/ │ │ │ ├── AndroidImageCompressor.kt │ │ │ ├── AndroidImageGetter.kt │ │ │ ├── AndroidImagePreviewCreator.kt │ │ │ ├── AndroidImageScaler.kt │ │ │ ├── AndroidImageTransformer.kt │ │ │ ├── AndroidMetadata.kt │ │ │ ├── AndroidShareProvider.kt │ │ │ └── utils/ │ │ │ ├── BlendingModeExt.kt │ │ │ ├── CanvasUtils.kt │ │ │ ├── ColorUtils.kt │ │ │ ├── ImageCompressorBackend.kt │ │ │ ├── StaticOptions.kt │ │ │ └── compressor/ │ │ │ ├── AvifBackend.kt │ │ │ ├── BmpBackend.kt │ │ │ ├── HeicBackend.kt │ │ │ ├── IcoBackend.kt │ │ │ ├── Jpeg2000Backend.kt │ │ │ ├── JpegliBackend.kt │ │ │ ├── JpgBackend.kt │ │ │ ├── JxlBackend.kt │ │ │ ├── MozJpegBackend.kt │ │ │ ├── OxiPngBackend.kt │ │ │ ├── PngLosslessBackend.kt │ │ │ ├── PngLossyBackend.kt │ │ │ ├── QoiBackend.kt │ │ │ ├── StaticGifBackend.kt │ │ │ ├── TiffBackend.kt │ │ │ └── WebpBackend.kt │ │ ├── json/ │ │ │ └── MoshiParser.kt │ │ ├── remote/ │ │ │ ├── AndroidDownloadManager.kt │ │ │ └── AndroidRemoteResourcesStore.kt │ │ ├── resource/ │ │ │ └── AndroidResourceManager.kt │ │ ├── saving/ │ │ │ ├── AndroidFileController.kt │ │ │ ├── AndroidFilenameCreator.kt │ │ │ ├── AndroidKeepAliveService.kt │ │ │ ├── KeepAliveForegroundService.kt │ │ │ ├── SaveException.kt │ │ │ ├── SavingFolder.kt │ │ │ └── io/ │ │ │ ├── FileWriteable.kt │ │ │ ├── StreamWriteable.kt │ │ │ └── UriReadable.kt │ │ └── utils/ │ │ ├── BitmapUtils.kt │ │ ├── ChecksumUtils.kt │ │ ├── CoilUtils.kt │ │ ├── ContextUtils.kt │ │ ├── CoroutinesUtils.kt │ │ ├── FileUtils.kt │ │ ├── HttpClientUtils.kt │ │ └── WriteableUtils.kt │ ├── di/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── core/ │ │ └── di/ │ │ ├── EntryPointUtils.kt │ │ └── Qualifiers.kt │ ├── domain/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── kotlin/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── core/ │ │ └── domain/ │ │ ├── Constants.kt │ │ ├── coroutines/ │ │ │ ├── AppScope.kt │ │ │ └── DispatchersHolder.kt │ │ ├── image/ │ │ │ ├── ImageCompressor.kt │ │ │ ├── ImageGetter.kt │ │ │ ├── ImagePreviewCreator.kt │ │ │ ├── ImageScaler.kt │ │ │ ├── ImageShareProvider.kt │ │ │ ├── ImageTransformer.kt │ │ │ ├── Metadata.kt │ │ │ ├── ShareProvider.kt │ │ │ └── model/ │ │ │ ├── BlendingMode.kt │ │ │ ├── ImageData.kt │ │ │ ├── ImageFormat.kt │ │ │ ├── ImageFormatGroup.kt │ │ │ ├── ImageFrames.kt │ │ │ ├── ImageInfo.kt │ │ │ ├── ImageScaleMode.kt │ │ │ ├── ImageWithSize.kt │ │ │ ├── MetadataTag.kt │ │ │ ├── Preset.kt │ │ │ ├── Quality.kt │ │ │ ├── ResizeAnchor.kt │ │ │ ├── ResizeType.kt │ │ │ └── TiffCompressionScheme.kt │ │ ├── json/ │ │ │ └── JsonParser.kt │ │ ├── model/ │ │ │ ├── CipherType.kt │ │ │ ├── ColorModel.kt │ │ │ ├── DomainAspectRatio.kt │ │ │ ├── ExtraDataType.kt │ │ │ ├── FileModel.kt │ │ │ ├── FloatSize.kt │ │ │ ├── HashingType.kt │ │ │ ├── ImageModel.kt │ │ │ ├── IntegerSize.kt │ │ │ ├── MimeType.kt │ │ │ ├── OffsetModel.kt │ │ │ ├── Outline.kt │ │ │ ├── PerformanceClass.kt │ │ │ ├── Position.kt │ │ │ ├── Pt.kt │ │ │ ├── QrType.kt │ │ │ ├── RectModel.kt │ │ │ ├── SecureAlgorithmsMapping.kt │ │ │ ├── SortType.kt │ │ │ ├── SystemBarsVisibility.kt │ │ │ └── VisibilityOwner.kt │ │ ├── remote/ │ │ │ ├── AnalyticsManager.kt │ │ │ ├── Cache.kt │ │ │ ├── DownloadManager.kt │ │ │ ├── DownloadProgress.kt │ │ │ ├── RemoteResources.kt │ │ │ └── RemoteResourcesStore.kt │ │ ├── resource/ │ │ │ └── ResourceManager.kt │ │ ├── saving/ │ │ │ ├── FileController.kt │ │ │ ├── FilenameCreator.kt │ │ │ ├── KeepAliveService.kt │ │ │ ├── ObjectSaver.kt │ │ │ ├── RandomStringGenerator.kt │ │ │ ├── io/ │ │ │ │ ├── IoCloseable.kt │ │ │ │ ├── Readable.kt │ │ │ │ └── Writeable.kt │ │ │ └── model/ │ │ │ ├── FileSaveTarget.kt │ │ │ ├── FilenamePattern.kt │ │ │ ├── ImageSaveTarget.kt │ │ │ ├── SaveResult.kt │ │ │ └── SaveTarget.kt │ │ ├── transformation/ │ │ │ ├── ChainTransformation.kt │ │ │ ├── GenericTransformation.kt │ │ │ └── Transformation.kt │ │ └── utils/ │ │ ├── ByteUtils.kt │ │ ├── Delegates.kt │ │ ├── FileMode.kt │ │ ├── Flavor.kt │ │ ├── IntUtils.kt │ │ ├── KotlinUtils.kt │ │ ├── ListUtils.kt │ │ ├── ProgressInputStream.kt │ │ ├── Quad.kt │ │ ├── Rounding.kt │ │ ├── SmartJob.kt │ │ ├── StringUtils.kt │ │ └── TimeUtils.kt │ ├── filters/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── core/ │ │ └── filters/ │ │ ├── data/ │ │ │ └── SideFadePaint.kt │ │ ├── domain/ │ │ │ ├── FilterParamsInteractor.kt │ │ │ ├── FilterProvider.kt │ │ │ └── model/ │ │ │ ├── Filter.kt │ │ │ ├── FilterParam.kt │ │ │ ├── FilterUtils.kt │ │ │ ├── FilterValueWrapper.kt │ │ │ ├── TemplateFilter.kt │ │ │ ├── enums/ │ │ │ │ ├── BlurEdgeMode.kt │ │ │ │ ├── ColorMapType.kt │ │ │ │ ├── FadeSide.kt │ │ │ │ ├── MirrorSide.kt │ │ │ │ ├── PaletteTransferSpace.kt │ │ │ │ ├── PolarCoordinatesType.kt │ │ │ │ ├── PopArtBlendingMode.kt │ │ │ │ ├── SpotHealMode.kt │ │ │ │ └── TransferFunc.kt │ │ │ └── params/ │ │ │ ├── ArcParams.kt │ │ │ ├── AsciiParams.kt │ │ │ ├── BilaterialBlurParams.kt │ │ │ ├── BloomParams.kt │ │ │ ├── ChannelMixParams.kt │ │ │ ├── ClaheParams.kt │ │ │ ├── CropOrPerspectiveParams.kt │ │ │ ├── EnhancedZoomBlurParams.kt │ │ │ ├── GlitchParams.kt │ │ │ ├── KaleidoscopeParams.kt │ │ │ ├── LinearGaussianParams.kt │ │ │ ├── LinearTiltShiftParams.kt │ │ │ ├── PinchParams.kt │ │ │ ├── RadialTiltShiftParams.kt │ │ │ ├── RubberStampParams.kt │ │ │ ├── SideFadeParams.kt │ │ │ ├── SmearParams.kt │ │ │ ├── SparkleParams.kt │ │ │ ├── ToneCurvesParams.kt │ │ │ ├── VoronoiCrystallizeParams.kt │ │ │ └── WaterParams.kt │ │ └── presentation/ │ │ ├── model/ │ │ │ ├── UiAcesFilmicToneMappingFilter.kt │ │ │ ├── UiAcesHillToneMappingFilter.kt │ │ │ ├── UiAchromatomalyFilter.kt │ │ │ ├── UiAchromatopsiaFilter.kt │ │ │ ├── UiAldridgeFilter.kt │ │ │ ├── UiAmatorkaFilter.kt │ │ │ ├── UiAnaglyphFilter.kt │ │ │ ├── UiAnisotropicDiffusionFilter.kt │ │ │ ├── UiArcFilter.kt │ │ │ ├── UiAsciiFilter.kt │ │ │ ├── UiAtkinsonDitheringFilter.kt │ │ │ ├── UiAutoCropFilter.kt │ │ │ ├── UiAutoPerspectiveFilter.kt │ │ │ ├── UiAutoRemoveRedEyesFilter.kt │ │ │ ├── UiAutumnTonesFilter.kt │ │ │ ├── UiAverageDistanceFilter.kt │ │ │ ├── UiBayerEightDitheringFilter.kt │ │ │ ├── UiBayerFourDitheringFilter.kt │ │ │ ├── UiBayerThreeDitheringFilter.kt │ │ │ ├── UiBayerTwoDitheringFilter.kt │ │ │ ├── UiBilaterialBlurFilter.kt │ │ │ ├── UiBlackAndWhiteFilter.kt │ │ │ ├── UiBlackHatFilter.kt │ │ │ ├── UiBleachBypassFilter.kt │ │ │ ├── UiBlockGlitchFilter.kt │ │ │ ├── UiBloomFilter.kt │ │ │ ├── UiBokehFilter.kt │ │ │ ├── UiBorderFrameFilter.kt │ │ │ ├── UiBoxBlurFilter.kt │ │ │ ├── UiBrightnessFilter.kt │ │ │ ├── UiBrowniFilter.kt │ │ │ ├── UiBulgeDistortionFilter.kt │ │ │ ├── UiBurkesDitheringFilter.kt │ │ │ ├── UiCGAColorSpaceFilter.kt │ │ │ ├── UiCandlelightFilter.kt │ │ │ ├── UiCannyFilter.kt │ │ │ ├── UiCaramelDarknessFilter.kt │ │ │ ├── UiCelluloidFilter.kt │ │ │ ├── UiChannelMixFilter.kt │ │ │ ├── UiCircleBlurFilter.kt │ │ │ ├── UiCirclePixelationFilter.kt │ │ │ ├── UiClaheFilter.kt │ │ │ ├── UiClaheHSLFilter.kt │ │ │ ├── UiClaheHSVFilter.kt │ │ │ ├── UiClaheJzazbzFilter.kt │ │ │ ├── UiClaheLABFilter.kt │ │ │ ├── UiClaheLUVFilter.kt │ │ │ ├── UiClaheOklabFilter.kt │ │ │ ├── UiClaheOklchFilter.kt │ │ │ ├── UiClosingFilter.kt │ │ │ ├── UiClustered2x2DitheringFilter.kt │ │ │ ├── UiClustered4x4DitheringFilter.kt │ │ │ ├── UiClustered8x8DitheringFilter.kt │ │ │ ├── UiCodaChromeFilter.kt │ │ │ ├── UiCoffeeFilter.kt │ │ │ ├── UiColorAnomalyFilter.kt │ │ │ ├── UiColorBalanceFilter.kt │ │ │ ├── UiColorExplosionFilter.kt │ │ │ ├── UiColorHalftoneFilter.kt │ │ │ ├── UiColorMapFilter.kt │ │ │ ├── UiColorMatrix3x3Filter.kt │ │ │ ├── UiColorMatrix4x4Filter.kt │ │ │ ├── UiColorOverlayFilter.kt │ │ │ ├── UiColorPosterFilter.kt │ │ │ ├── UiColorfulSwirlFilter.kt │ │ │ ├── UiContourFilter.kt │ │ │ ├── UiContrastFilter.kt │ │ │ ├── UiConvexFilter.kt │ │ │ ├── UiConvolution3x3Filter.kt │ │ │ ├── UiCoolFilter.kt │ │ │ ├── UiCopyMoveDetectionFilter.kt │ │ │ ├── UiCropOrPerspectiveFilter.kt │ │ │ ├── UiCropToContentFilter.kt │ │ │ ├── UiCrossBlurFilter.kt │ │ │ ├── UiCrossPixelizationFilter.kt │ │ │ ├── UiCrosshatchFilter.kt │ │ │ ├── UiCrtCurvatureFilter.kt │ │ │ ├── UiCrystallizeFilter.kt │ │ │ ├── UiCubeLutFilter.kt │ │ │ ├── UiCyberpunkFilter.kt │ │ │ ├── UiDeepPurpleFilter.kt │ │ │ ├── UiDehazeFilter.kt │ │ │ ├── UiDeskewFilter.kt │ │ │ ├── UiDespeckleFilter.kt │ │ │ ├── UiDeutaromalyFilter.kt │ │ │ ├── UiDeutaronotopiaFilter.kt │ │ │ ├── UiDiamondPixelationFilter.kt │ │ │ ├── UiDiffuseFilter.kt │ │ │ ├── UiDigitalCodeFilter.kt │ │ │ ├── UiDilationFilter.kt │ │ │ ├── UiDoGFilter.kt │ │ │ ├── UiDragoFilter.kt │ │ │ ├── UiDropBluesFilter.kt │ │ │ ├── UiEdgyAmberFilter.kt │ │ │ ├── UiElectricGradientFilter.kt │ │ │ ├── UiEmbossFilter.kt │ │ │ ├── UiEnhancedCirclePixelationFilter.kt │ │ │ ├── UiEnhancedDiamondPixelationFilter.kt │ │ │ ├── UiEnhancedGlitchFilter.kt │ │ │ ├── UiEnhancedOilFilter.kt │ │ │ ├── UiEnhancedPixelationFilter.kt │ │ │ ├── UiEnhancedZoomBlurFilter.kt │ │ │ ├── UiEqualizeFilter.kt │ │ │ ├── UiEqualizeHistogramAdaptiveFilter.kt │ │ │ ├── UiEqualizeHistogramAdaptiveHSLFilter.kt │ │ │ ├── UiEqualizeHistogramAdaptiveHSVFilter.kt │ │ │ ├── UiEqualizeHistogramAdaptiveLABFilter.kt │ │ │ ├── UiEqualizeHistogramAdaptiveLUVFilter.kt │ │ │ ├── UiEqualizeHistogramFilter.kt │ │ │ ├── UiEqualizeHistogramHSVFilter.kt │ │ │ ├── UiEqualizeHistogramPixelationFilter.kt │ │ │ ├── UiErodeFilter.kt │ │ │ ├── UiErrorLevelAnalysisFilter.kt │ │ │ ├── UiExposureFilter.kt │ │ │ ├── UiFallColorsFilter.kt │ │ │ ├── UiFalseColorFilter.kt │ │ │ ├── UiFalseFloydSteinbergDitheringFilter.kt │ │ │ ├── UiFantasyLandscapeFilter.kt │ │ │ ├── UiFastBilaterialBlurFilter.kt │ │ │ ├── UiFastBlurFilter.kt │ │ │ ├── UiFastGaussianBlur2DFilter.kt │ │ │ ├── UiFastGaussianBlur3DFilter.kt │ │ │ ├── UiFastGaussianBlur4DFilter.kt │ │ │ ├── UiFilmStock50Filter.kt │ │ │ ├── UiFilter.kt │ │ │ ├── UiFloydSteinbergDitheringFilter.kt │ │ │ ├── UiFoggyNightFilter.kt │ │ │ ├── UiFractalGlassFilter.kt │ │ │ ├── UiFuturisticGradientFilter.kt │ │ │ ├── UiGammaFilter.kt │ │ │ ├── UiGaussianBlurFilter.kt │ │ │ ├── UiGaussianBoxBlurFilter.kt │ │ │ ├── UiGlassSphereRefractionFilter.kt │ │ │ ├── UiGlitchFilter.kt │ │ │ ├── UiGlitchVariantFilter.kt │ │ │ ├── UiGlowFilter.kt │ │ │ ├── UiGoldenForestFilter.kt │ │ │ ├── UiGoldenHourFilter.kt │ │ │ ├── UiGothamFilter.kt │ │ │ ├── UiGrainFilter.kt │ │ │ ├── UiGrayscaleFilter.kt │ │ │ ├── UiGreenSunFilter.kt │ │ │ ├── UiGreenishFilter.kt │ │ │ ├── UiHDRFilter.kt │ │ │ ├── UiHableFilmicToneMappingFilter.kt │ │ │ ├── UiHalftoneFilter.kt │ │ │ ├── UiHazeFilter.kt │ │ │ ├── UiHejlBurgessToneMappingFilter.kt │ │ │ ├── UiHighlightsAndShadowsFilter.kt │ │ │ ├── UiHorizontalWindStaggerFilter.kt │ │ │ ├── UiHotSummerFilter.kt │ │ │ ├── UiHueFilter.kt │ │ │ ├── UiJarvisJudiceNinkeDitheringFilter.kt │ │ │ ├── UiKaleidoscopeFilter.kt │ │ │ ├── UiKodakFilter.kt │ │ │ ├── UiKuwaharaFilter.kt │ │ │ ├── UiLUT512x512Filter.kt │ │ │ ├── UiLaplacianFilter.kt │ │ │ ├── UiLaplacianSimpleFilter.kt │ │ │ ├── UiLavenderDreamFilter.kt │ │ │ ├── UiLeftToRightDitheringFilter.kt │ │ │ ├── UiLemonadeLightFilter.kt │ │ │ ├── UiLensCorrectionFilter.kt │ │ │ ├── UiLinearBoxBlurFilter.kt │ │ │ ├── UiLinearFastGaussianBlurFilter.kt │ │ │ ├── UiLinearFastGaussianBlurNextFilter.kt │ │ │ ├── UiLinearGaussianBlurFilter.kt │ │ │ ├── UiLinearGaussianBoxBlurFilter.kt │ │ │ ├── UiLinearStackBlurFilter.kt │ │ │ ├── UiLinearTentBlurFilter.kt │ │ │ ├── UiLinearTiltShiftFilter.kt │ │ │ ├── UiLogarithmicToneMappingFilter.kt │ │ │ ├── UiLookupFilter.kt │ │ │ ├── UiLowPolyFilter.kt │ │ │ ├── UiLuminanceGradientFilter.kt │ │ │ ├── UiMarbleFilter.kt │ │ │ ├── UiMedianBlurFilter.kt │ │ │ ├── UiMicroMacroPixelizationFilter.kt │ │ │ ├── UiMirrorFilter.kt │ │ │ ├── UiMissEtikateFilter.kt │ │ │ ├── UiMobiusFilter.kt │ │ │ ├── UiMoireFilter.kt │ │ │ ├── UiMonochromeFilter.kt │ │ │ ├── UiMorphologicalGradientFilter.kt │ │ │ ├── UiMotionBlurFilter.kt │ │ │ ├── UiNativeStackBlurFilter.kt │ │ │ ├── UiNegativeFilter.kt │ │ │ ├── UiNeonFilter.kt │ │ │ ├── UiNightMagicFilter.kt │ │ │ ├── UiNightVisionFilter.kt │ │ │ ├── UiNoiseFilter.kt │ │ │ ├── UiNonMaximumSuppressionFilter.kt │ │ │ ├── UiNucleusPixelizationFilter.kt │ │ │ ├── UiOffsetFilter.kt │ │ │ ├── UiOilFilter.kt │ │ │ ├── UiOldTvFilter.kt │ │ │ ├── UiOpacityFilter.kt │ │ │ ├── UiOpeningFilter.kt │ │ │ ├── UiOrangeHazeFilter.kt │ │ │ ├── UiOrbitalPixelizationFilter.kt │ │ │ ├── UiPaletteTransferFilter.kt │ │ │ ├── UiPaletteTransferVariantFilter.kt │ │ │ ├── UiPastelFilter.kt │ │ │ ├── UiPerlinDistortionFilter.kt │ │ │ ├── UiPinchFilter.kt │ │ │ ├── UiPinkDreamFilter.kt │ │ │ ├── UiPixelMeltFilter.kt │ │ │ ├── UiPixelationFilter.kt │ │ │ ├── UiPointillizeFilter.kt │ │ │ ├── UiPoissonBlurFilter.kt │ │ │ ├── UiPolarCoordinatesFilter.kt │ │ │ ├── UiPolaroidFilter.kt │ │ │ ├── UiPolkaDotFilter.kt │ │ │ ├── UiPopArtFilter.kt │ │ │ ├── UiPosterizeFilter.kt │ │ │ ├── UiProtanopiaFilter.kt │ │ │ ├── UiProtonomalyFilter.kt │ │ │ ├── UiPulseGridPixelizationFilter.kt │ │ │ ├── UiPurpleMistFilter.kt │ │ │ ├── UiQuantizierFilter.kt │ │ │ ├── UiRGBFilter.kt │ │ │ ├── UiRadialTiltShiftFilter.kt │ │ │ ├── UiRadialWeavePixelizationFilter.kt │ │ │ ├── UiRainbowWorldFilter.kt │ │ │ ├── UiRandomDitheringFilter.kt │ │ │ ├── UiRedSwirlFilter.kt │ │ │ ├── UiReduceNoiseFilter.kt │ │ │ ├── UiRemoveColorFilter.kt │ │ │ ├── UiReplaceColorFilter.kt │ │ │ ├── UiRetroYellowFilter.kt │ │ │ ├── UiRingBlurFilter.kt │ │ │ ├── UiRubberStampFilter.kt │ │ │ ├── UiSandPaintingFilter.kt │ │ │ ├── UiSaturationFilter.kt │ │ │ ├── UiSeamCarvingFilter.kt │ │ │ ├── UiSepiaFilter.kt │ │ │ ├── UiSharpenFilter.kt │ │ │ ├── UiShuffleBlurFilter.kt │ │ │ ├── UiSideFadeFilter.kt │ │ │ ├── UiSierraDitheringFilter.kt │ │ │ ├── UiSierraLiteDitheringFilter.kt │ │ │ ├── UiSimpleOldTvFilter.kt │ │ │ ├── UiSimpleSketchFilter.kt │ │ │ ├── UiSimpleSolarizeFilter.kt │ │ │ ├── UiSimpleThresholdDitheringFilter.kt │ │ │ ├── UiSimpleWeavePixelationFilter.kt │ │ │ ├── UiSketchFilter.kt │ │ │ ├── UiSmearFilter.kt │ │ │ ├── UiSmoothToonFilter.kt │ │ │ ├── UiSobelEdgeDetectionFilter.kt │ │ │ ├── UiSobelSimpleFilter.kt │ │ │ ├── UiSoftEleganceFilter.kt │ │ │ ├── UiSoftEleganceVariantFilter.kt │ │ │ ├── UiSoftSpringLightFilter.kt │ │ │ ├── UiSolarizeFilter.kt │ │ │ ├── UiSpacePortalFilter.kt │ │ │ ├── UiSparkleFilter.kt │ │ │ ├── UiSpectralFireFilter.kt │ │ │ ├── UiSphereLensDistortionFilter.kt │ │ │ ├── UiSphereRefractionFilter.kt │ │ │ ├── UiStackBlurFilter.kt │ │ │ ├── UiStaggeredPixelizationFilter.kt │ │ │ ├── UiStarBlurFilter.kt │ │ │ ├── UiStrokePixelationFilter.kt │ │ │ ├── UiStuckiDitheringFilter.kt │ │ │ ├── UiSunriseFilter.kt │ │ │ ├── UiSwirlDistortionFilter.kt │ │ │ ├── UiTentBlurFilter.kt │ │ │ ├── UiThresholdFilter.kt │ │ │ ├── UiToneCurvesFilter.kt │ │ │ ├── UiToonFilter.kt │ │ │ ├── UiTopHatFilter.kt │ │ │ ├── UiTriToneFilter.kt │ │ │ ├── UiTritanopiaFilter.kt │ │ │ ├── UiTritonomalyFilter.kt │ │ │ ├── UiTwirlFilter.kt │ │ │ ├── UiTwoRowSierraDitheringFilter.kt │ │ │ ├── UiUchimuraFilter.kt │ │ │ ├── UiUnsharpFilter.kt │ │ │ ├── UiVHSFilter.kt │ │ │ ├── UiVibranceFilter.kt │ │ │ ├── UiVignetteFilter.kt │ │ │ ├── UiVintageFilter.kt │ │ │ ├── UiVoronoiCrystallizeFilter.kt │ │ │ ├── UiVortexPixelizationFilter.kt │ │ │ ├── UiWarmFilter.kt │ │ │ ├── UiWaterEffectFilter.kt │ │ │ ├── UiWeakPixelFilter.kt │ │ │ ├── UiWeaveFilter.kt │ │ │ ├── UiWhiteBalanceFilter.kt │ │ │ ├── UiYililomaDitheringFilter.kt │ │ │ └── UiZoomBlurFilter.kt │ │ ├── utils/ │ │ │ ├── CollectAsUiState.kt │ │ │ ├── LamaLoader.kt │ │ │ └── Mappings.kt │ │ └── widget/ │ │ ├── AddFilterButton.kt │ │ ├── CalculateBrightnessEstimate.kt │ │ ├── CubeLutDownloadDialog.kt │ │ ├── FilterItem.kt │ │ ├── FilterItemContent.kt │ │ ├── FilterPreviewSheet.kt │ │ ├── FilterReorderSheet.kt │ │ ├── FilterSelectionCubeLutBottomContent.kt │ │ ├── FilterSelectionItem.kt │ │ ├── FilterTemplateAddingGroup.kt │ │ ├── FilterTemplateCreationSheet.kt │ │ ├── FilterTemplateInfoSheet.kt │ │ ├── TemplateFilterSelectionItem.kt │ │ ├── addFilters/ │ │ │ ├── AddFiltersSheet.kt │ │ │ ├── AddFiltersSheetComponent.kt │ │ │ ├── FavoritesContent.kt │ │ │ ├── OtherContent.kt │ │ │ └── TemplatesContent.kt │ │ └── filterItem/ │ │ ├── ArcParamsItem.kt │ │ ├── AsciiParamsItem.kt │ │ ├── BilaterialBlurParamsItem.kt │ │ ├── BloomParamsItem.kt │ │ ├── BooleanItem.kt │ │ ├── ChannelMixParamsItem.kt │ │ ├── ClaheParamsItem.kt │ │ ├── CropOrPerspectiveParamsItem.kt │ │ ├── EdgeModeSelector.kt │ │ ├── EnhancedZoomBlurParamsItem.kt │ │ ├── FilterValueWrapperItem.kt │ │ ├── FloatArrayItem.kt │ │ ├── FloatItem.kt │ │ ├── GlitchParamsItem.kt │ │ ├── IntegerSizeParamsItem.kt │ │ ├── KaleidoscopeParamsItem.kt │ │ ├── LinearGaussianParamsItem.kt │ │ ├── LinearTiltShiftParamsItem.kt │ │ ├── MirrorSideSelector.kt │ │ ├── PairItem.kt │ │ ├── PinchParamsItem.kt │ │ ├── QuadItem.kt │ │ ├── RadialTiltShiftParamsItem.kt │ │ ├── RubberStampParamsItem.kt │ │ ├── SideFadeRelativeItem.kt │ │ ├── SmearParamsItem.kt │ │ ├── SparkleParamsItem.kt │ │ ├── ToneCurvesParamsItem.kt │ │ ├── TransferFuncSelector.kt │ │ ├── TripleItem.kt │ │ ├── VoronoiCrystallizeParamsItem.kt │ │ ├── WaterParamsItem.kt │ │ ├── pair_components/ │ │ │ ├── ColorModelPairItem.kt │ │ │ ├── FloatColorModelPairItem.kt │ │ │ ├── FloatFileModelPairItem.kt │ │ │ ├── FloatImageModelPairItem.kt │ │ │ ├── NumberBlurEdgeModePairItem.kt │ │ │ ├── NumberBooleanPairItem.kt │ │ │ ├── NumberMirrorSidePairItem.kt │ │ │ ├── NumberPairItem.kt │ │ │ └── NumberTransferFuncPairItem.kt │ │ ├── quad_components/ │ │ │ ├── NumberColorModelQuadItem.kt │ │ │ └── NumberQuadItem.kt │ │ └── triple_components/ │ │ ├── ColorModelTripleItem.kt │ │ ├── FloatPaletteImageModelTripleItem.kt │ │ ├── NumberColorModelColorModelTripleItem.kt │ │ ├── NumberColorModelPopArtTripleItem.kt │ │ ├── NumberNumberBlurEdgeModeTripleItem.kt │ │ ├── NumberNumberColorModelTripleItem.kt │ │ ├── NumberTransferFuncBlurEdgeModeTripleItem.kt │ │ └── NumberTripleItem.kt │ ├── ksp/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── t8rin/ │ │ │ └── imagetoolbox/ │ │ │ └── core/ │ │ │ └── ksp/ │ │ │ ├── annotations/ │ │ │ │ ├── FilterInject.kt │ │ │ │ └── UiFilterInject.kt │ │ │ └── processor/ │ │ │ ├── FilterInjectProcessor.kt │ │ │ └── UiFilterInjectProcessor.kt │ │ └── resources/ │ │ └── META-INF/ │ │ └── services/ │ │ └── com.google.devtools.ksp.processing.SymbolProcessorProvider │ ├── resources/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ ├── debug/ │ │ │ └── res/ │ │ │ ├── drawable/ │ │ │ │ ├── ic_launcher_foreground.xml │ │ │ │ ├── ic_logo_animated.xml │ │ │ │ └── ic_notification_icon.xml │ │ │ ├── drawable-v31/ │ │ │ │ └── ic_logo_animated.xml │ │ │ ├── mipmap-anydpi-v26/ │ │ │ │ ├── ic_launcher.xml │ │ │ │ └── ic_launcher_round.xml │ │ │ ├── values/ │ │ │ │ ├── colors.xml │ │ │ │ └── ic_launcher_background.xml │ │ │ ├── values-night/ │ │ │ │ └── colors.xml │ │ │ ├── values-night-v31/ │ │ │ │ └── colors.xml │ │ │ └── values-v31/ │ │ │ └── colors.xml │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ ├── java/ │ │ │ └── com/ │ │ │ └── t8rin/ │ │ │ └── imagetoolbox/ │ │ │ └── core/ │ │ │ └── resources/ │ │ │ ├── emoji/ │ │ │ │ ├── Emoji.kt │ │ │ │ └── EmojiData.kt │ │ │ ├── icons/ │ │ │ │ ├── AddPhotoAlt.kt │ │ │ │ ├── AddSticky.kt │ │ │ │ ├── Analogous.kt │ │ │ │ ├── AnalogousComplementary.kt │ │ │ │ ├── Analytics.kt │ │ │ │ ├── Animation.kt │ │ │ │ ├── Apng.kt │ │ │ │ ├── ApngBox.kt │ │ │ │ ├── AppShortcut.kt │ │ │ │ ├── Apps.kt │ │ │ │ ├── Archive.kt │ │ │ │ ├── AreaChart.kt │ │ │ │ ├── ArtTrack.kt │ │ │ │ ├── Ascii.kt │ │ │ │ ├── AutoDelete.kt │ │ │ │ ├── BackgroundColor.kt │ │ │ │ ├── BarcodeScanner.kt │ │ │ │ ├── Base64.kt │ │ │ │ ├── BatchPrediction.kt │ │ │ │ ├── Beta.kt │ │ │ │ ├── Bitcoin.kt │ │ │ │ ├── Block.kt │ │ │ │ ├── BlurCircular.kt │ │ │ │ ├── BoldLine.kt │ │ │ │ ├── Bolt.kt │ │ │ │ ├── BookmarkOff.kt │ │ │ │ ├── BookmarkRemove.kt │ │ │ │ ├── Boosty.kt │ │ │ │ ├── BorderColor.kt │ │ │ │ ├── BrokenImageAlt.kt │ │ │ │ ├── BrushColor.kt │ │ │ │ ├── BubbleDelete.kt │ │ │ │ ├── Build.kt │ │ │ │ ├── CancelSmall.kt │ │ │ │ ├── ClipboardFile.kt │ │ │ │ ├── Collage.kt │ │ │ │ ├── Communication.kt │ │ │ │ ├── Compare.kt │ │ │ │ ├── CompareArrows.kt │ │ │ │ ├── Complementary.kt │ │ │ │ ├── ContractEdit.kt │ │ │ │ ├── ContractImage.kt │ │ │ │ ├── Cool.kt │ │ │ │ ├── Counter.kt │ │ │ │ ├── Crashlytics.kt │ │ │ │ ├── CropSmall.kt │ │ │ │ ├── Cube.kt │ │ │ │ ├── Curve.kt │ │ │ │ ├── DashedLine.kt │ │ │ │ ├── Database.kt │ │ │ │ ├── Delete.kt │ │ │ │ ├── DeleteSweep.kt │ │ │ │ ├── Deselect.kt │ │ │ │ ├── DesignServices.kt │ │ │ │ ├── DocumentScanner.kt │ │ │ │ ├── DotDashedLine.kt │ │ │ │ ├── Dots.kt │ │ │ │ ├── DownloadFile.kt │ │ │ │ ├── Draw.kt │ │ │ │ ├── EditAlt.kt │ │ │ │ ├── EmojiMultiple.kt │ │ │ │ ├── EmojiSticky.kt │ │ │ │ ├── Encrypted.kt │ │ │ │ ├── Eraser.kt │ │ │ │ ├── Exercise.kt │ │ │ │ ├── Exif.kt │ │ │ │ ├── ExifEdit.kt │ │ │ │ ├── Eyedropper.kt │ │ │ │ ├── FabCorner.kt │ │ │ │ ├── FileExport.kt │ │ │ │ ├── FileImage.kt │ │ │ │ ├── FileImport.kt │ │ │ │ ├── FileReplace.kt │ │ │ │ ├── FindInPage.kt │ │ │ │ ├── FingerprintOff.kt │ │ │ │ ├── Firebase.kt │ │ │ │ ├── Flip.kt │ │ │ │ ├── FlipVertical.kt │ │ │ │ ├── FloatingActionButton.kt │ │ │ │ ├── FloodFill.kt │ │ │ │ ├── FolderCompare.kt │ │ │ │ ├── FolderImage.kt │ │ │ │ ├── FolderImageAlt.kt │ │ │ │ ├── FolderMatch.kt │ │ │ │ ├── FolderOpened.kt │ │ │ │ ├── FontFamily.kt │ │ │ │ ├── FormatPaintVariant.kt │ │ │ │ ├── Forum.kt │ │ │ │ ├── FreeArrow.kt │ │ │ │ ├── FreeDoubleArrow.kt │ │ │ │ ├── FreeDraw.kt │ │ │ │ ├── Github.kt │ │ │ │ ├── Glyphs.kt │ │ │ │ ├── GooglePlay.kt │ │ │ │ ├── Gradient.kt │ │ │ │ ├── Group.kt │ │ │ │ ├── HandshakeAlt.kt │ │ │ │ ├── HardDrive.kt │ │ │ │ ├── HighRes.kt │ │ │ │ ├── Highlighter.kt │ │ │ │ ├── HistoryCreate.kt │ │ │ │ ├── HyperOS.kt │ │ │ │ ├── IOS.kt │ │ │ │ ├── ImageCombine.kt │ │ │ │ ├── ImageConvert.kt │ │ │ │ ├── ImageDownload.kt │ │ │ │ ├── ImageEdit.kt │ │ │ │ ├── ImageEmbedded.kt │ │ │ │ ├── ImageLimit.kt │ │ │ │ ├── ImageOverlay.kt │ │ │ │ ├── ImageReset.kt │ │ │ │ ├── ImageResize.kt │ │ │ │ ├── ImageSaw.kt │ │ │ │ ├── ImageSearch.kt │ │ │ │ ├── ImageSticky.kt │ │ │ │ ├── ImageSync.kt │ │ │ │ ├── ImageText.kt │ │ │ │ ├── ImageToText.kt │ │ │ │ ├── ImageToolboxBroken.kt │ │ │ │ ├── ImageTooltip.kt │ │ │ │ ├── ImageWeight.kt │ │ │ │ ├── ImagesMode.kt │ │ │ │ ├── ImagesearchRoller.kt │ │ │ │ ├── Interface.kt │ │ │ │ ├── Jpg.kt │ │ │ │ ├── Jxl.kt │ │ │ │ ├── KeyVariant.kt │ │ │ │ ├── KeyVertical.kt │ │ │ │ ├── LabelPercent.kt │ │ │ │ ├── Landscape.kt │ │ │ │ ├── Landscape2.kt │ │ │ │ ├── Lasso.kt │ │ │ │ ├── Latitude.kt │ │ │ │ ├── Layers.kt │ │ │ │ ├── LayersSearchOutline.kt │ │ │ │ ├── LetterO.kt │ │ │ │ ├── LetterS.kt │ │ │ │ ├── License.kt │ │ │ │ ├── Line.kt │ │ │ │ ├── LineArrow.kt │ │ │ │ ├── LineDoubleArrow.kt │ │ │ │ ├── Longitude.kt │ │ │ │ ├── Manga.kt │ │ │ │ ├── MaterialDesign.kt │ │ │ │ ├── MeshDownload.kt │ │ │ │ ├── MeshGradient.kt │ │ │ │ ├── MiniEdit.kt │ │ │ │ ├── MiniEditLarge.kt │ │ │ │ ├── Mobile.kt │ │ │ │ ├── MobileArrowDown.kt │ │ │ │ ├── MobileArrowUpRight.kt │ │ │ │ ├── MobileCast.kt │ │ │ │ ├── MobileLandscape.kt │ │ │ │ ├── MobileLayout.kt │ │ │ │ ├── MobileRotateLock.kt │ │ │ │ ├── MobileShare.kt │ │ │ │ ├── MobileVibrate.kt │ │ │ │ ├── Mop.kt │ │ │ │ ├── MultipleImageEdit.kt │ │ │ │ ├── MusicAdd.kt │ │ │ │ ├── NeonBrush.kt │ │ │ │ ├── Neurology.kt │ │ │ │ ├── NextPlan.kt │ │ │ │ ├── Noise.kt │ │ │ │ ├── NoiseAlt.kt │ │ │ │ ├── Numeric.kt │ │ │ │ ├── OverlayAbove.kt │ │ │ │ ├── PaletteBox.kt │ │ │ │ ├── PaletteSwatch.kt │ │ │ │ ├── Panorama.kt │ │ │ │ ├── Pdf.kt │ │ │ │ ├── Pen.kt │ │ │ │ ├── Perspective.kt │ │ │ │ ├── PhotoPicker.kt │ │ │ │ ├── PhotoPickerMobile.kt │ │ │ │ ├── PhotoPrints.kt │ │ │ │ ├── PhotoSizeSelectSmall.kt │ │ │ │ ├── PictureInPictureCenter.kt │ │ │ │ ├── Png.kt │ │ │ │ ├── Polygon.kt │ │ │ │ ├── Prefix.kt │ │ │ │ ├── Preview.kt │ │ │ │ ├── Print.kt │ │ │ │ ├── Psychology.kt │ │ │ │ ├── Puzzle.kt │ │ │ │ ├── QrCode.kt │ │ │ │ ├── QualityHigh.kt │ │ │ │ ├── QualityLow.kt │ │ │ │ ├── QualityMedium.kt │ │ │ │ ├── Rabbit.kt │ │ │ │ ├── Resize.kt │ │ │ │ ├── ResponsiveLayout.kt │ │ │ │ ├── Robot.kt │ │ │ │ ├── RobotExcited.kt │ │ │ │ ├── Rotate90Cw.kt │ │ │ │ ├── Routine.kt │ │ │ │ ├── SamsungLetter.kt │ │ │ │ ├── SaveConfirm.kt │ │ │ │ ├── ScaleUnbalanced.kt │ │ │ │ ├── Scanner.kt │ │ │ │ ├── Scissors.kt │ │ │ │ ├── ScissorsSmall.kt │ │ │ │ ├── SelectAll.kt │ │ │ │ ├── SelectInverse.kt │ │ │ │ ├── ServiceToolbox.kt │ │ │ │ ├── SettingsTimelapse.kt │ │ │ │ ├── Shadow.kt │ │ │ │ ├── ShareOff.kt │ │ │ │ ├── ShieldKey.kt │ │ │ │ ├── ShieldLock.kt │ │ │ │ ├── ShieldOpen.kt │ │ │ │ ├── ShineDiamond.kt │ │ │ │ ├── Signature.kt │ │ │ │ ├── SkewMore.kt │ │ │ │ ├── Slider.kt │ │ │ │ ├── Snail.kt │ │ │ │ ├── Snowflake.kt │ │ │ │ ├── Speed.kt │ │ │ │ ├── SplitAlt.kt │ │ │ │ ├── SplitComplementary.kt │ │ │ │ ├── Spray.kt │ │ │ │ ├── Square.kt │ │ │ │ ├── SquareEdit.kt │ │ │ │ ├── SquareFoot.kt │ │ │ │ ├── SquareHarmony.kt │ │ │ │ ├── Stack.kt │ │ │ │ ├── StackSticky.kt │ │ │ │ ├── StackStickyOff.kt │ │ │ │ ├── Stacks.kt │ │ │ │ ├── StampedLine.kt │ │ │ │ ├── StarSticky.kt │ │ │ │ ├── StickerEmoji.kt │ │ │ │ ├── Stylus.kt │ │ │ │ ├── Suffix.kt │ │ │ │ ├── Svg.kt │ │ │ │ ├── SwapVerticalCircle.kt │ │ │ │ ├── Swatch.kt │ │ │ │ ├── Symbol.kt │ │ │ │ ├── SyncArrowDown.kt │ │ │ │ ├── TableEye.kt │ │ │ │ ├── TagText.kt │ │ │ │ ├── Telegram.kt │ │ │ │ ├── TelevisionAmbientLight.kt │ │ │ │ ├── Tetradic.kt │ │ │ │ ├── TextFields.kt │ │ │ │ ├── TextSearch.kt │ │ │ │ ├── TextSticky.kt │ │ │ │ ├── Theme.kt │ │ │ │ ├── TimerEdit.kt │ │ │ │ ├── Titlecase.kt │ │ │ │ ├── Ton.kt │ │ │ │ ├── Tonality.kt │ │ │ │ ├── Toolbox.kt │ │ │ │ ├── TopLeft.kt │ │ │ │ ├── Tortoise.kt │ │ │ │ ├── Transparency.kt │ │ │ │ ├── Triadic.kt │ │ │ │ ├── Triangle.kt │ │ │ │ ├── USDT.kt │ │ │ │ ├── Unarchive.kt │ │ │ │ ├── Ungroup.kt │ │ │ │ ├── VectorPolyline.kt │ │ │ │ ├── VolunteerActivism.kt │ │ │ │ ├── WallpaperAlt.kt │ │ │ │ ├── WandShine.kt │ │ │ │ ├── WandStars.kt │ │ │ │ ├── Watermark.kt │ │ │ │ ├── Webp.kt │ │ │ │ ├── WebpBox.kt │ │ │ │ ├── Windows.kt │ │ │ │ └── ZigzagLine.kt │ │ │ └── shapes/ │ │ │ ├── ArrowShape.kt │ │ │ ├── BookmarkShape.kt │ │ │ ├── BurgerShape.kt │ │ │ ├── CloverShape.kt │ │ │ ├── DropletShape.kt │ │ │ ├── EggShape.kt │ │ │ ├── ExplosionShape.kt │ │ │ ├── HeartShape.kt │ │ │ ├── KotlinShape.kt │ │ │ ├── MapShape.kt │ │ │ ├── MaterialStarShape.kt │ │ │ ├── MorphShape.kt │ │ │ ├── OctagonShape.kt │ │ │ ├── OvalShape.kt │ │ │ ├── PathShape.kt │ │ │ ├── PentagonShape.kt │ │ │ ├── PillShape.kt │ │ │ ├── ShieldShape.kt │ │ │ ├── ShurikenShape.kt │ │ │ ├── SimpleHeartShape.kt │ │ │ ├── SmallMaterialStarShape.kt │ │ │ └── SquircleShape.kt │ │ └── res/ │ │ ├── drawable/ │ │ │ ├── app_registration_24px.xml │ │ │ ├── ic_24_barcode_scanner.xml │ │ │ ├── ic_launcher_foreground.xml │ │ │ ├── ic_launcher_monochrome_24.xml │ │ │ ├── ic_logo_animated.xml │ │ │ ├── ic_notification_icon.xml │ │ │ ├── image_to_text_outlined.xml │ │ │ ├── mobile_screenshot.xml │ │ │ ├── multiple_image_edit.xml │ │ │ ├── outline_colorize_24.xml │ │ │ ├── outline_drag_handle_24.xml │ │ │ ├── palette_swatch_outlined.xml │ │ │ ├── rounded_document_scanner_24.xml │ │ │ ├── rounded_qr_code_scanner_24.xml │ │ │ └── shape_find_in_file.xml │ │ ├── drawable-v31/ │ │ │ └── ic_logo_animated.xml │ │ ├── mipmap-anydpi-v26/ │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ ├── raw/ │ │ │ └── keep.xml │ │ ├── values/ │ │ │ ├── arrays.xml │ │ │ ├── bools.xml │ │ │ ├── colors.xml │ │ │ ├── ic_launcher_background.xml │ │ │ ├── strings.xml │ │ │ └── themes.xml │ │ ├── values-ar/ │ │ │ └── strings.xml │ │ ├── values-be/ │ │ │ └── strings.xml │ │ ├── values-bn/ │ │ │ └── strings.xml │ │ ├── values-ca/ │ │ │ └── strings.xml │ │ ├── values-cs/ │ │ │ └── strings.xml │ │ ├── values-da/ │ │ │ └── strings.xml │ │ ├── values-de/ │ │ │ └── strings.xml │ │ ├── values-es/ │ │ │ └── strings.xml │ │ ├── values-et/ │ │ │ └── strings.xml │ │ ├── values-eu/ │ │ │ └── strings.xml │ │ ├── values-fa/ │ │ │ └── strings.xml │ │ ├── values-fi/ │ │ │ └── strings.xml │ │ ├── values-fil/ │ │ │ └── strings.xml │ │ ├── values-fr/ │ │ │ └── strings.xml │ │ ├── values-hi/ │ │ │ └── strings.xml │ │ ├── values-hu/ │ │ │ └── strings.xml │ │ ├── values-in/ │ │ │ └── strings.xml │ │ ├── values-it/ │ │ │ └── strings.xml │ │ ├── values-iw/ │ │ │ └── strings.xml │ │ ├── values-ja/ │ │ │ └── strings.xml │ │ ├── values-kk/ │ │ │ └── strings.xml │ │ ├── values-ko/ │ │ │ └── strings.xml │ │ ├── values-lt/ │ │ │ └── strings.xml │ │ ├── values-mr/ │ │ │ └── strings.xml │ │ ├── values-night/ │ │ │ └── colors.xml │ │ ├── values-night-v31/ │ │ │ └── colors.xml │ │ ├── values-nl/ │ │ │ └── strings.xml │ │ ├── values-pa/ │ │ │ └── strings.xml │ │ ├── values-pl/ │ │ │ └── strings.xml │ │ ├── values-pt-rBR/ │ │ │ └── strings.xml │ │ ├── values-ro/ │ │ │ └── strings.xml │ │ ├── values-ru/ │ │ │ └── strings.xml │ │ ├── values-si/ │ │ │ └── strings.xml │ │ ├── values-sk/ │ │ │ └── strings.xml │ │ ├── values-sr/ │ │ │ └── strings.xml │ │ ├── values-sv/ │ │ │ └── strings.xml │ │ ├── values-ta/ │ │ │ └── strings.xml │ │ ├── values-te/ │ │ │ └── strings.xml │ │ ├── values-th/ │ │ │ └── strings.xml │ │ ├── values-tr/ │ │ │ └── strings.xml │ │ ├── values-ug/ │ │ │ └── strings.xml │ │ ├── values-uk/ │ │ │ └── strings.xml │ │ ├── values-v26/ │ │ │ └── bools.xml │ │ ├── values-v31/ │ │ │ └── colors.xml │ │ ├── values-vi/ │ │ │ └── strings.xml │ │ ├── values-zh-rCN/ │ │ │ └── strings.xml │ │ ├── values-zh-rTW/ │ │ │ └── strings.xml │ │ └── xml/ │ │ ├── backup_rules.xml │ │ ├── data_extraction_rules.xml │ │ └── file_paths.xml │ ├── settings/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── core/ │ │ └── settings/ │ │ ├── di/ │ │ │ └── SettingsStateEntryPoint.kt │ │ ├── domain/ │ │ │ ├── SettingsInteractor.kt │ │ │ ├── SettingsManager.kt │ │ │ ├── SettingsProvider.kt │ │ │ ├── SimpleSettingsInteractor.kt │ │ │ └── model/ │ │ │ ├── ColorHarmonizer.kt │ │ │ ├── CopyToClipboardMode.kt │ │ │ ├── DomainFontFamily.kt │ │ │ ├── FastSettingsSide.kt │ │ │ ├── FilenameBehavior.kt │ │ │ ├── FlingType.kt │ │ │ ├── NightMode.kt │ │ │ ├── OneTimeSaveLocation.kt │ │ │ ├── SettingsState.kt │ │ │ ├── ShapeType.kt │ │ │ ├── SliderType.kt │ │ │ ├── SnowfallMode.kt │ │ │ └── SwitchType.kt │ │ └── presentation/ │ │ ├── model/ │ │ │ ├── EditPresetsController.kt │ │ │ ├── IconShape.kt │ │ │ ├── PicturePickerMode.kt │ │ │ ├── Setting.kt │ │ │ ├── SettingsGroup.kt │ │ │ ├── UiFontFamily.kt │ │ │ └── UiSettingsState.kt │ │ ├── provider/ │ │ │ └── LocalSettingsState.kt │ │ └── utils/ │ │ └── RoundedPolygonUtils.kt │ ├── ui/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ ├── foss/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── t8rin/ │ │ │ └── imagetoolbox/ │ │ │ └── core/ │ │ │ └── ui/ │ │ │ ├── utils/ │ │ │ │ ├── content_pickers/ │ │ │ │ │ └── DocumentScannerImpl.kt │ │ │ │ └── helper/ │ │ │ │ └── ReviewHandlerImpl.kt │ │ │ └── widget/ │ │ │ └── sheets/ │ │ │ └── UpdateSheetImpl.kt │ │ ├── main/ │ │ │ ├── AndroidManifest.xml │ │ │ └── kotlin/ │ │ │ └── com/ │ │ │ └── t8rin/ │ │ │ └── imagetoolbox/ │ │ │ └── core/ │ │ │ └── ui/ │ │ │ ├── theme/ │ │ │ │ ├── Color.kt │ │ │ │ ├── Motion.kt │ │ │ │ ├── Theme.kt │ │ │ │ ├── ThemePreview.kt │ │ │ │ └── Type.kt │ │ │ ├── transformation/ │ │ │ │ └── ImageInfoTransformation.kt │ │ │ ├── utils/ │ │ │ │ ├── BaseComponent.kt │ │ │ │ ├── ComposeActivity.kt │ │ │ │ ├── ComposeApplication.kt │ │ │ │ ├── animation/ │ │ │ │ │ ├── Animate.kt │ │ │ │ │ ├── Animations.kt │ │ │ │ │ ├── CombinedMutableInteractionSource.kt │ │ │ │ │ └── Easing.kt │ │ │ │ ├── capturable/ │ │ │ │ │ ├── Capturable.kt │ │ │ │ │ ├── CaptureController.kt │ │ │ │ │ └── impl/ │ │ │ │ │ ├── CapturableNew.kt │ │ │ │ │ └── CapturableOld.kt │ │ │ │ ├── confetti/ │ │ │ │ │ ├── ConfettiHostState.kt │ │ │ │ │ └── Particles.kt │ │ │ │ ├── content_pickers/ │ │ │ │ │ ├── BarcodeScanner.kt │ │ │ │ │ ├── ContactPicker.kt │ │ │ │ │ ├── DocumentScanner.kt │ │ │ │ │ ├── FileMaker.kt │ │ │ │ │ ├── FilePicker.kt │ │ │ │ │ ├── FolderPicker.kt │ │ │ │ │ ├── ImagePicker.kt │ │ │ │ │ ├── ResultLauncher.kt │ │ │ │ │ └── Scanner.kt │ │ │ │ ├── helper/ │ │ │ │ │ ├── ActivityUtils.kt │ │ │ │ │ ├── AppToastHost.kt │ │ │ │ │ ├── BlendingModeExt.kt │ │ │ │ │ ├── Clipboard.kt │ │ │ │ │ ├── ClipboardUtils.kt │ │ │ │ │ ├── CoilUtils.kt │ │ │ │ │ ├── ColorUtils.kt │ │ │ │ │ ├── CompositionLocalUtils.kt │ │ │ │ │ ├── ContextUtils.kt │ │ │ │ │ ├── DensityUtils.kt │ │ │ │ │ ├── DeviceInfo.kt │ │ │ │ │ ├── DrawUtils.kt │ │ │ │ │ ├── HandleDeeplinks.kt │ │ │ │ │ ├── HandlerUtils.kt │ │ │ │ │ ├── ImageUtils.kt │ │ │ │ │ ├── IntentUtils.kt │ │ │ │ │ ├── LazyUtils.kt │ │ │ │ │ ├── LinkUtils.kt │ │ │ │ │ ├── LocalFilterPreviewModel.kt │ │ │ │ │ ├── LocaleConfigCompat.kt │ │ │ │ │ ├── PaddingUtils.kt │ │ │ │ │ ├── PredictiveBackObserver.kt │ │ │ │ │ ├── Preview.kt │ │ │ │ │ ├── Rect.kt │ │ │ │ │ ├── ReviewHandler.kt │ │ │ │ │ ├── Ripple.kt │ │ │ │ │ ├── SafeUriHandler.kt │ │ │ │ │ ├── SaveResultHandler.kt │ │ │ │ │ ├── ScanResult.kt │ │ │ │ │ └── image_vector/ │ │ │ │ │ ├── DrawCache.kt │ │ │ │ │ ├── GroupComponent.kt │ │ │ │ │ ├── ImageVectorUtils.kt │ │ │ │ │ ├── PathComponent.kt │ │ │ │ │ ├── VNode.kt │ │ │ │ │ ├── VectorComponent.kt │ │ │ │ │ └── VectorPainter.kt │ │ │ │ ├── navigation/ │ │ │ │ │ ├── Decompose.kt │ │ │ │ │ ├── Screen.kt │ │ │ │ │ └── ScreenUtils.kt │ │ │ │ ├── painter/ │ │ │ │ │ ├── CenterCropPainter.kt │ │ │ │ │ └── RoundCornersPainter.kt │ │ │ │ ├── permission/ │ │ │ │ │ ├── PermissionResult.kt │ │ │ │ │ ├── PermissionStatus.kt │ │ │ │ │ └── PermissionUtils.kt │ │ │ │ ├── provider/ │ │ │ │ │ ├── ImageToolboxCompositionLocals.kt │ │ │ │ │ ├── LocalComponentActivity.kt │ │ │ │ │ ├── LocalContainerShape.kt │ │ │ │ │ ├── LocalKeepAliveService.kt │ │ │ │ │ ├── LocalMetadataProvider.kt │ │ │ │ │ ├── LocalResourceManager.kt │ │ │ │ │ ├── LocalScreenSize.kt │ │ │ │ │ └── LocalWindowSizeClass.kt │ │ │ │ └── state/ │ │ │ │ ├── ObjectSaverDelegate.kt │ │ │ │ └── Update.kt │ │ │ └── widget/ │ │ │ ├── AdaptiveBottomScaffoldLayoutScreen.kt │ │ │ ├── AdaptiveLayoutScreen.kt │ │ │ ├── buttons/ │ │ │ │ ├── BottomButtonsBlock.kt │ │ │ │ ├── CompareButton.kt │ │ │ │ ├── EraseModeButton.kt │ │ │ │ ├── MediaCheckBox.kt │ │ │ │ ├── PagerScrollPanel.kt │ │ │ │ ├── PanModeButton.kt │ │ │ │ ├── ShareButton.kt │ │ │ │ ├── ShowOriginalButton.kt │ │ │ │ ├── SupportingButton.kt │ │ │ │ └── ZoomButton.kt │ │ │ ├── color_picker/ │ │ │ │ ├── AvailableColorTuplesSheet.kt │ │ │ │ ├── ColorInfo.kt │ │ │ │ ├── ColorPicker.kt │ │ │ │ ├── ColorPickerSheet.kt │ │ │ │ ├── ColorSelection.kt │ │ │ │ ├── ColorSelectionRow.kt │ │ │ │ ├── ColorTupleDefaults.kt │ │ │ │ ├── ColorTuplePicker.kt │ │ │ │ ├── ColorTuplePreview.kt │ │ │ │ └── RecentAndFavoriteColorsCard.kt │ │ │ ├── controls/ │ │ │ │ ├── FileReorderVerticalList.kt │ │ │ │ ├── FormatExifWarning.kt │ │ │ │ ├── IcoSizeWarning.kt │ │ │ │ ├── ImageReorderCarousel.kt │ │ │ │ ├── ImageTransformBar.kt │ │ │ │ ├── OOMWarning.kt │ │ │ │ ├── ResizeImageField.kt │ │ │ │ ├── SaveExifWidget.kt │ │ │ │ ├── ScaleSmallImagesToLargeToggle.kt │ │ │ │ ├── SortButton.kt │ │ │ │ ├── page/ │ │ │ │ │ ├── PageInputDialog.kt │ │ │ │ │ ├── PageInputField.kt │ │ │ │ │ ├── PageSelectionItem.kt │ │ │ │ │ └── PagesSelectionParser.kt │ │ │ │ ├── resize_group/ │ │ │ │ │ ├── ResizeTypeSelector.kt │ │ │ │ │ └── components/ │ │ │ │ │ ├── BlurRadiusSelector.kt │ │ │ │ │ └── UseBlurredBackgroundToggle.kt │ │ │ │ └── selection/ │ │ │ │ ├── AlphaSelector.kt │ │ │ │ ├── BlendingModeSelector.kt │ │ │ │ ├── ColorRowSelector.kt │ │ │ │ ├── DataSelector.kt │ │ │ │ ├── FontSelector.kt │ │ │ │ ├── HelperGridParamsSelector.kt │ │ │ │ ├── ImageFormatSelector.kt │ │ │ │ ├── ImageSelector.kt │ │ │ │ ├── MagnifierEnabledSelector.kt │ │ │ │ ├── PositionSelector.kt │ │ │ │ ├── PresetSelector.kt │ │ │ │ ├── QualitySelector.kt │ │ │ │ └── ScaleModeSelector.kt │ │ │ ├── dialogs/ │ │ │ │ ├── CalculatorDialog.kt │ │ │ │ ├── ExitWithoutSavingDialog.kt │ │ │ │ ├── LoadingDialog.kt │ │ │ │ ├── OneTimeImagePickingDialog.kt │ │ │ │ ├── OneTimeSaveLocationSelectionDialog.kt │ │ │ │ ├── PasswordRequestDialog.kt │ │ │ │ ├── ResetDialog.kt │ │ │ │ └── WantCancelLoadingDialog.kt │ │ │ ├── enhanced/ │ │ │ │ ├── EnhancedAlertDialog.kt │ │ │ │ ├── EnhancedBadge.kt │ │ │ │ ├── EnhancedButton.kt │ │ │ │ ├── EnhancedButtonGroup.kt │ │ │ │ ├── EnhancedCheckbox.kt │ │ │ │ ├── EnhancedChip.kt │ │ │ │ ├── EnhancedCircularProgressIndicator.kt │ │ │ │ ├── EnhancedDatePickerDialog.kt │ │ │ │ ├── EnhancedDropdownMenu.kt │ │ │ │ ├── EnhancedFlingBehavior.kt │ │ │ │ ├── EnhancedFloatingActionButton.kt │ │ │ │ ├── EnhancedHapticFeedback.kt │ │ │ │ ├── EnhancedIconButton.kt │ │ │ │ ├── EnhancedLoadingIndicator.kt │ │ │ │ ├── EnhancedModalBottomSheet.kt │ │ │ │ ├── EnhancedModalSheetDragHandle.kt │ │ │ │ ├── EnhancedNavigationBarItem.kt │ │ │ │ ├── EnhancedNavigationRailItem.kt │ │ │ │ ├── EnhancedRadioButton.kt │ │ │ │ ├── EnhancedRangeSliderItem.kt │ │ │ │ ├── EnhancedSlider.kt │ │ │ │ ├── EnhancedSliderItem.kt │ │ │ │ ├── EnhancedSwitch.kt │ │ │ │ ├── EnhancedToggleButton.kt │ │ │ │ ├── EnhancedTopAppBar.kt │ │ │ │ └── derivative/ │ │ │ │ └── OnlyAllowedSliderItem.kt │ │ │ ├── icon_shape/ │ │ │ │ └── IconShapeContainer.kt │ │ │ ├── image/ │ │ │ │ ├── AspectRatioSelector.kt │ │ │ │ ├── AspectRatios.kt │ │ │ │ ├── AutoFilePicker.kt │ │ │ │ ├── BadImageWidget.kt │ │ │ │ ├── HistogramChart.kt │ │ │ │ ├── ImageContainer.kt │ │ │ │ ├── ImageCounter.kt │ │ │ │ ├── ImageHeaderState.kt │ │ │ │ ├── ImageNotPickedWidget.kt │ │ │ │ ├── ImagePager.kt │ │ │ │ ├── ImagePreviewGrid.kt │ │ │ │ ├── ImageStickyHeader.kt │ │ │ │ ├── ImagesPreviewWithSelection.kt │ │ │ │ ├── MetadataPreviewButton.kt │ │ │ │ ├── Picture.kt │ │ │ │ ├── SimplePicture.kt │ │ │ │ ├── UrisCarousel.kt │ │ │ │ └── UrisPreview.kt │ │ │ ├── modifier/ │ │ │ │ ├── AdvancedShadow.kt │ │ │ │ ├── AlertDialogBorder.kt │ │ │ │ ├── AnimateContentSizeNoClip.kt │ │ │ │ ├── AutoCornersShape.kt │ │ │ │ ├── AutoElevatedBorder.kt │ │ │ │ ├── Blink.kt │ │ │ │ ├── Container.kt │ │ │ │ ├── ContiniousRoundedRectangle.kt │ │ │ │ ├── DetectSwipe.kt │ │ │ │ ├── DragHandler.kt │ │ │ │ ├── DrawHorizontalStroke.kt │ │ │ │ ├── FadingEdges.kt │ │ │ │ ├── HelperGrid.kt │ │ │ │ ├── LayoutCorners.kt │ │ │ │ ├── Line.kt │ │ │ │ ├── MaterialShadow.kt │ │ │ │ ├── MeshGradient.kt │ │ │ │ ├── NegativePadding.kt │ │ │ │ ├── ObservePointersCount.kt │ │ │ │ ├── Placholder.kt │ │ │ │ ├── PointerInput.kt │ │ │ │ ├── Pulsate.kt │ │ │ │ ├── RealisticSnowfall.kt │ │ │ │ ├── RotateAnimation.kt │ │ │ │ ├── ScaleOnTap.kt │ │ │ │ ├── ShapeDefaults.kt │ │ │ │ ├── Shimmer.kt │ │ │ │ ├── Tappable.kt │ │ │ │ ├── TransparencyChecker.kt │ │ │ │ └── WithModifier.kt │ │ │ ├── other/ │ │ │ │ ├── AnimatedBorder.kt │ │ │ │ ├── BoxAnimatedVisibility.kt │ │ │ │ ├── ColorWithNameItem.kt │ │ │ │ ├── DrawLockScreenOrientation.kt │ │ │ │ ├── EmojiItem.kt │ │ │ │ ├── ExpandableItem.kt │ │ │ │ ├── FeatureNotAvailableContent.kt │ │ │ │ ├── FontSelectionItem.kt │ │ │ │ ├── GradientEdge.kt │ │ │ │ ├── InfoContainer.kt │ │ │ │ ├── LinkPreviewCard.kt │ │ │ │ ├── LinkPreviewList.kt │ │ │ │ ├── QrPainter.kt │ │ │ │ ├── SearchBar.kt │ │ │ │ ├── SwipeToReveal.kt │ │ │ │ ├── ToastHost.kt │ │ │ │ └── TopAppBarEmoji.kt │ │ │ ├── palette_selection/ │ │ │ │ ├── PaletteMappings.kt │ │ │ │ ├── PaletteStyleSelection.kt │ │ │ │ └── PaletteStyleSelectionItem.kt │ │ │ ├── preferences/ │ │ │ │ ├── PreferenceItem.kt │ │ │ │ ├── PreferenceItemOverload.kt │ │ │ │ ├── PreferenceRow.kt │ │ │ │ ├── PreferenceRowSwitch.kt │ │ │ │ └── ScreenPreference.kt │ │ │ ├── saver/ │ │ │ │ ├── OneTimeEffect.kt │ │ │ │ └── Savers.kt │ │ │ ├── sheets/ │ │ │ │ ├── AddExifSheet.kt │ │ │ │ ├── DefaultUpdateSheet.kt │ │ │ │ ├── EditExifSheet.kt │ │ │ │ ├── EmojiSelectionSheet.kt │ │ │ │ ├── PickImageFromUrisSheet.kt │ │ │ │ ├── ProcessImagesPreferenceSheet.kt │ │ │ │ ├── UpdateSheet.kt │ │ │ │ └── ZoomModalSheet.kt │ │ │ ├── sliders/ │ │ │ │ ├── FancySlider.kt │ │ │ │ ├── HyperOSSlider.kt │ │ │ │ ├── M2Slider.kt │ │ │ │ ├── M3Slider.kt │ │ │ │ └── custom_slider/ │ │ │ │ ├── CustomRangeSlider.kt │ │ │ │ ├── CustomRangeSliderState.kt │ │ │ │ ├── CustomRangeSliderUtils.kt │ │ │ │ ├── CustomSlider.kt │ │ │ │ ├── CustomSliderColors.kt │ │ │ │ ├── CustomSliderDefaults.kt │ │ │ │ ├── CustomSliderRange.kt │ │ │ │ ├── CustomSliderState.kt │ │ │ │ └── CustomSliderUtils.kt │ │ │ ├── switches/ │ │ │ │ ├── CupertinoSwitch.kt │ │ │ │ ├── FluentSwitch.kt │ │ │ │ ├── HyperOSSwitch.kt │ │ │ │ ├── LiquidToggle.kt │ │ │ │ ├── M3Switch.kt │ │ │ │ ├── OneUISwitch.kt │ │ │ │ └── PixelSwitch.kt │ │ │ ├── text/ │ │ │ │ ├── AutoSizeText.kt │ │ │ │ ├── HtmlText.kt │ │ │ │ ├── IsKeyboardVisibleAsState.kt │ │ │ │ ├── Linkify.kt │ │ │ │ ├── Marquee.kt │ │ │ │ ├── OutlinedText.kt │ │ │ │ ├── PatternHighlightTransformation.kt │ │ │ │ ├── RoundedTextField.kt │ │ │ │ ├── TitleItem.kt │ │ │ │ └── TopAppBarTitle.kt │ │ │ ├── utils/ │ │ │ │ ├── AutoContentBasedColors.kt │ │ │ │ ├── AvailableHeight.kt │ │ │ │ ├── RememberRetainedLazyListState.kt │ │ │ │ └── ScreenList.kt │ │ │ └── value/ │ │ │ ├── ValueDialog.kt │ │ │ └── ValueText.kt │ │ └── market/ │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── core/ │ │ └── ui/ │ │ ├── utils/ │ │ │ ├── content_pickers/ │ │ │ │ └── DocumentScannerImpl.kt │ │ │ └── helper/ │ │ │ └── ReviewHandlerImpl.kt │ │ └── widget/ │ │ └── sheets/ │ │ └── UpdateSheetImpl.kt │ └── utils/ │ ├── .gitignore │ ├── build.gradle.kts │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ └── java/ │ └── com/ │ └── t8rin/ │ └── imagetoolbox/ │ └── core/ │ └── utils/ │ ├── AppContext.kt │ ├── QrType.kt │ ├── Typeface.kt │ ├── Update.kt │ ├── UriUtils.kt │ └── Zip.kt ├── fastlane/ │ └── metadata/ │ └── android/ │ ├── en-US/ │ │ ├── changelogs/ │ │ │ ├── 13.txt │ │ │ └── 16.txt │ │ ├── full_description.txt │ │ └── short_description.txt │ └── ru/ │ ├── full_description.txt │ └── short_description.txt ├── feature/ │ ├── ai-tools/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── ai_tools/ │ │ ├── data/ │ │ │ ├── AiProcessor.kt │ │ │ ├── AndroidAiToolsRepository.kt │ │ │ └── model/ │ │ │ ├── ChunkInfo.kt │ │ │ └── ModelInfo.kt │ │ ├── di/ │ │ │ └── AiToolsModule.kt │ │ ├── domain/ │ │ │ ├── AiProgressListener.kt │ │ │ ├── AiToolsRepository.kt │ │ │ └── model/ │ │ │ ├── NeuralConstants.kt │ │ │ ├── NeuralModel.kt │ │ │ └── NeuralParams.kt │ │ └── presentation/ │ │ ├── AiToolsContent.kt │ │ ├── components/ │ │ │ ├── AiToolsControls.kt │ │ │ ├── DeleteModelDialog.kt │ │ │ ├── FilteredModels.kt │ │ │ ├── NeuralModelFilterSheet.kt │ │ │ ├── NeuralModelSelectionSheet.kt │ │ │ ├── NeuralModelSelector.kt │ │ │ ├── NeuralModelTypeResources.kt │ │ │ ├── NeuralModelsColumn.kt │ │ │ ├── NeuralSaveProgress.kt │ │ │ ├── NeuralSaveProgressDialog.kt │ │ │ └── Savers.kt │ │ └── screenLogic/ │ │ └── AiToolsComponent.kt │ ├── apng-tools/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── apng_tools/ │ │ ├── data/ │ │ │ └── AndroidApngConverter.kt │ │ ├── di/ │ │ │ └── ApngToolsModule.kt │ │ ├── domain/ │ │ │ ├── ApngConverter.kt │ │ │ └── ApngParams.kt │ │ └── presentation/ │ │ ├── ApngToolsContent.kt │ │ ├── components/ │ │ │ └── ApngParamsSelector.kt │ │ └── screenLogic/ │ │ └── ApngToolsComponent.kt │ ├── ascii-art/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── ascii_art/ │ │ ├── data/ │ │ │ └── AndroidAsciiConverter.kt │ │ ├── di/ │ │ │ └── AsciiArtModule.kt │ │ ├── domain/ │ │ │ └── AsciiConverter.kt │ │ └── presentation/ │ │ ├── AsciiArtContent.kt │ │ ├── components/ │ │ │ └── AsciiArtControls.kt │ │ └── screenLogic/ │ │ └── AsciiArtComponent.kt │ ├── audio-cover-extractor/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── audio_cover_extractor/ │ │ ├── data/ │ │ │ └── AndroidAudioCoverRetriever.kt │ │ ├── di/ │ │ │ └── AudioCoverExtractorModule.kt │ │ ├── domain/ │ │ │ ├── AudioCoverRetriever.kt │ │ │ └── model/ │ │ │ └── AudioCoverResult.kt │ │ └── ui/ │ │ ├── AudioCoverExtractorContent.kt │ │ ├── components/ │ │ │ └── AudioWithCover.kt │ │ └── screenLogic/ │ │ └── AudioCoverExtractorComponent.kt │ ├── base64-tools/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── base64_tools/ │ │ ├── data/ │ │ │ └── AndroidBase64Converter.kt │ │ ├── di/ │ │ │ └── Base64ToolsModule.kt │ │ ├── domain/ │ │ │ └── Base64Converter.kt │ │ └── presentation/ │ │ ├── Base64ToolsContent.kt │ │ ├── components/ │ │ │ └── Base64ToolsTiles.kt │ │ └── screenLogic/ │ │ └── Base64ToolsComponent.kt │ ├── checksum-tools/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── checksum_tools/ │ │ ├── data/ │ │ │ └── AndroidChecksumManager.kt │ │ ├── di/ │ │ │ └── ChecksumToolsModule.kt │ │ ├── domain/ │ │ │ ├── ChecksumManager.kt │ │ │ └── ChecksumSource.kt │ │ └── presentation/ │ │ ├── ChecksumToolsContent.kt │ │ ├── components/ │ │ │ ├── ChecksumEnterField.kt │ │ │ ├── ChecksumPage.kt │ │ │ ├── ChecksumPreviewField.kt │ │ │ ├── ChecksumResultCard.kt │ │ │ ├── ChecksumToolsTabs.kt │ │ │ ├── UriWithHashItem.kt │ │ │ └── pages/ │ │ │ ├── CalculateFromTextPage.kt │ │ │ ├── CalculateFromUriPage.kt │ │ │ ├── CompareWithUriPage.kt │ │ │ └── CompareWithUrisPage.kt │ │ └── screenLogic/ │ │ └── ChecksumToolsComponent.kt │ ├── cipher/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── cipher/ │ │ ├── data/ │ │ │ ├── AndroidCryptographyManager.kt │ │ │ └── AndroidRandomStringGenerator.kt │ │ ├── di/ │ │ │ └── CipherModule.kt │ │ ├── domain/ │ │ │ ├── CryptographyManager.kt │ │ │ └── WrongKeyException.kt │ │ └── presentation/ │ │ ├── CipherContent.kt │ │ ├── components/ │ │ │ ├── CipherControls.kt │ │ │ └── CipherTipSheet.kt │ │ └── screenLogic/ │ │ └── CipherComponent.kt │ ├── collage-maker/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── collage_maker/ │ │ └── presentation/ │ │ ├── CollageMakerContent.kt │ │ ├── components/ │ │ │ └── CollageParams.kt │ │ └── screenLogic/ │ │ └── CollageMakerComponent.kt │ ├── color-library/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── color_library/ │ │ └── presentation/ │ │ ├── ColorLibraryContent.kt │ │ ├── components/ │ │ │ └── FavoriteColors.kt │ │ └── screenLogic/ │ │ └── ColorLibraryComponent.kt │ ├── color-tools/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── color_tools/ │ │ └── presentation/ │ │ ├── ColorToolsContent.kt │ │ ├── components/ │ │ │ ├── ColorHarmonies.kt │ │ │ ├── ColorHarmoniesUtils.kt │ │ │ ├── ColorHistogram.kt │ │ │ ├── ColorInfo.kt │ │ │ ├── ColorInfoDisplay.kt │ │ │ ├── ColorMixing.kt │ │ │ ├── ColorMixingUtils.kt │ │ │ └── ColorShading.kt │ │ └── screenLogic/ │ │ └── ColorToolsComponent.kt │ ├── compare/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── compare/ │ │ └── presentation/ │ │ ├── CompareContent.kt │ │ ├── components/ │ │ │ ├── CompareLabel.kt │ │ │ ├── CompareScreenContent.kt │ │ │ ├── CompareScreenContentImpl.kt │ │ │ ├── CompareScreenTopAppBar.kt │ │ │ ├── CompareSelectionButtons.kt │ │ │ ├── CompareShareSheet.kt │ │ │ ├── CompareSheet.kt │ │ │ ├── CompareType.kt │ │ │ ├── PixelByPixelCompareState.kt │ │ │ ├── beforeafter/ │ │ │ │ ├── BeforeAfterLayout.kt │ │ │ │ ├── BeforeAfterLayoutImpl.kt │ │ │ │ ├── ContentOrder.kt │ │ │ │ ├── DefaultOverlay.kt │ │ │ │ ├── DimensionSubcomposeLayout.kt │ │ │ │ ├── DimensionUtil.kt │ │ │ │ ├── Label.kt │ │ │ │ └── SlotsEnum.kt │ │ │ └── model/ │ │ │ └── CompareData.kt │ │ └── screenLogic/ │ │ └── CompareComponent.kt │ ├── crop/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ ├── java/ │ │ │ └── com/ │ │ │ └── t8rin/ │ │ │ └── imagetoolbox/ │ │ │ └── feature/ │ │ │ └── crop/ │ │ │ └── presentation/ │ │ │ ├── CropContent.kt │ │ │ ├── components/ │ │ │ │ ├── CoercePointsToImageBoundsToggle.kt │ │ │ │ ├── CropMaskSelection.kt │ │ │ │ ├── CropRotationSelector.kt │ │ │ │ ├── CropType.kt │ │ │ │ ├── Cropper.kt │ │ │ │ ├── DefaultOutlineProperties.kt │ │ │ │ └── FreeCornersCropToggle.kt │ │ │ └── screenLogic/ │ │ │ └── CropComponent.kt │ │ └── res/ │ │ └── values/ │ │ └── dimens.xml │ ├── delete-exif/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── delete_exif/ │ │ └── presentation/ │ │ ├── DeleteExifContent.kt │ │ └── screenLogic/ │ │ └── DeleteExifComponent.kt │ ├── document-scanner/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── document_scanner/ │ │ └── presentation/ │ │ ├── DocumentScannerContent.kt │ │ └── screenLogic/ │ │ └── DocumentScannerComponent.kt │ ├── draw/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── draw/ │ │ ├── data/ │ │ │ ├── AndroidImageDrawApplier.kt │ │ │ └── utils/ │ │ │ └── DrawRepeatedPath.kt │ │ ├── di/ │ │ │ └── DrawModule.kt │ │ ├── domain/ │ │ │ ├── DrawBehavior.kt │ │ │ ├── DrawLineStyle.kt │ │ │ ├── DrawMode.kt │ │ │ ├── DrawOnBackgroundParams.kt │ │ │ ├── DrawPathMode.kt │ │ │ ├── ImageDrawApplier.kt │ │ │ ├── PathPaint.kt │ │ │ └── Warp.kt │ │ └── presentation/ │ │ ├── DrawContent.kt │ │ ├── components/ │ │ │ ├── BitmapDrawer.kt │ │ │ ├── BrushSoftnessSelector.kt │ │ │ ├── DrawColorSelector.kt │ │ │ ├── DrawLineStyleSelector.kt │ │ │ ├── DrawModeSelector.kt │ │ │ ├── DrawPathModeSelector.kt │ │ │ ├── LineWidthSelector.kt │ │ │ ├── OpenColorPickerCard.kt │ │ │ ├── PixelSizeSelector.kt │ │ │ ├── UiPathPaint.kt │ │ │ ├── UiPathPaintCanvasAction.kt │ │ │ ├── controls/ │ │ │ │ ├── DrawContentControls.kt │ │ │ │ ├── DrawContentNoDataControls.kt │ │ │ │ └── DrawContentSecondaryControls.kt │ │ │ ├── element/ │ │ │ │ ├── ArrowParamsSelector.kt │ │ │ │ ├── CustomPathEffectParamsSelector.kt │ │ │ │ ├── DrawPathModeInfoSheet.kt │ │ │ │ ├── FloodFillParamsSelector.kt │ │ │ │ ├── ImageParamsSelector.kt │ │ │ │ ├── OutlinedFillColorSelector.kt │ │ │ │ ├── OvalParamsSelector.kt │ │ │ │ ├── PixelationParamsSelector.kt │ │ │ │ ├── PolygonParamsSelector.kt │ │ │ │ ├── PrivacyBlurParamsSelector.kt │ │ │ │ ├── RectParamsSelector.kt │ │ │ │ ├── SpotHealParamsSelector.kt │ │ │ │ ├── SprayParamsSelector.kt │ │ │ │ ├── StarParamsSelector.kt │ │ │ │ ├── TextParamsSelector.kt │ │ │ │ ├── TriangleParamsSelector.kt │ │ │ │ └── WarpParamsSelector.kt │ │ │ └── utils/ │ │ │ ├── BitmapDrawerPreview.kt │ │ │ ├── DrawPathEffectPreview.kt │ │ │ ├── DrawPathModeUtils.kt │ │ │ ├── DrawRepeatedPath.kt │ │ │ ├── DrawUtils.kt │ │ │ ├── FloodFill.kt │ │ │ ├── MotionEvent.kt │ │ │ ├── PathHelper.kt │ │ │ └── PointerDraw.kt │ │ └── screenLogic/ │ │ └── DrawComponent.kt │ ├── easter-egg/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── easter_egg/ │ │ └── presentation/ │ │ ├── EasterEggContent.kt │ │ └── screenLogic/ │ │ └── EasterEggComponent.kt │ ├── edit-exif/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── edit_exif/ │ │ └── presentation/ │ │ ├── EditExifContent.kt │ │ └── screenLogic/ │ │ └── EditExifComponent.kt │ ├── erase-background/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ ├── foss/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── t8rin/ │ │ │ └── imagetoolbox/ │ │ │ └── feature/ │ │ │ └── erase_background/ │ │ │ └── data/ │ │ │ └── backend/ │ │ │ └── MlKitBackgroundRemoverBackend.kt │ │ ├── main/ │ │ │ ├── AndroidManifest.xml │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── t8rin/ │ │ │ └── imagetoolbox/ │ │ │ └── feature/ │ │ │ └── erase_background/ │ │ │ ├── data/ │ │ │ │ ├── AndroidAutoBackgroundRemover.kt │ │ │ │ ├── AndroidAutoBackgroundRemoverBackendFactory.kt │ │ │ │ └── backend/ │ │ │ │ └── GenericBackgroundRemoverBackend.kt │ │ │ ├── di/ │ │ │ │ └── EraseBackgroundModule.kt │ │ │ ├── domain/ │ │ │ │ ├── AutoBackgroundRemover.kt │ │ │ │ ├── AutoBackgroundRemoverBackend.kt │ │ │ │ ├── AutoBackgroundRemoverBackendFactory.kt │ │ │ │ └── model/ │ │ │ │ └── BgModelType.kt │ │ │ └── presentation/ │ │ │ ├── EraseBackgroundContent.kt │ │ │ ├── components/ │ │ │ │ ├── AutoEraseBackgroundCard.kt │ │ │ │ ├── BitmapEraser.kt │ │ │ │ ├── OriginalImagePreviewAlphaSelector.kt │ │ │ │ ├── RecoverModeCard.kt │ │ │ │ └── TrimImageToggle.kt │ │ │ └── screenLogic/ │ │ │ └── EraseBackgroundComponent.kt │ │ └── market/ │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── erase_background/ │ │ └── data/ │ │ └── backend/ │ │ └── MlKitBackgroundRemoverBackend.kt │ ├── filters/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── filters/ │ │ ├── data/ │ │ │ ├── AndroidFilterMaskApplier.kt │ │ │ ├── AndroidFilterParamsInteractor.kt │ │ │ ├── AndroidFilterProvider.kt │ │ │ ├── model/ │ │ │ │ ├── AcesFilmicToneMappingFilter.kt │ │ │ │ ├── AcesHillToneMappingFilter.kt │ │ │ │ ├── AchromatomalyFilter.kt │ │ │ │ ├── AchromatopsiaFilter.kt │ │ │ │ ├── AldridgeFilter.kt │ │ │ │ ├── AmatorkaFilter.kt │ │ │ │ ├── AnaglyphFilter.kt │ │ │ │ ├── AnisotropicDiffusionFilter.kt │ │ │ │ ├── ArcFilter.kt │ │ │ │ ├── AsciiFilter.kt │ │ │ │ ├── AtkinsonDitheringFilter.kt │ │ │ │ ├── AutoCropFilter.kt │ │ │ │ ├── AutoPerspectiveFilter.kt │ │ │ │ ├── AutoRemoveRedEyesFilter.kt │ │ │ │ ├── AutumnTonesFilter.kt │ │ │ │ ├── AverageDistanceFilter.kt │ │ │ │ ├── BayerEightDitheringFilter.kt │ │ │ │ ├── BayerFourDitheringFilter.kt │ │ │ │ ├── BayerThreeDitheringFilter.kt │ │ │ │ ├── BayerTwoDitheringFilter.kt │ │ │ │ ├── BilaterialBlurFilter.kt │ │ │ │ ├── BlackAndWhiteFilter.kt │ │ │ │ ├── BlackHatFilter.kt │ │ │ │ ├── BleachBypassFilter.kt │ │ │ │ ├── BlockGlitchFilter.kt │ │ │ │ ├── BloomFilter.kt │ │ │ │ ├── BokehFilter.kt │ │ │ │ ├── BorderFrameFilter.kt │ │ │ │ ├── BoxBlurFilter.kt │ │ │ │ ├── BrightnessFilter.kt │ │ │ │ ├── BrowniFilter.kt │ │ │ │ ├── BulgeDistortionFilter.kt │ │ │ │ ├── BurkesDitheringFilter.kt │ │ │ │ ├── CGAColorSpaceFilter.kt │ │ │ │ ├── CandlelightFilter.kt │ │ │ │ ├── CannyFilter.kt │ │ │ │ ├── CaramelDarknessFilter.kt │ │ │ │ ├── CelluloidFilter.kt │ │ │ │ ├── ChannelMixFilter.kt │ │ │ │ ├── CircleBlurFilter.kt │ │ │ │ ├── CirclePixelationFilter.kt │ │ │ │ ├── ClaheFilter.kt │ │ │ │ ├── ClaheHSLFilter.kt │ │ │ │ ├── ClaheHSVFilter.kt │ │ │ │ ├── ClaheJzazbzFilter.kt │ │ │ │ ├── ClaheLABFilter.kt │ │ │ │ ├── ClaheLUVFilter.kt │ │ │ │ ├── ClaheOklabFilter.kt │ │ │ │ ├── ClaheOklchFilter.kt │ │ │ │ ├── ClosingFilter.kt │ │ │ │ ├── Clustered2x2DitheringFilter.kt │ │ │ │ ├── Clustered4x4DitheringFilter.kt │ │ │ │ ├── Clustered8x8DitheringFilter.kt │ │ │ │ ├── CodaChromeFilter.kt │ │ │ │ ├── CoffeeFilter.kt │ │ │ │ ├── ColorAnomalyFilter.kt │ │ │ │ ├── ColorBalanceFilter.kt │ │ │ │ ├── ColorExplosionFilter.kt │ │ │ │ ├── ColorHalftoneFilter.kt │ │ │ │ ├── ColorMapFilter.kt │ │ │ │ ├── ColorMatrix3x3Filter.kt │ │ │ │ ├── ColorMatrix4x4Filter.kt │ │ │ │ ├── ColorOverlayFilter.kt │ │ │ │ ├── ColorPosterFilter.kt │ │ │ │ ├── ColorfulSwirlFilter.kt │ │ │ │ ├── ContourFilter.kt │ │ │ │ ├── ContrastFilter.kt │ │ │ │ ├── ConvexFilter.kt │ │ │ │ ├── Convolution3x3Filter.kt │ │ │ │ ├── CoolFilter.kt │ │ │ │ ├── CopyMoveDetectionFilter.kt │ │ │ │ ├── CropOrPerspectiveFilter.kt │ │ │ │ ├── CropToContentFilter.kt │ │ │ │ ├── CrossBlurFilter.kt │ │ │ │ ├── CrossPixelationFilter.kt │ │ │ │ ├── CrosshatchFilter.kt │ │ │ │ ├── CrtCurvatureFilter.kt │ │ │ │ ├── CrystallizeFilter.kt │ │ │ │ ├── CubeLutFilter.kt │ │ │ │ ├── CyberpunkFilter.kt │ │ │ │ ├── DeepPurpleFilter.kt │ │ │ │ ├── DehazeFilter.kt │ │ │ │ ├── DeskewFilter.kt │ │ │ │ ├── DespeckleFilter.kt │ │ │ │ ├── DeutaromalyFilter.kt │ │ │ │ ├── DeutaronotopiaFilter.kt │ │ │ │ ├── DiamondPixelationFilter.kt │ │ │ │ ├── DiffuseFilter.kt │ │ │ │ ├── DigitalCodeFilter.kt │ │ │ │ ├── DilationFilter.kt │ │ │ │ ├── DoGFilter.kt │ │ │ │ ├── DragoFilter.kt │ │ │ │ ├── DropBluesFilter.kt │ │ │ │ ├── EdgyAmberFilter.kt │ │ │ │ ├── ElectricGradientFilter.kt │ │ │ │ ├── EmbossFilter.kt │ │ │ │ ├── EnhancedCirclePixelationFilter.kt │ │ │ │ ├── EnhancedDiamondPixelationFilter.kt │ │ │ │ ├── EnhancedGlitchFilter.kt │ │ │ │ ├── EnhancedOilFilter.kt │ │ │ │ ├── EnhancedPixelationFilter.kt │ │ │ │ ├── EnhancedZoomBlurFilter.kt │ │ │ │ ├── EqualizeFilter.kt │ │ │ │ ├── EqualizeHistogramAdaptiveFilter.kt │ │ │ │ ├── EqualizeHistogramAdaptiveHSLFilter.kt │ │ │ │ ├── EqualizeHistogramAdaptiveHSVFilter.kt │ │ │ │ ├── EqualizeHistogramAdaptiveLABFilter.kt │ │ │ │ ├── EqualizeHistogramAdaptiveLUVFilter.kt │ │ │ │ ├── EqualizeHistogramFilter.kt │ │ │ │ ├── EqualizeHistogramHSVFilter.kt │ │ │ │ ├── EqualizeHistogramPixelationFilter.kt │ │ │ │ ├── ErodeFilter.kt │ │ │ │ ├── ErrorLevelAnalysisFilter.kt │ │ │ │ ├── ExposureFilter.kt │ │ │ │ ├── FallColorsFilter.kt │ │ │ │ ├── FalseColorFilter.kt │ │ │ │ ├── FalseFloydSteinbergDitheringFilter.kt │ │ │ │ ├── FantasyLandscapeFilter.kt │ │ │ │ ├── FastBilaterialBlurFilter.kt │ │ │ │ ├── FastBlurFilter.kt │ │ │ │ ├── FastGaussianBlur2DFilter.kt │ │ │ │ ├── FastGaussianBlur3DFilter.kt │ │ │ │ ├── FastGaussianBlur4DFilter.kt │ │ │ │ ├── FilmStock50Filter.kt │ │ │ │ ├── FloydSteinbergDitheringFilter.kt │ │ │ │ ├── FoggyNightFilter.kt │ │ │ │ ├── FractalGlassFilter.kt │ │ │ │ ├── FuturisticGradientFilter.kt │ │ │ │ ├── GammaFilter.kt │ │ │ │ ├── GaussianBlurFilter.kt │ │ │ │ ├── GaussianBoxBlurFilter.kt │ │ │ │ ├── GlassSphereRefractionFilter.kt │ │ │ │ ├── GlitchFilter.kt │ │ │ │ ├── GlitchVariantFilter.kt │ │ │ │ ├── GlowFilter.kt │ │ │ │ ├── GoldenForestFilter.kt │ │ │ │ ├── GoldenHourFilter.kt │ │ │ │ ├── GothamFilter.kt │ │ │ │ ├── GrainFilter.kt │ │ │ │ ├── GrayscaleFilter.kt │ │ │ │ ├── GreenSunFilter.kt │ │ │ │ ├── GreenishFilter.kt │ │ │ │ ├── HDRFilter.kt │ │ │ │ ├── HableFilmicToneMappingFilter.kt │ │ │ │ ├── HalftoneFilter.kt │ │ │ │ ├── HazeFilter.kt │ │ │ │ ├── HejlBurgessToneMappingFilter.kt │ │ │ │ ├── HighlightsAndShadowsFilter.kt │ │ │ │ ├── HorizontalWindStaggerFilter.kt │ │ │ │ ├── HotSummerFilter.kt │ │ │ │ ├── HueFilter.kt │ │ │ │ ├── JarvisJudiceNinkeDitheringFilter.kt │ │ │ │ ├── KaleidoscopeFilter.kt │ │ │ │ ├── KodakFilter.kt │ │ │ │ ├── KuwaharaFilter.kt │ │ │ │ ├── LUT512x512Filter.kt │ │ │ │ ├── LaplacianFilter.kt │ │ │ │ ├── LaplacianSimpleFilter.kt │ │ │ │ ├── LavenderDreamFilter.kt │ │ │ │ ├── LeftToRightDitheringFilter.kt │ │ │ │ ├── LemonadeLightFilter.kt │ │ │ │ ├── LensCorrectionFilter.kt │ │ │ │ ├── LinearBoxBlurFilter.kt │ │ │ │ ├── LinearFastGaussianBlurFilter.kt │ │ │ │ ├── LinearFastGaussianBlurNextFilter.kt │ │ │ │ ├── LinearGaussianBlurFilter.kt │ │ │ │ ├── LinearGaussianBoxBlurFilter.kt │ │ │ │ ├── LinearStackBlurFilter.kt │ │ │ │ ├── LinearTentBlurFilter.kt │ │ │ │ ├── LinearTiltShiftFilter.kt │ │ │ │ ├── LogarithmicToneMappingFilter.kt │ │ │ │ ├── LookupFilter.kt │ │ │ │ ├── LowPolyFilter.kt │ │ │ │ ├── LuminanceGradientFilter.kt │ │ │ │ ├── MarbleFilter.kt │ │ │ │ ├── MedianBlurFilter.kt │ │ │ │ ├── MicroMacroPixelationFilter.kt │ │ │ │ ├── MirrorFilter.kt │ │ │ │ ├── MissEtikateFilter.kt │ │ │ │ ├── MobiusFilter.kt │ │ │ │ ├── MoireFilter.kt │ │ │ │ ├── MonochromeFilter.kt │ │ │ │ ├── MorphologicalGradientFilter.kt │ │ │ │ ├── MotionBlurFilter.kt │ │ │ │ ├── NativeStackBlurFilter.kt │ │ │ │ ├── NegativeFilter.kt │ │ │ │ ├── NeonFilter.kt │ │ │ │ ├── NightMagicFilter.kt │ │ │ │ ├── NightVisionFilter.kt │ │ │ │ ├── NoiseFilter.kt │ │ │ │ ├── NonMaximumSuppressionFilter.kt │ │ │ │ ├── NucleusPixelationFilter.kt │ │ │ │ ├── OffsetFilter.kt │ │ │ │ ├── OilFilter.kt │ │ │ │ ├── OldTvFilter.kt │ │ │ │ ├── OpacityFilter.kt │ │ │ │ ├── OpeningFilter.kt │ │ │ │ ├── OrangeHazeFilter.kt │ │ │ │ ├── OrbitalPixelationFilter.kt │ │ │ │ ├── PaletteTransferFilter.kt │ │ │ │ ├── PaletteTransferVariantFilter.kt │ │ │ │ ├── PastelFilter.kt │ │ │ │ ├── PerlinDistortionFilter.kt │ │ │ │ ├── PinchFilter.kt │ │ │ │ ├── PinkDreamFilter.kt │ │ │ │ ├── PixelMeltFilter.kt │ │ │ │ ├── PixelationFilter.kt │ │ │ │ ├── PointillizeFilter.kt │ │ │ │ ├── PoissonBlurFilter.kt │ │ │ │ ├── PolarCoordinatesFilter.kt │ │ │ │ ├── PolaroidFilter.kt │ │ │ │ ├── PolkaDotFilter.kt │ │ │ │ ├── PopArtFilter.kt │ │ │ │ ├── PosterizeFilter.kt │ │ │ │ ├── ProtanopiaFilter.kt │ │ │ │ ├── ProtonomalyFilter.kt │ │ │ │ ├── PulseGridPixelationFilter.kt │ │ │ │ ├── PurpleMistFilter.kt │ │ │ │ ├── QuantizierFilter.kt │ │ │ │ ├── RGBFilter.kt │ │ │ │ ├── RadialTiltShiftFilter.kt │ │ │ │ ├── RadialWeavePixelationFilter.kt │ │ │ │ ├── RainbowWorldFilter.kt │ │ │ │ ├── RandomDitheringFilter.kt │ │ │ │ ├── RedSwirlFilter.kt │ │ │ │ ├── ReduceNoiseFilter.kt │ │ │ │ ├── RemoveColorFilter.kt │ │ │ │ ├── ReplaceColorFilter.kt │ │ │ │ ├── RetroYellowFilter.kt │ │ │ │ ├── RingBlurFilter.kt │ │ │ │ ├── RubberStampFilter.kt │ │ │ │ ├── SandPaintingFilter.kt │ │ │ │ ├── SaturationFilter.kt │ │ │ │ ├── SeamCarvingFilter.kt │ │ │ │ ├── SepiaFilter.kt │ │ │ │ ├── SharpenFilter.kt │ │ │ │ ├── ShuffleBlurFilter.kt │ │ │ │ ├── SideFadeFilter.kt │ │ │ │ ├── SierraDitheringFilter.kt │ │ │ │ ├── SierraLiteDitheringFilter.kt │ │ │ │ ├── SimpleOldTvFilter.kt │ │ │ │ ├── SimpleSketchFilter.kt │ │ │ │ ├── SimpleSolarizeFilter.kt │ │ │ │ ├── SimpleThresholdDitheringFilter.kt │ │ │ │ ├── SimpleWeavePixelationFilter.kt │ │ │ │ ├── SketchFilter.kt │ │ │ │ ├── SmearFilter.kt │ │ │ │ ├── SmoothToonFilter.kt │ │ │ │ ├── SobelEdgeDetectionFilter.kt │ │ │ │ ├── SobelSimpleFilter.kt │ │ │ │ ├── SoftEleganceFilter.kt │ │ │ │ ├── SoftEleganceVariantFilter.kt │ │ │ │ ├── SoftSpringLightFilter.kt │ │ │ │ ├── SolarizeFilter.kt │ │ │ │ ├── SpacePortalFilter.kt │ │ │ │ ├── SparkleFilter.kt │ │ │ │ ├── SpectralFireFilter.kt │ │ │ │ ├── SphereLensDistortionFilter.kt │ │ │ │ ├── SphereRefractionFilter.kt │ │ │ │ ├── SpotHealFilter.kt │ │ │ │ ├── StackBlurFilter.kt │ │ │ │ ├── StaggeredPixelationFilter.kt │ │ │ │ ├── StarBlurFilter.kt │ │ │ │ ├── StrokePixelationFilter.kt │ │ │ │ ├── StuckiDitheringFilter.kt │ │ │ │ ├── SunriseFilter.kt │ │ │ │ ├── SwirlDistortionFilter.kt │ │ │ │ ├── TentBlurFilter.kt │ │ │ │ ├── ThresholdFilter.kt │ │ │ │ ├── ToneCurvesFilter.kt │ │ │ │ ├── ToonFilter.kt │ │ │ │ ├── TopHatFilter.kt │ │ │ │ ├── TriToneFilter.kt │ │ │ │ ├── TritanopiaFilter.kt │ │ │ │ ├── TritonomalyFilter.kt │ │ │ │ ├── TwirlFilter.kt │ │ │ │ ├── TwoRowSierraDitheringFilter.kt │ │ │ │ ├── UchimuraFilter.kt │ │ │ │ ├── UnsharpFilter.kt │ │ │ │ ├── VHSFilter.kt │ │ │ │ ├── VibranceFilter.kt │ │ │ │ ├── VignetteFilter.kt │ │ │ │ ├── VintageFilter.kt │ │ │ │ ├── VoronoiCrystallizeFilter.kt │ │ │ │ ├── VortexPixelationFilter.kt │ │ │ │ ├── WarmFilter.kt │ │ │ │ ├── WaterEffectFilter.kt │ │ │ │ ├── WeakPixelFilter.kt │ │ │ │ ├── WeaveFilter.kt │ │ │ │ ├── WhiteBalanceFilter.kt │ │ │ │ ├── YililomaDitheringFilter.kt │ │ │ │ └── ZoomBlurFilter.kt │ │ │ ├── transformation/ │ │ │ │ ├── ColorMapTransformation.kt │ │ │ │ ├── GPUFilterTransformation.kt │ │ │ │ └── JhFilterTransformation.kt │ │ │ └── utils/ │ │ │ ├── EnumMappings.kt │ │ │ ├── TransformationUtils.kt │ │ │ ├── convolution/ │ │ │ │ └── AireConvolution.kt │ │ │ ├── glitch/ │ │ │ │ ├── GlitchTool.kt │ │ │ │ └── tools/ │ │ │ │ ├── Anaglyph.kt │ │ │ │ └── JpegGlitch.kt │ │ │ ├── gpu/ │ │ │ │ └── GPUImageHighlightShadowWideRangeFilter.kt │ │ │ ├── image/ │ │ │ │ └── ImageLoader.kt │ │ │ ├── pixelation/ │ │ │ │ ├── PixelationTool.kt │ │ │ │ └── tool/ │ │ │ │ ├── PixelationCommands.kt │ │ │ │ └── PixelationLayer.kt │ │ │ └── serialization/ │ │ │ ├── FilterSerializationUtils.kt │ │ │ └── Mappings.kt │ │ ├── di/ │ │ │ └── FilterModule.kt │ │ ├── domain/ │ │ │ ├── FilterMask.kt │ │ │ └── FilterMaskApplier.kt │ │ └── presentation/ │ │ ├── FiltersContent.kt │ │ ├── components/ │ │ │ ├── BasicFilterPreference.kt │ │ │ ├── BasicFilterState.kt │ │ │ ├── FiltersContentActionButtons.kt │ │ │ ├── FiltersContentControls.kt │ │ │ ├── FiltersContentNoData.kt │ │ │ ├── FiltersContentSheets.kt │ │ │ ├── FiltersContentTopAppBarActions.kt │ │ │ ├── MaskFilterPreference.kt │ │ │ ├── MaskItem.kt │ │ │ ├── MaskReorderSheet.kt │ │ │ ├── MaskingFilterState.kt │ │ │ ├── PathPaintPreview.kt │ │ │ ├── UiFilterMask.kt │ │ │ └── addEditMaskSheet/ │ │ │ ├── AddEditMaskSheet.kt │ │ │ ├── AddEditMaskSheetControls.kt │ │ │ ├── AddMaskSheetBitmapPreview.kt │ │ │ └── AddMaskSheetComponent.kt │ │ └── screenLogic/ │ │ └── FiltersComponent.kt │ ├── format-conversion/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── format_conversion/ │ │ └── presentation/ │ │ ├── FormatConversionContent.kt │ │ └── screenLogic/ │ │ └── FormatConversionComponent.kt │ ├── gif-tools/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── gif_tools/ │ │ ├── data/ │ │ │ └── AndroidGifConverter.kt │ │ ├── di/ │ │ │ └── GifToolsModule.kt │ │ ├── domain/ │ │ │ ├── GifConverter.kt │ │ │ └── GifParams.kt │ │ └── presentation/ │ │ ├── GifToolsContent.kt │ │ ├── components/ │ │ │ ├── GifParamsSelector.kt │ │ │ ├── GifToolsControls.kt │ │ │ ├── GifToolsImagePreview.kt │ │ │ ├── GifToolsNoDataControls.kt │ │ │ └── GifToolsTopAppBarActions.kt │ │ └── screenLogic/ │ │ └── GifToolsComponent.kt │ ├── gradient-maker/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── gradient_maker/ │ │ ├── data/ │ │ │ └── AndroidGradientMaker.kt │ │ ├── di/ │ │ │ └── GradientMakerModule.kt │ │ ├── domain/ │ │ │ ├── GradientMaker.kt │ │ │ ├── GradientState.kt │ │ │ ├── GradientType.kt │ │ │ └── MeshGradientState.kt │ │ └── presentation/ │ │ ├── GradientMakerContent.kt │ │ ├── components/ │ │ │ ├── ColorStopSelection.kt │ │ │ ├── GradientMakerAppColorSchemeHandler.kt │ │ │ ├── GradientMakerBottomButtons.kt │ │ │ ├── GradientMakerCompareButton.kt │ │ │ ├── GradientMakerControls.kt │ │ │ ├── GradientMakerImagePreview.kt │ │ │ ├── GradientMakerNoDataControls.kt │ │ │ ├── GradientPreview.kt │ │ │ ├── GradientPropertiesSelector.kt │ │ │ ├── GradientSizeSelector.kt │ │ │ ├── GradientTypeSelector.kt │ │ │ ├── MeshGradientEditor.kt │ │ │ ├── MeshGradientPreview.kt │ │ │ ├── TileModeSelector.kt │ │ │ ├── UiGradientState.kt │ │ │ └── model/ │ │ │ └── GradientMakerType.kt │ │ └── screenLogic/ │ │ └── GradientMakerComponent.kt │ ├── image-cutting/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── image_cutting/ │ │ ├── data/ │ │ │ └── AndroidImageCutter.kt │ │ ├── di/ │ │ │ └── ImageCutterModule.kt │ │ ├── domain/ │ │ │ ├── CutParams.kt │ │ │ └── ImageCutter.kt │ │ └── presentation/ │ │ ├── ImageCutterContent.kt │ │ ├── components/ │ │ │ ├── CutParamsSelector.kt │ │ │ ├── CutPreview.kt │ │ │ └── Utils.kt │ │ └── screenLogic/ │ │ └── ImageCutterComponent.kt │ ├── image-preview/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── image_preview/ │ │ └── presentation/ │ │ ├── ImagePreviewContent.kt │ │ └── screenLogic/ │ │ └── ImagePreviewComponent.kt │ ├── image-splitting/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── image_splitting/ │ │ ├── data/ │ │ │ └── AndroidImageSplitter.kt │ │ ├── di/ │ │ │ └── ImageSplitterModule.kt │ │ ├── domain/ │ │ │ ├── ImageSplitter.kt │ │ │ └── SplitParams.kt │ │ └── presentation/ │ │ ├── ImageSplitterContent.kt │ │ ├── components/ │ │ │ └── SplitParamsSelector.kt │ │ └── screenLogic/ │ │ └── ImageSplitterComponent.kt │ ├── image-stacking/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── image_stacking/ │ │ ├── data/ │ │ │ └── AndroidImageStacker.kt │ │ ├── di/ │ │ │ └── ImageStackingModule.kt │ │ ├── domain/ │ │ │ ├── ImageStacker.kt │ │ │ ├── StackImage.kt │ │ │ └── StackingParams.kt │ │ └── presentation/ │ │ ├── ImageStackingContent.kt │ │ ├── components/ │ │ │ ├── StackImageItem.kt │ │ │ └── StackingParamsSelector.kt │ │ └── screenLogic/ │ │ └── ImageStackingComponent.kt │ ├── image-stitch/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── image_stitch/ │ │ ├── data/ │ │ │ ├── AndroidImageCombiner.kt │ │ │ └── CvStitchHelper.kt │ │ ├── di/ │ │ │ └── ImageStitchModule.kt │ │ ├── domain/ │ │ │ ├── CombiningParams.kt │ │ │ ├── ImageCombiner.kt │ │ │ ├── SavableCombiningParams.kt │ │ │ ├── StitchAlignment.kt │ │ │ ├── StitchFadeSide.kt │ │ │ └── StitchMode.kt │ │ └── presentation/ │ │ ├── ImageStitchingContent.kt │ │ ├── components/ │ │ │ ├── FadeStrengthSelector.kt │ │ │ ├── ImageFadingEdgesSelector.kt │ │ │ ├── ImageScaleSelector.kt │ │ │ ├── SpacingSelector.kt │ │ │ ├── StitchAlignmentSelector.kt │ │ │ └── StitchModeSelector.kt │ │ └── screenLogic/ │ │ └── ImageStitchingComponent.kt │ ├── jxl-tools/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── jxl_tools/ │ │ ├── data/ │ │ │ └── AndroidJxlConverter.kt │ │ ├── di/ │ │ │ └── JxlToolsModule.kt │ │ ├── domain/ │ │ │ ├── AnimatedJxlParams.kt │ │ │ └── JxlConverter.kt │ │ └── presentation/ │ │ ├── JxlToolsContent.kt │ │ ├── components/ │ │ │ ├── AnimatedJxlParamsSelector.kt │ │ │ ├── JxlToolsBitmapPreview.kt │ │ │ ├── JxlToolsButtons.kt │ │ │ ├── JxlToolsControls.kt │ │ │ ├── JxlToolsNoDataControls.kt │ │ │ └── JxlToolsTopAppBarActions.kt │ │ └── screenLogic/ │ │ └── JxlToolsComponent.kt │ ├── libraries-info/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── libraries_info/ │ │ └── presentation/ │ │ ├── LibrariesInfoContent.kt │ │ ├── components/ │ │ │ ├── LibrariesContainer.kt │ │ │ └── LibraryLink.kt │ │ └── screenLogic/ │ │ └── LibrariesInfoComponent.kt │ ├── library-details/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── library_details/ │ │ └── presentation/ │ │ ├── LibraryDetailsContent.kt │ │ └── screenLogic/ │ │ └── LibraryDetailsComponent.kt │ ├── limits-resize/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── limits_resize/ │ │ ├── data/ │ │ │ └── AndroidLimitsImageScaler.kt │ │ ├── di/ │ │ │ └── LimitsResizeModule.kt │ │ ├── domain/ │ │ │ ├── LimitsImageScaler.kt │ │ │ └── LimitsResizeType.kt │ │ └── presentation/ │ │ ├── LimitsResizeContent.kt │ │ ├── components/ │ │ │ ├── AutoRotateLimitBoxToggle.kt │ │ │ └── LimitResizeGroup.kt │ │ └── screenLogic/ │ │ └── LimitsResizeComponent.kt │ ├── load-net-image/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── load_net_image/ │ │ ├── data/ │ │ │ └── AndroidHtmlImageParser.kt │ │ ├── di/ │ │ │ └── LoadNetImageModule.kt │ │ ├── domain/ │ │ │ └── HtmlImageParser.kt │ │ └── presentation/ │ │ ├── LoadNetImageContent.kt │ │ ├── components/ │ │ │ ├── LoadNetImageActionButtons.kt │ │ │ ├── LoadNetImageAdaptiveActions.kt │ │ │ ├── LoadNetImageTopAppBarActions.kt │ │ │ ├── LoadNetImageUrlTextField.kt │ │ │ ├── ParsedImagePreview.kt │ │ │ └── ParsedImagesSelection.kt │ │ └── screenLogic/ │ │ └── LoadNetImageComponent.kt │ ├── main/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── main/ │ │ └── presentation/ │ │ ├── MainContent.kt │ │ ├── components/ │ │ │ ├── FilteredScreenListFor.kt │ │ │ ├── LauncherScreenSelector.kt │ │ │ ├── MainContentImpl.kt │ │ │ ├── MainDrawerContent.kt │ │ │ ├── MainNavigationBar.kt │ │ │ ├── MainNavigationBarForFavorites.kt │ │ │ ├── MainNavigationRail.kt │ │ │ ├── MainNavigationRailForFavorites.kt │ │ │ ├── MainTopAppBar.kt │ │ │ ├── ScreenPreferenceSelection.kt │ │ │ └── SearchableBottomBar.kt │ │ └── screenLogic/ │ │ └── MainComponent.kt │ ├── markup-layers/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── markup_layers/ │ │ ├── data/ │ │ │ ├── AndroidMarkupLayersApplier.kt │ │ │ ├── project/ │ │ │ │ ├── AssetRegistry.kt │ │ │ │ ├── Mapping.kt │ │ │ │ ├── MarkupProjectConstants.kt │ │ │ │ ├── MarkupProjectExtensions.kt │ │ │ │ ├── MarkupProjectFile.kt │ │ │ │ └── ProjectFileLoadResult.kt │ │ │ └── utils/ │ │ │ ├── LayersRenderer.kt │ │ │ ├── PictureLayerShadowRenderer.kt │ │ │ ├── ShapeLayerRenderer.kt │ │ │ ├── TextLayerMetrics.kt │ │ │ └── TextLayerShadowRenderer.kt │ │ ├── di/ │ │ │ └── MarkupLayersModule.kt │ │ ├── domain/ │ │ │ ├── MarkupLayer.kt │ │ │ ├── MarkupLayersApplier.kt │ │ │ ├── MarkupProject.kt │ │ │ ├── MarkupProjectResult.kt │ │ │ ├── ProjectBackground.kt │ │ │ └── ShapeLayerModeExt.kt │ │ └── presentation/ │ │ ├── MarkupLayersContent.kt │ │ ├── components/ │ │ │ ├── ActiveLayerGestureModifier.kt │ │ │ ├── AddShapeLayerDialog.kt │ │ │ ├── AddTextLayerDialog.kt │ │ │ ├── ClickableTile.kt │ │ │ ├── DropShadowSection.kt │ │ │ ├── EditBox.kt │ │ │ ├── EditBoxState.kt │ │ │ ├── EditLayerSheet.kt │ │ │ ├── Layer.kt │ │ │ ├── LayerContent.kt │ │ │ ├── MarkupLayersActions.kt │ │ │ ├── MarkupLayersContextActions.kt │ │ │ ├── MarkupLayersNoDataControls.kt │ │ │ ├── MarkupLayersSideMenu.kt │ │ │ ├── MarkupLayersSideMenuColumn.kt │ │ │ ├── MarkupLayersTopAppBarActions.kt │ │ │ ├── ShapeLayerParamsSelector.kt │ │ │ └── model/ │ │ │ ├── BackgroundBehavior.kt │ │ │ ├── ShapeLayerModeUiExt.kt │ │ │ ├── UiMarkupLayer.kt │ │ │ └── UiMarkupLayerGrouping.kt │ │ └── screenLogic/ │ │ └── MarkupLayersComponent.kt │ ├── media-picker/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── media_picker/ │ │ ├── data/ │ │ │ ├── AndroidMediaRetriever.kt │ │ │ └── utils/ │ │ │ ├── DateExt.kt │ │ │ ├── MediaObserver.kt │ │ │ ├── MediaQuery.kt │ │ │ └── SupportedFiles.kt │ │ ├── di/ │ │ │ └── MediaPickerModule.kt │ │ ├── domain/ │ │ │ ├── MediaRetriever.kt │ │ │ └── model/ │ │ │ ├── Album.kt │ │ │ ├── AllowedMedia.kt │ │ │ ├── Media.kt │ │ │ ├── MediaItem.kt │ │ │ ├── MediaOrder.kt │ │ │ ├── MediaState.kt │ │ │ └── OrderType.kt │ │ └── presentation/ │ │ ├── MediaPickerActivity.kt │ │ ├── components/ │ │ │ ├── ManageExternalStorageWarning.kt │ │ │ ├── MediaExtensionHeader.kt │ │ │ ├── MediaImage.kt │ │ │ ├── MediaImagePager.kt │ │ │ ├── MediaPickerGrid.kt │ │ │ ├── MediaPickerGridWithOverlays.kt │ │ │ ├── MediaPickerHavePermissions.kt │ │ │ ├── MediaPickerRootContent.kt │ │ │ ├── MediaPickerRootContentEmbeddable.kt │ │ │ ├── MediaSizeFooter.kt │ │ │ ├── MediaStickyHeader.kt │ │ │ ├── MediaVideoDurationHeader.kt │ │ │ ├── ObserveColorSchemeExtra.kt │ │ │ └── SendMediaAsResult.kt │ │ └── screenLogic/ │ │ └── MediaPickerComponent.kt │ ├── mesh-gradients/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── mesh_gradients/ │ │ └── presentation/ │ │ ├── MeshGradientsContent.kt │ │ └── screenLogic/ │ │ └── MeshGradientsComponent.kt │ ├── noise-generation/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── noise_generation/ │ │ ├── data/ │ │ │ └── AndroidNoiseGenerator.kt │ │ ├── di/ │ │ │ └── NoiseGenerationModule.kt │ │ ├── domain/ │ │ │ ├── NoiseGenerator.kt │ │ │ └── model/ │ │ │ ├── CellularDistanceFunction.kt │ │ │ ├── CellularReturnType.kt │ │ │ ├── DomainWarpType.kt │ │ │ ├── FractalType.kt │ │ │ ├── NoiseParams.kt │ │ │ ├── NoiseType.kt │ │ │ └── RotationType3D.kt │ │ └── presentation/ │ │ ├── NoiseGenerationContent.kt │ │ ├── components/ │ │ │ └── NoiseParamsSelection.kt │ │ └── screenLogic/ │ │ └── NoiseGenerationComponent.kt │ ├── palette-tools/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── palette_tools/ │ │ └── presentation/ │ │ ├── PaletteToolsContent.kt │ │ ├── components/ │ │ │ ├── DefaultPaletteControls.kt │ │ │ ├── EditPaletteControls.kt │ │ │ ├── ImageColorPalette.kt │ │ │ ├── MaterialYouPalette.kt │ │ │ ├── MaterialYouPaletteControls.kt │ │ │ ├── MaterialYouPaletteGroup.kt │ │ │ ├── MaterialYouPaletteItem.kt │ │ │ ├── PaletteColorNameField.kt │ │ │ ├── PaletteColorsCountSelector.kt │ │ │ ├── PaletteToolsScreenControls.kt │ │ │ ├── PaletteType.kt │ │ │ └── model/ │ │ │ ├── NamedColor.kt │ │ │ └── PaletteFormatHelper.kt │ │ └── screenLogic/ │ │ └── PaletteToolsComponent.kt │ ├── pdf-tools/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── pdf_tools/ │ │ ├── data/ │ │ │ ├── AndroidPdfHelper.kt │ │ │ ├── AndroidPdfManager.kt │ │ │ └── utils/ │ │ │ ├── Hocr.kt │ │ │ ├── PdfContentStreamEditor.kt │ │ │ ├── PdfRenderer.kt │ │ │ └── PdfUtils.kt │ │ ├── di/ │ │ │ └── PdfToolsModule.kt │ │ ├── domain/ │ │ │ ├── PdfHelper.kt │ │ │ ├── PdfManager.kt │ │ │ └── model/ │ │ │ ├── ExtractPagesAction.kt │ │ │ ├── PageOrientation.kt │ │ │ ├── PageSize.kt │ │ │ ├── PdfAnnotationType.kt │ │ │ ├── PdfCheckResult.kt │ │ │ ├── PdfCreationParams.kt │ │ │ ├── PdfCropParams.kt │ │ │ ├── PdfExtractPagesParams.kt │ │ │ ├── PdfMetadata.kt │ │ │ ├── PdfPageNumbersParams.kt │ │ │ ├── PdfRemoveAnnotationParams.kt │ │ │ ├── PdfSignatureParams.kt │ │ │ ├── PdfWatermarkParams.kt │ │ │ ├── PrintPdfParams.kt │ │ │ └── SearchablePdfPage.kt │ │ └── presentation/ │ │ ├── common/ │ │ │ ├── BasePdfToolComponent.kt │ │ │ ├── BasePdfToolContent.kt │ │ │ ├── PageSwitcher.kt │ │ │ └── PdfPreviewItem.kt │ │ ├── compress/ │ │ │ ├── CompressPdfToolContent.kt │ │ │ └── screenLogic/ │ │ │ └── CompressPdfToolComponent.kt │ │ ├── crop/ │ │ │ ├── CropPdfToolContent.kt │ │ │ ├── components/ │ │ │ │ └── CropPreview.kt │ │ │ └── screenLogic/ │ │ │ └── CropPdfToolComponent.kt │ │ ├── extract_images/ │ │ │ ├── ExtractImagesPdfToolContent.kt │ │ │ └── screenLogic/ │ │ │ └── ExtractImagesPdfToolComponent.kt │ │ ├── extract_pages/ │ │ │ ├── ExtractPagesPdfToolContent.kt │ │ │ └── screenLogic/ │ │ │ └── ExtractPagesPdfToolComponent.kt │ │ ├── flatten/ │ │ │ ├── FlattenPdfToolContent.kt │ │ │ └── screenLogic/ │ │ │ └── FlattenPdfToolComponent.kt │ │ ├── grayscale/ │ │ │ ├── GrayscalePdfToolContent.kt │ │ │ └── screenLogic/ │ │ │ └── GrayscalePdfToolComponent.kt │ │ ├── images_to_pdf/ │ │ │ ├── ImagesToPdfToolContent.kt │ │ │ └── screenLogic/ │ │ │ └── ImagesToPdfToolComponent.kt │ │ ├── merge/ │ │ │ ├── MergePdfToolContent.kt │ │ │ └── screenLogic/ │ │ │ └── MergePdfToolComponent.kt │ │ ├── metadata/ │ │ │ ├── MetadataPdfToolContent.kt │ │ │ ├── components/ │ │ │ │ └── MetadataEditor.kt │ │ │ └── screenLogic/ │ │ │ └── MetadataPdfToolComponent.kt │ │ ├── ocr/ │ │ │ ├── OCRPdfToolContent.kt │ │ │ └── screenLogic/ │ │ │ └── OCRPdfToolComponent.kt │ │ ├── page_numbers/ │ │ │ ├── PageNumbersPdfToolContent.kt │ │ │ ├── components/ │ │ │ │ └── PageNumbersPreview.kt │ │ │ └── screenLogic/ │ │ │ └── PageNumbersPdfToolComponent.kt │ │ ├── preview/ │ │ │ ├── PreviewPdfToolContent.kt │ │ │ └── screenLogic/ │ │ │ └── PreviewPdfToolComponent.kt │ │ ├── print/ │ │ │ ├── PrintPdfToolContent.kt │ │ │ └── screenLogic/ │ │ │ └── PrintPdfToolComponent.kt │ │ ├── protect/ │ │ │ ├── ProtectPdfToolContent.kt │ │ │ └── screenLogic/ │ │ │ └── ProtectPdfToolComponent.kt │ │ ├── rearrange/ │ │ │ ├── RearrangePdfToolContent.kt │ │ │ ├── components/ │ │ │ │ └── PdfPagesRearrangeGrid.kt │ │ │ └── screenLogic/ │ │ │ └── RearrangePdfToolComponent.kt │ │ ├── remove_annotations/ │ │ │ ├── RemoveAnnotationsPdfToolContent.kt │ │ │ ├── components/ │ │ │ │ ├── PdfAnnotationTypeSelector.kt │ │ │ │ └── RemoveAnnotationsPreview.kt │ │ │ └── screenLogic/ │ │ │ └── RemoveAnnotationsPdfToolComponent.kt │ │ ├── remove_pages/ │ │ │ ├── RemovePagesPdfToolContent.kt │ │ │ ├── components/ │ │ │ │ └── PdfPagesRemoveGrid.kt │ │ │ └── screenLogic/ │ │ │ └── RemovePagesPdfToolComponent.kt │ │ ├── repair/ │ │ │ ├── RepairPdfToolContent.kt │ │ │ └── screenLogic/ │ │ │ └── RepairPdfToolComponent.kt │ │ ├── root/ │ │ │ ├── RootPdfToolsContent.kt │ │ │ ├── components/ │ │ │ │ ├── PdfViewer.kt │ │ │ │ └── viewer/ │ │ │ │ ├── LegacyPdfViewer.kt │ │ │ │ ├── ModernPdfViewer.kt │ │ │ │ └── ModernPdfViewerDelegate.kt │ │ │ └── screenLogic/ │ │ │ └── RootPdfToolsComponent.kt │ │ ├── rotate/ │ │ │ ├── RotatePdfToolContent.kt │ │ │ ├── components/ │ │ │ │ └── PdfPagesRotationGrid.kt │ │ │ └── screenLogic/ │ │ │ └── RotatePdfToolComponent.kt │ │ ├── signature/ │ │ │ ├── SignaturePdfToolContent.kt │ │ │ ├── components/ │ │ │ │ ├── SignatureDialog.kt │ │ │ │ ├── SignaturePreview.kt │ │ │ │ └── SignatureSelector.kt │ │ │ └── screenLogic/ │ │ │ └── SignaturePdfToolComponent.kt │ │ ├── split/ │ │ │ ├── SplitPdfToolContent.kt │ │ │ └── screenLogic/ │ │ │ └── SplitPdfToolComponent.kt │ │ ├── unlock/ │ │ │ ├── UnlockPdfToolContent.kt │ │ │ └── screenLogic/ │ │ │ └── UnlockPdfToolComponent.kt │ │ ├── watermark/ │ │ │ ├── WatermarkPdfToolContent.kt │ │ │ ├── components/ │ │ │ │ └── WatermarkPreview.kt │ │ │ └── screenLogic/ │ │ │ └── WatermarkPdfToolComponent.kt │ │ └── zip_convert/ │ │ ├── ZipConvertPdfToolContent.kt │ │ └── screenLogic/ │ │ └── ZipConvertPdfToolComponent.kt │ ├── pick-color/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── pick_color/ │ │ └── presentation/ │ │ ├── PickColorFromImageContent.kt │ │ ├── components/ │ │ │ ├── PickColorFromImageBottomAppBar.kt │ │ │ ├── PickColorFromImageContentImpl.kt │ │ │ ├── PickColorFromImageSheet.kt │ │ │ └── PickColorFromImageTopAppBar.kt │ │ └── screenLogic/ │ │ └── PickColorFromImageComponent.kt │ ├── quick-tiles/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── quick_tiles/ │ │ ├── screenshot/ │ │ │ ├── Contants.kt │ │ │ ├── ScreenshotLauncher.kt │ │ │ ├── ScreenshotMaker.kt │ │ │ └── ScreenshotService.kt │ │ └── tiles/ │ │ ├── QuickTile.kt │ │ ├── TileAction.kt │ │ └── Tiles.kt │ ├── recognize-text/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── recognize/ │ │ └── text/ │ │ ├── data/ │ │ │ └── AndroidImageTextReader.kt │ │ ├── di/ │ │ │ └── RecognizeTextModule.kt │ │ ├── domain/ │ │ │ ├── DownloadData.kt │ │ │ ├── ImageTextReader.kt │ │ │ ├── OCRLanguage.kt │ │ │ ├── OcrEngineMode.kt │ │ │ ├── RecognitionData.kt │ │ │ ├── RecognitionType.kt │ │ │ ├── SegmentationMode.kt │ │ │ ├── TessConstants.kt │ │ │ ├── TessParams.kt │ │ │ └── TextRecognitionResult.kt │ │ └── presentation/ │ │ ├── RecognizeTextContent.kt │ │ ├── components/ │ │ │ ├── DeleteLanguageDialog.kt │ │ │ ├── DownloadLanguageDialog.kt │ │ │ ├── DownloadedLanguageItem.kt │ │ │ ├── FillableButton.kt │ │ │ ├── FilterSelectionBar.kt │ │ │ ├── ModelTypeSelector.kt │ │ │ ├── OCRLanguageColumnForSearch.kt │ │ │ ├── OCRLanguagesColumn.kt │ │ │ ├── OCRTextPreviewItem.kt │ │ │ ├── OcrEngineModeSelector.kt │ │ │ ├── RecognitionTypeSelector.kt │ │ │ ├── RecognizeLanguageSelector.kt │ │ │ ├── RecognizeLanguageSelectorSheetContent.kt │ │ │ ├── RecognizeTextButtons.kt │ │ │ ├── RecognizeTextControls.kt │ │ │ ├── RecognizeTextDownloadDataDialog.kt │ │ │ ├── RecognizeTextNoDataControls.kt │ │ │ ├── TessParamsSelector.kt │ │ │ └── UiDownloadData.kt │ │ └── screenLogic/ │ │ └── RecognizeTextComponent.kt │ ├── resize-convert/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── resize_convert/ │ │ └── presentation/ │ │ ├── ResizeAndConvertContent.kt │ │ └── screenLogic/ │ │ └── ResizeAndConvertComponent.kt │ ├── root/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── root/ │ │ └── presentation/ │ │ ├── RootContent.kt │ │ ├── components/ │ │ │ ├── RootDialogs.kt │ │ │ ├── ScreenSelector.kt │ │ │ ├── SettingsBackdropWrapper.kt │ │ │ ├── SettingsOpenButton.kt │ │ │ ├── dialogs/ │ │ │ │ ├── AppExitDialog.kt │ │ │ │ ├── EditPresetsSheet.kt │ │ │ │ ├── FirstLaunchSetupDialog.kt │ │ │ │ ├── GithubReviewDialog.kt │ │ │ │ ├── PermissionDialog.kt │ │ │ │ └── TelegramGroupDialog.kt │ │ │ ├── navigation/ │ │ │ │ ├── ChildProvider.kt │ │ │ │ └── NavigationChild.kt │ │ │ └── utils/ │ │ │ ├── BackEventObserver.kt │ │ │ ├── ResetThemeOnGoBack.kt │ │ │ ├── ScreenBasedMaxBrightnessEnforcement.kt │ │ │ ├── SettingsUtils.kt │ │ │ └── SuccessRestoreBackupToastHandler.kt │ │ └── screenLogic/ │ │ └── RootComponent.kt │ ├── scan-qr-code/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── scan_qr_code/ │ │ ├── data/ │ │ │ └── AndroidImageBarcodeReader.kt │ │ ├── di/ │ │ │ └── ScanQrCodeModule.kt │ │ ├── domain/ │ │ │ └── ImageBarcodeReader.kt │ │ └── presentation/ │ │ ├── ScanQrCodeContent.kt │ │ ├── components/ │ │ │ ├── QrCodePreview.kt │ │ │ ├── QrInfo.kt │ │ │ ├── QrInfoBuilder.kt │ │ │ ├── QrParamsSelector.kt │ │ │ ├── QrPreviewParams.kt │ │ │ ├── QrTypeEditSheet.kt │ │ │ ├── QrTypeInfoItem.kt │ │ │ ├── QrTypeUtils.kt │ │ │ ├── ScanQrCodeControls.kt │ │ │ └── editor/ │ │ │ ├── QrCalendarEditField.kt │ │ │ ├── QrContactEditField.kt │ │ │ ├── QrEditField.kt │ │ │ ├── QrEmailEditField.kt │ │ │ ├── QrGeoEditField.kt │ │ │ ├── QrPhoneEditField.kt │ │ │ ├── QrSmsEditField.kt │ │ │ └── QrWifiEditField.kt │ │ └── screenLogic/ │ │ └── ScanQrCodeComponent.kt │ ├── settings/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── settings/ │ │ ├── data/ │ │ │ ├── AndroidSettingsManager.kt │ │ │ ├── ContextUtils.kt │ │ │ └── keys/ │ │ │ ├── MapToSettingsState.kt │ │ │ └── SettingKeys.kt │ │ ├── di/ │ │ │ └── SettingsModule.kt │ │ └── presentation/ │ │ ├── SettingsContent.kt │ │ ├── components/ │ │ │ ├── AddFileSizeSettingItem.kt │ │ │ ├── AddImageScaleModeToFilenameSettingItem.kt │ │ │ ├── AddOriginalFilenameSettingItem.kt │ │ │ ├── AddPresetToFilenameSettingItem.kt │ │ │ ├── AddTimestampToFilenameSettingItem.kt │ │ │ ├── AllowAutoClipboardPasteSettingItem.kt │ │ │ ├── AllowBetasSettingItem.kt │ │ │ ├── AllowImageMonetSettingItem.kt │ │ │ ├── AllowSkipIfLargerSettingItem.kt │ │ │ ├── AmoledModeSettingItem.kt │ │ │ ├── AnalyticsSettingItem.kt │ │ │ ├── AppBarShadowsSettingItem.kt │ │ │ ├── AuthorSettingItem.kt │ │ │ ├── AutoCacheClearSettingItem.kt │ │ │ ├── AutoCheckUpdatesSettingItem.kt │ │ │ ├── AutoPinClipboardOnlyClipSettingItem.kt │ │ │ ├── AutoPinClipboardSettingItem.kt │ │ │ ├── BackupSettingItem.kt │ │ │ ├── BorderThicknessSettingItem.kt │ │ │ ├── BrightnessEnforcementSettingItem.kt │ │ │ ├── ButtonShadowsSettingItem.kt │ │ │ ├── CanEnterPresetsByTextFieldSettingItem.kt │ │ │ ├── CenterAlignDialogButtonsSettingItem.kt │ │ │ ├── ChangeFontSettingItem.kt │ │ │ ├── ChangeLanguageSettingItem.kt │ │ │ ├── CheckUpdatesButtonSettingItem.kt │ │ │ ├── ChecksumAsFilenameSettingItem.kt │ │ │ ├── ClearCacheSettingItem.kt │ │ │ ├── ColorBlindSchemeSettingItem.kt │ │ │ ├── ColorSchemeSettingItem.kt │ │ │ ├── ConfettiHarmonizationColorSettingItem.kt │ │ │ ├── ConfettiHarmonizationLevelSettingItem.kt │ │ │ ├── ConfettiSettingItem.kt │ │ │ ├── ConfettiTypeSettingItem.kt │ │ │ ├── ContainerShadowsSettingItem.kt │ │ │ ├── CornersSizeSettingItem.kt │ │ │ ├── CrashlyticsSettingItem.kt │ │ │ ├── CurrentVersionCodeSettingItem.kt │ │ │ ├── DefaultColorSpaceSettingItem.kt │ │ │ ├── DefaultDrawColorSettingItem.kt │ │ │ ├── DefaultDrawLineWidthSettingItem.kt │ │ │ ├── DefaultDrawPathModeSettingItem.kt │ │ │ ├── DefaultImageFormatSettingItem.kt │ │ │ ├── DefaultQualitySettingItem.kt │ │ │ ├── DefaultResizeTypeSettingItem.kt │ │ │ ├── DefaultScaleModeSettingItem.kt │ │ │ ├── DonateSettingItem.kt │ │ │ ├── DragHandleWidthSettingItem.kt │ │ │ ├── DynamicColorsSettingItem.kt │ │ │ ├── EmojiSettingItem.kt │ │ │ ├── EmojisCountSettingItem.kt │ │ │ ├── EnableBackgroundColorForAlphaFormatsSettingItem.kt │ │ │ ├── EnableLauncherModeSettingItem.kt │ │ │ ├── EnableLinksPreviewSettingItem.kt │ │ │ ├── EnableToolExitConfirmationSettingItem.kt │ │ │ ├── ExifWidgetInitialStateSettingItem.kt │ │ │ ├── FabAlignmentSettingItem.kt │ │ │ ├── FabShadowsSettingItem.kt │ │ │ ├── FastSettingsSideSettingItem.kt │ │ │ ├── FilenamePatternSettingItem.kt │ │ │ ├── FilenamePrefixSettingItem.kt │ │ │ ├── FilenameSuffixSettingItem.kt │ │ │ ├── FlingTypeSettingItem.kt │ │ │ ├── FontScaleSettingItem.kt │ │ │ ├── FreeSoftwarePartnerSettingItem.kt │ │ │ ├── GeneratePreviewsSettingItem.kt │ │ │ ├── GroupOptionsSettingItem.kt │ │ │ ├── HelpTranslateSettingItem.kt │ │ │ ├── IconShapeSettingItem.kt │ │ │ ├── ImagePickerModeSettingItemGroup.kt │ │ │ ├── IssueTrackerSettingItem.kt │ │ │ ├── KeepDateTimeSettingItem.kt │ │ │ ├── LockDrawOrientationSettingItem.kt │ │ │ ├── MagnifierSettingItem.kt │ │ │ ├── MainScreenTitleSettingItem.kt │ │ │ ├── NightModeSettingItemGroup.kt │ │ │ ├── OneTimeSaveLocationSettingItem.kt │ │ │ ├── OpenEditInsteadOfPreviewSettingItem.kt │ │ │ ├── OpenSourceLicensesSettingItem.kt │ │ │ ├── OverwriteFilesSettingItem.kt │ │ │ ├── PresetsSettingItem.kt │ │ │ ├── RandomizeFilenameSettingItem.kt │ │ │ ├── ReplaceSequenceNumberSettingItem.kt │ │ │ ├── ResetSettingsSettingItem.kt │ │ │ ├── RestoreSettingItem.kt │ │ │ ├── SavingFolderSettingItemGroup.kt │ │ │ ├── ScreenOrderSettingItem.kt │ │ │ ├── ScreenSearchSettingItem.kt │ │ │ ├── SearchableSettingItem.kt │ │ │ ├── SecureModeSettingItem.kt │ │ │ ├── SendLogsSettingItem.kt │ │ │ ├── SettingGroupItem.kt │ │ │ ├── SettingItem.kt │ │ │ ├── ShapeTypeSettingItem.kt │ │ │ ├── ShowSettingsInLandscapeSettingItem.kt │ │ │ ├── ShowSystemBarsBySwipeSettingItem.kt │ │ │ ├── SkipImagePickingSettingItem.kt │ │ │ ├── SliderShadowsSettingItem.kt │ │ │ ├── SliderTypeSettingItem.kt │ │ │ ├── SnowfallModeSettingItem.kt │ │ │ ├── SourceCodeSettingItem.kt │ │ │ ├── SwitchShadowsSettingItem.kt │ │ │ ├── SwitchTypeSettingItem.kt │ │ │ ├── SystemBarsVisibilitySettingItem.kt │ │ │ ├── TelegramChannelSettingItem.kt │ │ │ ├── TelegramGroupSettingItem.kt │ │ │ ├── ToolsHiddenForShareSettingItem.kt │ │ │ ├── UseCompactSelectorsSettingItem.kt │ │ │ ├── UseFormattedFilenameTimestampSettingItem.kt │ │ │ ├── UseFullscreenSettingsSettingItem.kt │ │ │ ├── UseRandomEmojisSettingItem.kt │ │ │ ├── VibrationStrengthSettingItem.kt │ │ │ └── additional/ │ │ │ ├── AuthorLinksSheet.kt │ │ │ ├── DonateContainerContent.kt │ │ │ ├── DonateDialog.kt │ │ │ ├── DonateSheet.kt │ │ │ ├── FabPreview.kt │ │ │ ├── FontItem.kt │ │ │ └── PickFontFamilySheet.kt │ │ └── screenLogic/ │ │ └── SettingsComponent.kt │ ├── single-edit/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── single_edit/ │ │ └── presentation/ │ │ ├── SingleEditContent.kt │ │ ├── components/ │ │ │ ├── CropEditOption.kt │ │ │ ├── DrawEditOption.kt │ │ │ ├── EraseBackgroundEditOption.kt │ │ │ ├── FilterEditOption.kt │ │ │ ├── FullscreenEditOption.kt │ │ │ └── ToneCurvesEditOption.kt │ │ └── screenLogic/ │ │ └── SingleEditComponent.kt │ ├── svg-maker/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── svg_maker/ │ │ ├── data/ │ │ │ └── AndroidSvgManager.kt │ │ ├── di/ │ │ │ └── SvgMakerModule.kt │ │ ├── domain/ │ │ │ ├── SvgManager.kt │ │ │ └── SvgParams.kt │ │ └── presentation/ │ │ ├── SvgMakerContent.kt │ │ ├── components/ │ │ │ └── SvgParamsSelector.kt │ │ └── screenLogic/ │ │ └── SvgMakerComponent.kt │ ├── wallpapers-export/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── wallpapers_export/ │ │ ├── data/ │ │ │ └── AndroidWallpapersProvider.kt │ │ ├── di/ │ │ │ └── WallpapersExportModule.kt │ │ ├── domain/ │ │ │ ├── WallpapersProvider.kt │ │ │ └── model/ │ │ │ ├── Permission.kt │ │ │ ├── Wallpaper.kt │ │ │ └── WallpapersResult.kt │ │ └── presentation/ │ │ ├── WallpapersExportContent.kt │ │ ├── components/ │ │ │ ├── WallpapersActionButtons.kt │ │ │ ├── WallpapersControls.kt │ │ │ └── WallpapersPreview.kt │ │ └── screenLogic/ │ │ └── WallpapersExportComponent.kt │ ├── watermarking/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── watermarking/ │ │ ├── data/ │ │ │ └── AndroidWatermarkApplier.kt │ │ ├── di/ │ │ │ └── WatermarkingModule.kt │ │ ├── domain/ │ │ │ ├── HiddenWatermark.kt │ │ │ ├── WatermarkApplier.kt │ │ │ └── WatermarkParams.kt │ │ └── presentation/ │ │ ├── WatermarkingContent.kt │ │ ├── components/ │ │ │ ├── HiddenWatermarkInfo.kt │ │ │ ├── WatermarkDataSelector.kt │ │ │ ├── WatermarkParamsSelectionGroup.kt │ │ │ ├── WatermarkingTypeSelector.kt │ │ │ └── selectors/ │ │ │ ├── CommonParamsContent.kt │ │ │ ├── DigitalParamsContent.kt │ │ │ ├── ImageParamsContent.kt │ │ │ ├── StampParamsContent.kt │ │ │ └── TextParamsContent.kt │ │ └── screenLogic/ │ │ └── WatermarkingComponent.kt │ ├── webp-tools/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── webp_tools/ │ │ ├── data/ │ │ │ └── AndroidWebpConverter.kt │ │ ├── di/ │ │ │ └── WebpToolsModule.kt │ │ ├── domain/ │ │ │ ├── WebpConverter.kt │ │ │ └── WebpParams.kt │ │ └── presentation/ │ │ ├── WebpToolsContent.kt │ │ ├── components/ │ │ │ └── WebpParamsSelector.kt │ │ └── screenLogic/ │ │ └── WebpToolsComponent.kt │ ├── weight-resize/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── imagetoolbox/ │ │ └── feature/ │ │ └── weight_resize/ │ │ ├── data/ │ │ │ └── AndroidWeightImageScaler.kt │ │ ├── di/ │ │ │ └── WeightResizeModule.kt │ │ ├── domain/ │ │ │ └── WeightImageScaler.kt │ │ └── presentation/ │ │ ├── WeightResizeContent.kt │ │ ├── components/ │ │ │ └── ImageFormatAlert.kt │ │ └── screenLogic/ │ │ └── WeightResizeComponent.kt │ └── zip/ │ ├── .gitignore │ ├── build.gradle.kts │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ └── java/ │ └── com/ │ └── t8rin/ │ └── imagetoolbox/ │ └── feature/ │ └── zip/ │ ├── data/ │ │ └── AndroidZipManager.kt │ ├── di/ │ │ └── ZipModule.kt │ ├── domain/ │ │ └── ZipManager.kt │ └── presentation/ │ ├── ZipContent.kt │ ├── components/ │ │ └── ZipControls.kt │ └── screenLogic/ │ └── ZipComponent.kt ├── gradle/ │ ├── libs.versions.toml │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── lib/ │ ├── ascii/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── ascii/ │ │ └── ASCIIConverter.kt │ ├── collages/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── collages/ │ │ ├── Collage.kt │ │ ├── CollageType.kt │ │ ├── CollageTypeSelection.kt │ │ ├── frames/ │ │ │ ├── EightFrameImage.kt │ │ │ ├── ExtendedFrameImage.kt │ │ │ ├── FiveFrameImage.kt │ │ │ ├── FourFrameImage.kt │ │ │ ├── NineFrameImage.kt │ │ │ ├── SevenFrameImage.kt │ │ │ ├── SixFrameImage.kt │ │ │ ├── TenFrameImage.kt │ │ │ ├── ThreeFrameImage.kt │ │ │ └── TwoFrameImage.kt │ │ ├── model/ │ │ │ └── CollageLayout.kt │ │ ├── public/ │ │ │ └── CollageConstants.kt │ │ ├── utils/ │ │ │ ├── CollageLayoutFactory.kt │ │ │ ├── GeometryUtils.kt │ │ │ ├── Handle.kt │ │ │ ├── ImageDecoder.kt │ │ │ ├── ParamsManager.kt │ │ │ ├── ParamsManagerBuilder.kt │ │ │ └── PreviewCollageGeneration.kt │ │ └── view/ │ │ ├── FrameImageView.kt │ │ ├── FramePhotoLayout.kt │ │ ├── MultiTouchHandler.kt │ │ └── PhotoItem.kt │ ├── colors/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ ├── assets/ │ │ │ └── color_names.json │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── colors/ │ │ ├── ImageColorDetector.kt │ │ ├── ImageColorPaletteState.kt │ │ ├── model/ │ │ │ └── ColorData.kt │ │ ├── parser/ │ │ │ └── ColorNameParser.kt │ │ └── util/ │ │ ├── ColorUtil.kt │ │ ├── HexRegex.kt │ │ ├── HexUtil.kt │ │ ├── HexVisualTransformation.kt │ │ ├── RGBUtil.kt │ │ └── RoundngUtil.kt │ ├── cropper/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── cropper/ │ │ ├── CropModifier.kt │ │ ├── ImageCropper.kt │ │ ├── TouchRegion.kt │ │ ├── crop/ │ │ │ └── CropAgent.kt │ │ ├── draw/ │ │ │ ├── ImageDrawCanvas.kt │ │ │ └── Overlay.kt │ │ ├── image/ │ │ │ ├── ImageScope.kt │ │ │ └── ImageWithConstraints.kt │ │ ├── model/ │ │ │ ├── AspectRatios.kt │ │ │ ├── CropAspectRatio.kt │ │ │ ├── CropData.kt │ │ │ ├── CropOutline.kt │ │ │ ├── CropOutlineContainer.kt │ │ │ ├── CropOutlineProperties.kt │ │ │ └── OutlineType.kt │ │ ├── settings/ │ │ │ ├── CropDefaults.kt │ │ │ ├── CropType.kt │ │ │ └── Paths.kt │ │ ├── state/ │ │ │ ├── CropState.kt │ │ │ ├── CropStateImpl.kt │ │ │ ├── DynamicCropState.kt │ │ │ ├── StaticCropState.kt │ │ │ └── TransformState.kt │ │ ├── util/ │ │ │ ├── DimensionUtil.kt │ │ │ ├── DrawScopeUtils.kt │ │ │ ├── ImageContentScaleUtil.kt │ │ │ ├── OffsetUtil.kt │ │ │ ├── ShapeUtils.kt │ │ │ ├── ZoomLevel.kt │ │ │ └── ZoomUtil.kt │ │ └── widget/ │ │ ├── AspectRatioSlectionCard.kt │ │ ├── CropFrameDisplayCard.kt │ │ └── GridImageLayout.kt │ ├── curves/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── curves/ │ │ ├── ImageCurvesEditor.kt │ │ ├── ImageCurvesEditorColors.kt │ │ ├── ImageCurvesEditorDefaults.kt │ │ ├── ImageCurvesEditorState.kt │ │ ├── utils/ │ │ │ └── Utils.kt │ │ └── view/ │ │ ├── PhotoFilterCurvesControl.kt │ │ └── Rect.kt │ ├── documentscanner/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ ├── java/ │ │ │ └── com/ │ │ │ └── websitebeaver/ │ │ │ └── documentscanner/ │ │ │ ├── DocumentScanner.kt │ │ │ ├── DocumentScannerActivity.kt │ │ │ ├── DocumentScannerFileProvider.kt │ │ │ ├── constants/ │ │ │ │ ├── DefaultSetting.kt │ │ │ │ ├── DocumentScannerExtra.kt │ │ │ │ └── ResponseType.kt │ │ │ ├── enums/ │ │ │ │ └── QuadCorner.kt │ │ │ ├── extensions/ │ │ │ │ ├── AppCompatActivity.kt │ │ │ │ ├── Bitmap.kt │ │ │ │ ├── Canvas.kt │ │ │ │ ├── ImageButton.kt │ │ │ │ └── Point.kt │ │ │ ├── models/ │ │ │ │ ├── Document.kt │ │ │ │ ├── Line.kt │ │ │ │ └── Quad.kt │ │ │ ├── ui/ │ │ │ │ ├── CircleButton.kt │ │ │ │ ├── DoneButton.kt │ │ │ │ └── ImageCropView.kt │ │ │ └── utils/ │ │ │ ├── FileUtil.kt │ │ │ └── ImageUtil.kt │ │ └── res/ │ │ ├── animator/ │ │ │ └── button_grow_animation.xml │ │ ├── drawable/ │ │ │ ├── ic_baseline_add_24.xml │ │ │ ├── ic_baseline_arrow_back_24.xml │ │ │ └── ic_baseline_check_24.xml │ │ ├── layout/ │ │ │ └── activity_image_crop.xml │ │ ├── values/ │ │ │ ├── colors.xml │ │ │ ├── dimens.xml │ │ │ ├── integers.xml │ │ │ ├── strings.xml │ │ │ └── themes.xml │ │ └── xml/ │ │ └── file_paths.xml │ ├── dynamic-theme/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── dynamic/ │ │ └── theme/ │ │ ├── ColorBlindUtils.kt │ │ ├── DynamicTheme.kt │ │ ├── PaletteStyle.kt │ │ └── SystemUiController.kt │ ├── gesture/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── gesture/ │ │ ├── AwaitPointerMotionEvent.kt │ │ ├── PointerMotionModifier.kt │ │ └── TransformGesture.kt │ ├── image/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── image/ │ │ ├── ImageScope.kt │ │ ├── ImageWithConstraints.kt │ │ └── util/ │ │ └── ImageContentScaleUtil.kt │ ├── modalsheet/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── modalsheet/ │ │ ├── FullscreenPopup.kt │ │ ├── ModalSheet.kt │ │ ├── ModalSheetLayout.kt │ │ └── SwipeableV2.kt │ ├── neural-tools/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ ├── assets/ │ │ │ └── u2netp.onnx │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── neural_tools/ │ │ ├── DownloadProgress.kt │ │ ├── NeuralTool.kt │ │ ├── bgremover/ │ │ │ ├── BgRemover.kt │ │ │ ├── BiRefNetBackgroundRemover.kt │ │ │ ├── BiRefNetTinyBackgroundRemover.kt │ │ │ ├── GenericBackgroundRemover.kt │ │ │ ├── ISNetBackgroundRemover.kt │ │ │ ├── InSPyReNetBackgroundRemover.kt │ │ │ ├── RMBGBackgroundRemover.kt │ │ │ ├── U2NetFullBackgroundRemover.kt │ │ │ └── U2NetPortableBackgroundRemover.kt │ │ └── inpaint/ │ │ └── LaMaProcessor.kt │ ├── opencv-tools/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ ├── assets/ │ │ │ └── haarcascade_eye.xml │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── opencv_tools/ │ │ ├── auto_straight/ │ │ │ ├── AutoStraighten.kt │ │ │ └── model/ │ │ │ ├── Corners.kt │ │ │ ├── PointD.kt │ │ │ └── StraightenMode.kt │ │ ├── autocrop/ │ │ │ ├── AutoCropper.kt │ │ │ └── model/ │ │ │ ├── CropEdges.kt │ │ │ ├── CropParameters.kt │ │ │ └── CropSensitivity.kt │ │ ├── color_map/ │ │ │ ├── ColorMap.kt │ │ │ └── model/ │ │ │ └── ColorMapType.kt │ │ ├── document_detector/ │ │ │ └── DocumentDetector.kt │ │ ├── forensics/ │ │ │ └── ImageForensics.kt │ │ ├── free_corners_crop/ │ │ │ ├── FreeCrop.kt │ │ │ ├── compose/ │ │ │ │ └── FreeCornersCropper.kt │ │ │ └── model/ │ │ │ └── Quad.kt │ │ ├── image_comparison/ │ │ │ ├── ImageDiffTool.kt │ │ │ └── model/ │ │ │ └── ComparisonType.kt │ │ ├── image_processing/ │ │ │ └── ImageProcessing.kt │ │ ├── lens_correction/ │ │ │ ├── LensCorrection.kt │ │ │ └── model/ │ │ │ ├── LCException.kt │ │ │ ├── LensProfile.kt │ │ │ └── Sample.kt │ │ ├── moire/ │ │ │ ├── Moire.kt │ │ │ └── model/ │ │ │ └── MoireType.kt │ │ ├── qr_prepare/ │ │ │ └── QrPrepareHelper.kt │ │ ├── red_eye/ │ │ │ └── RedEyeRemover.kt │ │ ├── seam_carving/ │ │ │ └── SeamCarver.kt │ │ ├── spot_heal/ │ │ │ ├── SpotHealer.kt │ │ │ └── model/ │ │ │ └── HealType.kt │ │ └── utils/ │ │ └── OpenCVUtils.kt │ ├── palette/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ ├── main/ │ │ │ ├── AndroidManifest.xml │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── t8rin/ │ │ │ └── palette/ │ │ │ ├── ColorByteFormat.kt │ │ │ ├── ColorGroup.kt │ │ │ ├── ColorSpace.kt │ │ │ ├── ColorType.kt │ │ │ ├── Palette.kt │ │ │ ├── PaletteCoder.kt │ │ │ ├── PaletteCoderException.kt │ │ │ ├── PaletteColor.kt │ │ │ ├── PaletteFormat.kt │ │ │ ├── coders/ │ │ │ │ ├── ACBPaletteCoder.kt │ │ │ │ ├── ACOPaletteCoder.kt │ │ │ │ ├── ACTPaletteCoder.kt │ │ │ │ ├── AFPaletteCoder.kt │ │ │ │ ├── ASEPaletteCoder.kt │ │ │ │ ├── AndroidColorsXMLCoder.kt │ │ │ │ ├── AutodeskColorBookCoder.kt │ │ │ │ ├── BasicXMLCoder.kt │ │ │ │ ├── CLFPaletteCoder.kt │ │ │ │ ├── CPLPaletteCoder.kt │ │ │ │ ├── CSVPaletteCoder.kt │ │ │ │ ├── CorelDraw3PaletteCoder.kt │ │ │ │ ├── CorelPainterCoder.kt │ │ │ │ ├── CorelXMLPaletteCoder.kt │ │ │ │ ├── DCPPaletteCoder.kt │ │ │ │ ├── GIMPPaletteCoder.kt │ │ │ │ ├── HEXPaletteCoder.kt │ │ │ │ ├── HPLPaletteCoder.kt │ │ │ │ ├── ImagePaletteCoder.kt │ │ │ │ ├── JCWPaletteCoder.kt │ │ │ │ ├── JSONPaletteCoder.kt │ │ │ │ ├── KOfficePaletteCoder.kt │ │ │ │ ├── KRITAPaletteCoder.kt │ │ │ │ ├── KotlinPaletteCoder.kt │ │ │ │ ├── OpenOfficePaletteCoder.kt │ │ │ │ ├── PaintNETPaletteCoder.kt │ │ │ │ ├── PaintShopProPaletteCoder.kt │ │ │ │ ├── PaletteFormatCoder.kt │ │ │ │ ├── ProcreateSwatchesCoder.kt │ │ │ │ ├── RGBAPaletteCoder.kt │ │ │ │ ├── RGBPaletteCoder.kt │ │ │ │ ├── RIFFPaletteCoder.kt │ │ │ │ ├── SKPPaletteCoder.kt │ │ │ │ ├── SVGPaletteCoder.kt │ │ │ │ ├── ScribusXMLPaletteCoder.kt │ │ │ │ ├── SimplePaletteCoder.kt │ │ │ │ ├── SkencilPaletteCoder.kt │ │ │ │ ├── SketchPaletteCoder.kt │ │ │ │ ├── SwatchbookerCoder.kt │ │ │ │ ├── SwiftPaletteCoder.kt │ │ │ │ ├── VGA18BitPaletteCoder.kt │ │ │ │ └── VGA24BitPaletteCoder.kt │ │ │ └── utils/ │ │ │ ├── BytesReader.kt │ │ │ ├── BytesWriter.kt │ │ │ ├── CSVParser.kt │ │ │ ├── HexUtils.kt │ │ │ └── Xml.kt │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── t8rin/ │ │ └── palette/ │ │ └── coders/ │ │ └── PaletteCoderCompatibilityTest.kt │ ├── qrose/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── io/ │ │ └── github/ │ │ └── alexzhirkevich/ │ │ └── qrose/ │ │ ├── CachedPainter.kt │ │ ├── Converters.kt │ │ ├── DelicateQRoseApi.kt │ │ ├── QrCodePainter.kt │ │ ├── QrData.kt │ │ ├── oned/ │ │ │ ├── BarcodeEncoder.kt │ │ │ ├── BarcodePainter.kt │ │ │ ├── BarcodeType.kt │ │ │ ├── CodabarEncoder.kt │ │ │ ├── Code128Encoder.kt │ │ │ ├── Code128Painter.kt │ │ │ ├── Code39Encoder.kt │ │ │ ├── Code93Encoder.kt │ │ │ ├── CodeEAN13Encoder.kt │ │ │ ├── CodeEAN8Encoder.kt │ │ │ ├── CodeITFEncoder.kt │ │ │ ├── CodeUPCAEncoder.kt │ │ │ ├── CodeUPCEEncoder.kt │ │ │ └── UpcEanUtils.kt │ │ ├── options/ │ │ │ ├── Neighbors.kt │ │ │ ├── QrBallShape.kt │ │ │ ├── QrBrush.kt │ │ │ ├── QrCodeMatrix.kt │ │ │ ├── QrCodeShape.kt │ │ │ ├── QrColors.kt │ │ │ ├── QrErrorCorrectionLevel.kt │ │ │ ├── QrFrameShape.kt │ │ │ ├── QrLogo.kt │ │ │ ├── QrLogoPadding.kt │ │ │ ├── QrLogoShape.kt │ │ │ ├── QrOptions.kt │ │ │ ├── QrPixelShape.kt │ │ │ ├── QrShapeModifier.kt │ │ │ ├── QrShapeModifiers.kt │ │ │ ├── QrShapes.kt │ │ │ ├── Util.kt │ │ │ └── dsl/ │ │ │ ├── InternalQrColorsBuilderScope.kt │ │ │ ├── InternalQrLogoBuilderScope.kt │ │ │ ├── InternalQrOptionsBuilderScope.kt │ │ │ ├── InternalQrShapesBuilderScope.kt │ │ │ ├── QrColorsBuilderScope.kt │ │ │ ├── QrLogoBuilderScope.kt │ │ │ ├── QrOptionsBuilderScope.kt │ │ │ └── QrShapesBuilderScope.kt │ │ └── qrcode/ │ │ ├── QRCode.kt │ │ ├── QRCodeEnums.kt │ │ └── internals/ │ │ ├── BitBuffer.kt │ │ ├── ErrorMessage.kt │ │ ├── Polynomial.kt │ │ ├── QRCodeSetup.kt │ │ ├── QRCodeSquare.kt │ │ ├── QRData.kt │ │ ├── QRMath.kt │ │ ├── QRUtil.kt │ │ └── RSBlock.kt │ ├── snowfall/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ ├── java/ │ │ │ └── com/ │ │ │ └── t8rin/ │ │ │ └── snowfall/ │ │ │ ├── Constants.kt │ │ │ ├── SnowAnimState.kt │ │ │ ├── Snowfall.kt │ │ │ ├── Snowflake.kt │ │ │ ├── Utils.kt │ │ │ └── types/ │ │ │ ├── AnimType.kt │ │ │ └── FlakeType.kt │ │ └── res/ │ │ └── drawable/ │ │ ├── ic_flake_1.xml │ │ ├── ic_flake_10.xml │ │ ├── ic_flake_2.xml │ │ ├── ic_flake_3.xml │ │ ├── ic_flake_4.xml │ │ ├── ic_flake_5.xml │ │ ├── ic_flake_6.xml │ │ ├── ic_flake_7.xml │ │ ├── ic_flake_8.xml │ │ └── ic_flake_9.xml │ └── zoomable/ │ ├── .gitignore │ ├── build.gradle.kts │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ └── java/ │ └── net/ │ └── engawapg/ │ └── lib/ │ └── zoomable/ │ ├── ZoomState.kt │ ├── Zoomable.kt │ └── ZoomableDefaults.kt └── settings.gradle.kts