gitextract_0i8k_7pw/ ├── .gitattributes ├── .gitignore ├── CHANGELOG.md ├── FUNCTION.md ├── LICENSE ├── README-EN.md ├── README.md ├── build.gradle.kts ├── compose-desktop.pro ├── config/ │ ├── build.gradle.kts │ └── src/ │ └── main/ │ └── kotlin/ │ └── cn/ │ └── netdiscovery/ │ └── monica/ │ └── config/ │ ├── Constants.kt │ ├── SystemConstants.kt │ ├── category/ │ │ ├── ConfigCategory.kt │ │ ├── ConfigCategoryManager.kt │ │ ├── ConfigDefinitions.kt │ │ └── ConfigValidator.kt │ └── storage/ │ ├── ConfigManager.kt │ ├── ConfigStorage.kt │ ├── FileConfigStorage.kt │ ├── PreferencesConfigStorage.kt │ └── RxCacheConfigStorage.kt ├── docs/ │ ├── filter_module_refactor.md │ ├── layer_render_cache_analysis.md │ ├── layer_system.md │ └── layer_system_optimization_roadmap.md ├── domain/ │ ├── build.gradle.kts │ └── src/ │ └── main/ │ └── kotlin/ │ └── cn/ │ └── netdiscovery/ │ └── monica/ │ └── domain/ │ ├── ColorCorrectionSettings.kt │ ├── ContourDisplaySettings.kt │ ├── ContourFilterSettings.kt │ ├── DecodedPreviewImage.kt │ ├── GeneralSettings.kt │ ├── MatchTemplateSettings.kt │ ├── MorphologicalOperationSettings.kt │ └── NativeImage.kt ├── gradle/ │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── i18n/ │ ├── QUICK_REFERENCE.md │ ├── README.md │ ├── SCRIPT_USAGE_GUIDE.md │ ├── build.gradle.kts │ ├── position_check.sh │ ├── quick_check.sh │ ├── src/ │ │ ├── main/ │ │ │ ├── kotlin/ │ │ │ │ └── cn/ │ │ │ │ └── netdiscovery/ │ │ │ │ └── monica/ │ │ │ │ └── i18n/ │ │ │ │ ├── Language.kt │ │ │ │ ├── LocalizationManager.kt │ │ │ │ └── XmlStringResource.kt │ │ │ └── resources/ │ │ │ └── strings/ │ │ │ ├── strings_en.xml │ │ │ └── strings_zh.xml │ │ └── test/ │ │ └── kotlin/ │ │ └── cn/ │ │ └── netdiscovery/ │ │ └── monica/ │ │ └── i18n/ │ │ └── InternationalizationTest.kt │ └── string_manager.sh ├── imageprocess/ │ ├── build.gradle.kts │ └── src/ │ └── main/ │ └── kotlin/ │ └── cn/ │ └── netdiscovery/ │ └── monica/ │ └── imageprocess/ │ ├── BufferedImages.kt │ ├── Colormap.kt │ ├── IntIntegralImage.kt │ ├── Transformer.kt │ ├── domain/ │ │ ├── ArrayColormap.kt │ │ ├── Gradient.kt │ │ └── Histogram.kt │ ├── filter/ │ │ ├── BilateralFilter.kt │ │ ├── BlockFilter.kt │ │ ├── BumpFilter.kt │ │ ├── CarveFilter.kt │ │ ├── CellularFilter.kt │ │ ├── ColorFilter.kt │ │ ├── ColorHalftoneFilter.kt │ │ ├── ConBriFilter.kt │ │ ├── CropFilter.kt │ │ ├── CrystallizeFilter.kt │ │ ├── DiffuseFilter.kt │ │ ├── EmbossFilter.kt │ │ ├── EqualizeFilter.kt │ │ ├── ExposureFilter.kt │ │ ├── GainFilter.kt │ │ ├── GammaFilter.kt │ │ ├── GaussianNoiseFilter.kt │ │ ├── GradientFilter.kt │ │ ├── GrayFilter.kt │ │ ├── HSBAdjustFilter.kt │ │ ├── HighPassFilter.kt │ │ ├── InvertFilter.kt │ │ ├── MarbleFilter.kt │ │ ├── MirrorFilter.kt │ │ ├── MosaicFilter.kt │ │ ├── NatureFilter.kt │ │ ├── OffsetFilter.kt │ │ ├── OilPaintFilter.kt │ │ ├── PointillizeFilter.kt │ │ ├── PosterizeFilter.kt │ │ ├── RippleFilter.kt │ │ ├── SepiaToneFilter.kt │ │ ├── SmearFilter.kt │ │ ├── SolarizeFilter.kt │ │ ├── SpotlightFilter.kt │ │ ├── StrokeAreaFilter.kt │ │ ├── SwimFilter.kt │ │ ├── VignetteFilter.kt │ │ ├── WaterFilter.kt │ │ ├── WhiteImageFilter.kt │ │ ├── base/ │ │ │ ├── BaseFilter.kt │ │ │ ├── ColorProcessorFilter.kt │ │ │ ├── ConvolveFilter.kt │ │ │ ├── PointFilter.kt │ │ │ ├── TransferFilter.kt │ │ │ ├── TransformFilter.kt │ │ │ └── WholeImageFilter.kt │ │ ├── blur/ │ │ │ ├── AverageFilter.kt │ │ │ ├── BoxBlurFilter.kt │ │ │ ├── FastBlur2D.kt │ │ │ ├── GaussianFilter.kt │ │ │ ├── LensBlurFilter.kt │ │ │ ├── MaximumFilter.kt │ │ │ ├── MinimumFilter.kt │ │ │ ├── MotionFilter.kt │ │ │ └── VariableBlurFilter.kt │ │ └── sharpen/ │ │ ├── LaplaceSharpenFilter.kt │ │ ├── SharpenFilter.kt │ │ └── USMFilter.kt │ ├── lut/ │ │ ├── AutumnLUT.kt │ │ ├── BoneLUT.kt │ │ ├── CoolLUT.kt │ │ ├── HotLUT.kt │ │ ├── HsvLUT.kt │ │ ├── JetLUT.kt │ │ ├── LUT.kt │ │ ├── OceanLUT.kt │ │ ├── PinkLUT.kt │ │ ├── RainbowLUT.kt │ │ ├── SpringLUT.kt │ │ ├── SummerLUT.kt │ │ └── WinterLUT.kt │ ├── math/ │ │ ├── FFT.kt │ │ ├── Functions.kt │ │ ├── ImageMath.kt │ │ └── Noise.kt │ └── utils/ │ ├── ImageUtils.kt │ └── extension/ │ └── BufferedImage+Extensions.kt ├── opencv/ │ ├── build.gradle.kts │ └── src/ │ └── main/ │ └── kotlin/ │ └── cn/ │ └── netdiscovery/ │ └── monica/ │ └── opencv/ │ └── ImageProcess.kt ├── resources/ │ ├── common/ │ │ └── filterConfig.json │ ├── package.json │ └── web-screenshot.js ├── settings.gradle.kts └── src/ ├── jvmMain/ │ ├── kotlin/ │ │ ├── Main.kt │ │ └── cn/ │ │ └── netdiscovery/ │ │ └── monica/ │ │ ├── config/ │ │ │ └── Constant.kt │ │ ├── di/ │ │ │ └── appModule.kt │ │ ├── exception/ │ │ │ ├── AppError.kt │ │ │ ├── ErrorComposable.kt │ │ │ ├── ErrorExtensions.kt │ │ │ ├── ErrorHandler.kt │ │ │ ├── ErrorManager.kt │ │ │ ├── ErrorState.kt │ │ │ ├── Errors.kt │ │ │ ├── MonicaException.kt │ │ │ └── handlers/ │ │ │ ├── AIServiceErrorHandler.kt │ │ │ ├── FileIOErrorHandler.kt │ │ │ ├── ImageProcessingErrorHandler.kt │ │ │ ├── NetworkErrorHandler.kt │ │ │ └── ValidationErrorHandler.kt │ │ ├── history/ │ │ │ ├── EditHistoryCenter.kt │ │ │ ├── EditHistoryManager.kt │ │ │ ├── HistoryEntry.kt │ │ │ └── modules/ │ │ │ ├── colorcorrection/ │ │ │ │ └── ColorCorrectionParams.kt │ │ │ └── opencv/ │ │ │ └── CVParams.kt │ │ ├── http/ │ │ │ ├── GsonSerializer.kt │ │ │ └── HttpClient.kt │ │ ├── llm/ │ │ │ ├── DeepSeekRequest.kt │ │ │ ├── DeepseekClient.kt │ │ │ ├── DialogSession.kt │ │ │ ├── GeminiClient.kt │ │ │ ├── GeminiRequest.kt │ │ │ └── LLMServiceManager.kt │ │ ├── manager/ │ │ │ └── OpenCVManager.kt │ │ ├── state/ │ │ │ └── ApplicationState.kt │ │ ├── ui/ │ │ │ ├── controlpanel/ │ │ │ │ ├── BasicView.kt │ │ │ │ ├── ai/ │ │ │ │ │ ├── AIView.kt │ │ │ │ │ ├── AIViewModel.kt │ │ │ │ │ ├── experiment/ │ │ │ │ │ │ ├── BinaryImageView.kt │ │ │ │ │ │ ├── CVState.kt │ │ │ │ │ │ ├── ContourAnalysisView.kt │ │ │ │ │ │ ├── EdgeDetectionView.kt │ │ │ │ │ │ ├── ExperimentHome.kt │ │ │ │ │ │ ├── ExperimentView.kt │ │ │ │ │ │ ├── HistoryView.kt │ │ │ │ │ │ ├── ImageDenoisingView.kt │ │ │ │ │ │ ├── ImageEnhanceView.kt │ │ │ │ │ │ ├── MatchTemplateView.kt │ │ │ │ │ │ ├── MorphologicalOperationsView.kt │ │ │ │ │ │ ├── NavController.kt │ │ │ │ │ │ ├── NavigationHost.kt │ │ │ │ │ │ └── viewmodel/ │ │ │ │ │ │ ├── BinaryImageViewModel.kt │ │ │ │ │ │ ├── ContourAnalysisViewModel.kt │ │ │ │ │ │ ├── EdgeDetectionViewModel.kt │ │ │ │ │ │ ├── HistoryViewModel.kt │ │ │ │ │ │ ├── ImageDenoisingViewModel.kt │ │ │ │ │ │ ├── ImageEnhanceViewModel.kt │ │ │ │ │ │ ├── MatchTemplateViewModel.kt │ │ │ │ │ │ └── MorphologicalOperationsViewModel.kt │ │ │ │ │ └── faceswap/ │ │ │ │ │ ├── FaceSwapView.kt │ │ │ │ │ └── FaceSwapViewModel.kt │ │ │ │ ├── cartoon/ │ │ │ │ │ ├── CartoonView.kt │ │ │ │ │ └── CartoonViewModel.kt │ │ │ │ ├── colorcorrection/ │ │ │ │ │ ├── ColorCorrectionView.kt │ │ │ │ │ ├── ColorCorrectionViewModel.kt │ │ │ │ │ └── NaturalLanguageDialog.kt │ │ │ │ ├── colorpick/ │ │ │ │ │ ├── ColorPickView.kt │ │ │ │ │ ├── model/ │ │ │ │ │ │ ├── ColorData.kt │ │ │ │ │ │ ├── ColorNameMap.kt │ │ │ │ │ │ └── ColorNameParser.kt │ │ │ │ │ ├── utils/ │ │ │ │ │ │ ├── ColorDetection.kt │ │ │ │ │ │ ├── ColorUtils.kt │ │ │ │ │ │ └── RoundngUtils.kt │ │ │ │ │ └── widget/ │ │ │ │ │ ├── ColorDisplay.kt │ │ │ │ │ ├── ColorSelectionDrawing.kt │ │ │ │ │ └── ImageColorDetector.kt │ │ │ │ ├── compression/ │ │ │ │ │ ├── CompressionActions.kt │ │ │ │ │ ├── CompressionAlgorithmDropdown.kt │ │ │ │ │ ├── CompressionInputSection.kt │ │ │ │ │ ├── CompressionPreview.kt │ │ │ │ │ ├── CompressionProgress.kt │ │ │ │ │ ├── CompressionSliders.kt │ │ │ │ │ ├── CompressionView.kt │ │ │ │ │ └── CompressionViewModel.kt │ │ │ │ ├── cropimage/ │ │ │ │ │ ├── CropAgent.kt │ │ │ │ │ ├── CropImageSettingView.kt │ │ │ │ │ ├── CropImageView.kt │ │ │ │ │ ├── CropModifier.kt │ │ │ │ │ ├── CropViewModel.kt │ │ │ │ │ ├── ImageCropper.kt │ │ │ │ │ ├── TouchRegion.kt │ │ │ │ │ ├── draw/ │ │ │ │ │ │ ├── ImageDrawCanvas.kt │ │ │ │ │ │ └── Overlay.kt │ │ │ │ │ ├── model/ │ │ │ │ │ │ ├── CropAspectRatio.kt │ │ │ │ │ │ ├── CropFrame.kt │ │ │ │ │ │ ├── CropOutline.kt │ │ │ │ │ │ ├── CropOutlineContainer.kt │ │ │ │ │ │ └── CropOutlineProperties.kt │ │ │ │ │ ├── setting/ │ │ │ │ │ │ ├── CropDefaults.kt │ │ │ │ │ │ ├── CropFrameFactory.kt │ │ │ │ │ │ └── Paths.kt │ │ │ │ │ ├── state/ │ │ │ │ │ │ ├── CropState.kt │ │ │ │ │ │ ├── CropStateImpl.kt │ │ │ │ │ │ ├── DynamicCropState.kt │ │ │ │ │ │ ├── StaticCropState.kt │ │ │ │ │ │ └── TransformState.kt │ │ │ │ │ └── utils/ │ │ │ │ │ ├── DrawScopeUtils.kt │ │ │ │ │ ├── ShapeUtils.kt │ │ │ │ │ └── ZoomUtils.kt │ │ │ │ ├── doodle/ │ │ │ │ │ ├── DoodleView.kt │ │ │ │ │ ├── DoodleViewModel.kt │ │ │ │ │ ├── model/ │ │ │ │ │ │ └── PathProperties.kt │ │ │ │ │ └── widget/ │ │ │ │ │ └── PropertiesMenuDialog.kt │ │ │ │ ├── filter/ │ │ │ │ │ ├── FilterView.kt │ │ │ │ │ ├── viewmodel/ │ │ │ │ │ │ └── FilterViewModel.kt │ │ │ │ │ └── widget/ │ │ │ │ │ ├── FilterAdjustmentPanel.kt │ │ │ │ │ ├── FilterListPanel.kt │ │ │ │ │ ├── FilterParamDefaults.kt │ │ │ │ │ ├── FilterParamMeta.kt │ │ │ │ │ ├── FilterPreviewArea.kt │ │ │ │ │ └── FilterTopAppBar.kt │ │ │ │ ├── generategif/ │ │ │ │ │ ├── GenerateGifView.kt │ │ │ │ │ └── GenerateGifViewModel.kt │ │ │ │ ├── shapedrawing/ │ │ │ │ │ ├── CoordinateSystem.kt │ │ │ │ │ ├── EditorController.kt │ │ │ │ │ ├── ShapeDrawingView.kt │ │ │ │ │ ├── ShapeDrawingViewModel.kt │ │ │ │ │ ├── animation/ │ │ │ │ │ │ └── ShapeAnimationManager.kt │ │ │ │ │ ├── coordinate/ │ │ │ │ │ │ └── CoordinateConverter.kt │ │ │ │ │ ├── geometry/ │ │ │ │ │ │ ├── CanvasDrawer.kt │ │ │ │ │ │ ├── Drawer.kt │ │ │ │ │ │ └── Style.kt │ │ │ │ │ ├── handler/ │ │ │ │ │ │ └── ShapeDrawingEventHandler.kt │ │ │ │ │ ├── helper/ │ │ │ │ │ │ └── SpecialLayerHelper.kt │ │ │ │ │ ├── layer/ │ │ │ │ │ │ ├── ImageLayer.kt │ │ │ │ │ │ ├── Layer.kt │ │ │ │ │ │ ├── LayerManager.kt │ │ │ │ │ │ ├── LayerRenderer.kt │ │ │ │ │ │ ├── ShapeLayer.kt │ │ │ │ │ │ └── SpecialLayerHelper.kt │ │ │ │ │ ├── model/ │ │ │ │ │ │ ├── Shape.kt │ │ │ │ │ │ └── ShapeProperties.kt │ │ │ │ │ ├── state/ │ │ │ │ │ │ └── ShapeDrawingState.kt │ │ │ │ │ └── widget/ │ │ │ │ │ ├── CanvasView.kt │ │ │ │ │ ├── DraggableTextField.kt │ │ │ │ │ ├── ImageLayerControlRenderer.kt │ │ │ │ │ ├── LayerPanel.kt │ │ │ │ │ ├── ShapeDrawingPropertiesMenuDialog.kt │ │ │ │ │ └── TextDrawer.kt │ │ │ │ └── webscreenshot/ │ │ │ │ ├── WebScreenshotView.kt │ │ │ │ └── WebScreenshotViewModel.kt │ │ │ ├── i18n/ │ │ │ │ └── ComposeI18n.kt │ │ │ ├── main/ │ │ │ │ ├── ContentPanel.kt │ │ │ │ ├── Dialogs.kt │ │ │ │ ├── GeneralSettingsDialog.kt │ │ │ │ ├── MainView.kt │ │ │ │ ├── MainViewModel.kt │ │ │ │ └── SidebarView.kt │ │ │ ├── preview/ │ │ │ │ ├── PreviewViewModel.kt │ │ │ │ └── PreviewViewt.kt │ │ │ ├── screenshot/ │ │ │ │ └── SwingScreenshotAreaSelector.kt │ │ │ ├── showimage/ │ │ │ │ └── ShowImageView.kt │ │ │ ├── theme/ │ │ │ │ ├── ColorTheme.kt │ │ │ │ └── ThemeManager.kt │ │ │ └── widget/ │ │ │ ├── Buttons.kt │ │ │ ├── Checkboxs.kt │ │ │ ├── Divider.kt │ │ │ ├── LazyRow.kt │ │ │ ├── PageLifecycle.kt │ │ │ ├── RightSideMenuBar.kt │ │ │ ├── TextFields.kt │ │ │ ├── ThreeBallLoading.kt │ │ │ ├── Title.kt │ │ │ ├── Toasts.kt │ │ │ ├── color/ │ │ │ │ ├── ColorSelection.kt │ │ │ │ └── ColorSelectionDialog.kt │ │ │ ├── image/ │ │ │ │ ├── ImageContentScaleUtil.kt │ │ │ │ ├── ImageScope.kt │ │ │ │ ├── ImageSizeCalculator.kt │ │ │ │ ├── ImageWithConstraints.kt │ │ │ │ ├── ImageWithThumbnail.kt │ │ │ │ └── gesture/ │ │ │ │ ├── AwaitDragMotionModifier.kt │ │ │ │ ├── AwaitPointerMontionEvent.kt │ │ │ │ ├── MotionEvent.kt │ │ │ │ ├── PointerMotionModify.kt │ │ │ │ └── TransformGestures.kt │ │ │ └── properties/ │ │ │ └── ExposedSelectionMenu.kt │ │ └── utils/ │ │ ├── AppDirs.kt │ │ ├── ButtonUtils.kt │ │ ├── DebugUtils.kt │ │ ├── FileChoose.kt │ │ ├── IOUtils.kt │ │ ├── ImageCompressionUtils.kt │ │ ├── ImageFormatDetector.kt │ │ ├── ImageUtils.kt │ │ ├── LogHomeProperty.kt │ │ ├── LogUtils.kt │ │ ├── ScreenshotUtils.kt │ │ ├── TextUtils.kt │ │ ├── TimeUtils.kt │ │ ├── Typealiases.kt │ │ ├── Validation.kt │ │ ├── WebScreenshotUtils.kt │ │ └── extensions/ │ │ ├── Any+Extensions.kt │ │ ├── Coroutine+Extensions.kt │ │ ├── DrawScope+Extensions.kt │ │ ├── Number+Extensions.kt │ │ └── String+Extensions.kt │ └── resources/ │ └── logback.xml └── jvmTest/ └── kotlin/ └── cn/ └── netdiscovery/ └── monica/ └── editor/ └── layer/ ├── ExportManagerTest.kt └── LayerManagerTest.kt