├── src ├── version.txt ├── 查找和显示重复图像 │ ├── Icon.png │ ├── Images │ │ ├── StoreLogo.backup.png │ │ ├── LargeTile.scale-100.png │ │ ├── LargeTile.scale-125.png │ │ ├── LargeTile.scale-150.png │ │ ├── LargeTile.scale-200.png │ │ ├── LargeTile.scale-400.png │ │ ├── SmallTile.scale-100.png │ │ ├── SmallTile.scale-125.png │ │ ├── SmallTile.scale-150.png │ │ ├── SmallTile.scale-200.png │ │ ├── SmallTile.scale-400.png │ │ ├── StoreLogo.scale-100.png │ │ ├── StoreLogo.scale-125.png │ │ ├── StoreLogo.scale-150.png │ │ ├── StoreLogo.scale-200.png │ │ ├── StoreLogo.scale-400.png │ │ ├── SplashScreen.scale-100.png │ │ ├── SplashScreen.scale-125.png │ │ ├── SplashScreen.scale-150.png │ │ ├── SplashScreen.scale-200.png │ │ ├── SplashScreen.scale-400.png │ │ ├── LockScreenLogo.scale-200.png │ │ ├── Square150x150Logo.scale-100.png │ │ ├── Square150x150Logo.scale-125.png │ │ ├── Square150x150Logo.scale-150.png │ │ ├── Square150x150Logo.scale-200.png │ │ ├── Square150x150Logo.scale-400.png │ │ ├── Square44x44Logo.scale-100.png │ │ ├── Square44x44Logo.scale-125.png │ │ ├── Square44x44Logo.scale-150.png │ │ ├── Square44x44Logo.scale-200.png │ │ ├── Square44x44Logo.scale-400.png │ │ ├── Wide310x150Logo.scale-100.png │ │ ├── Wide310x150Logo.scale-125.png │ │ ├── Wide310x150Logo.scale-150.png │ │ ├── Wide310x150Logo.scale-200.png │ │ ├── Wide310x150Logo.scale-400.png │ │ ├── Square44x44Logo.targetsize-16.png │ │ ├── Square44x44Logo.targetsize-24.png │ │ ├── Square44x44Logo.targetsize-32.png │ │ ├── Square44x44Logo.targetsize-48.png │ │ ├── Square44x44Logo.targetsize-256.png │ │ ├── Square44x44Logo.altform-unplated_targetsize-16.png │ │ ├── Square44x44Logo.altform-unplated_targetsize-256.png │ │ ├── Square44x44Logo.altform-unplated_targetsize-32.png │ │ ├── Square44x44Logo.altform-unplated_targetsize-48.png │ │ ├── Square44x44Logo.targetsize-24_altform-unplated.png │ │ ├── Square44x44Logo.altform-lightunplated_targetsize-16.png │ │ ├── Square44x44Logo.altform-lightunplated_targetsize-24.png │ │ ├── Square44x44Logo.altform-lightunplated_targetsize-256.png │ │ ├── Square44x44Logo.altform-lightunplated_targetsize-32.png │ │ └── Square44x44Logo.altform-lightunplated_targetsize-48.png │ └── Directory.Build.props ├── .editorconfig ├── AntiDupl.NET.WPF │ ├── Image │ │ ├── AB.jpg │ │ ├── check.png │ │ ├── loading.jpg │ │ ├── redo-3-32.png │ │ ├── undo-3-32.png │ │ ├── DeleteIcon16.png │ │ ├── MistakeButton.png │ │ ├── fit_size24x24.png │ │ ├── img │ │ │ ├── HelpMenu.png │ │ │ ├── PathsMenu.png │ │ │ ├── RedoMenu.png │ │ │ ├── StartMenu.png │ │ │ ├── UndoMenu.png │ │ │ ├── BlurringIcon.png │ │ │ ├── DefectIcon.png │ │ │ ├── HelpButton.png │ │ │ ├── MistakesMenu.png │ │ │ ├── NextButton.png │ │ │ ├── OptionsMenu.png │ │ │ ├── PathsButton.png │ │ │ ├── RedoButton.png │ │ │ ├── RefreshMenu.png │ │ │ ├── StartButton.png │ │ │ ├── Turn_0_Icon.png │ │ │ ├── Turn_90_Icon.png │ │ │ ├── UndoButton.png │ │ │ ├── BlockinessIcon.png │ │ │ ├── MistakeButton.png │ │ │ ├── MistakesButton.png │ │ │ ├── OptionsButton.png │ │ │ ├── PreviousButton.png │ │ │ ├── RefreshButton.png │ │ │ ├── Turn_180_Icon.png │ │ │ ├── Turn_270_Icon.png │ │ │ ├── DeleteDefectIcon.png │ │ │ ├── MirrorTurn_0_Icon.png │ │ │ ├── PerformHintButton.png │ │ │ ├── PerformHintMenu.png │ │ │ ├── ProfileOpenButton.png │ │ │ ├── ProfileOpenMenu.png │ │ │ ├── ProfileSaveAsMenu.png │ │ │ ├── UnknownDefectIcon.png │ │ │ ├── MirrorTurn_180_Icon.png │ │ │ ├── MirrorTurn_270_Icon.png │ │ │ ├── MirrorTurn_90_Icon.png │ │ │ ├── ProfileSaveAsButton.png │ │ │ ├── DuplPairHorizontalIcon.png │ │ │ ├── DuplPairVerticalIcon.png │ │ │ ├── DeleteBothVerticalButton.png │ │ │ ├── DeleteBothesVerticalMenu.png │ │ │ ├── DeleteFirstVerticalIcon.png │ │ │ ├── DeleteFirstsVerticalMenu.png │ │ │ ├── DeleteSecondVerticalIcon.png │ │ │ ├── DeleteBothHorizontalButton.png │ │ │ ├── DeleteBothesHorizontalMenu.png │ │ │ ├── DeleteBothesVerticalButton.png │ │ │ ├── DeleteDefectVerticalButton.png │ │ │ ├── DeleteDefectsHorizontalMenu.png │ │ │ ├── DeleteDefectsVerticalButton.png │ │ │ ├── DeleteDefectsVerticalMenu.png │ │ │ ├── DeleteFirstHorizontalButton.png │ │ │ ├── DeleteFirstHorizontalIcon.png │ │ │ ├── DeleteFirstVerticalButton.png │ │ │ ├── DeleteFirstsHorizontalMenu.png │ │ │ ├── DeleteFirstsVerticalButton.png │ │ │ ├── DeleteSecondHorizontalIcon.png │ │ │ ├── DeleteSecondVerticalButton.png │ │ │ ├── DeleteSecondsHorizontalMenu.png │ │ │ ├── DeleteSecondsVerticalButton.png │ │ │ ├── DeleteSecondsVerticalMenu.png │ │ │ ├── JpegEndMarkerIsAbsentIcon.png │ │ │ ├── DeleteBothesHorizontalButton.png │ │ │ ├── DeleteDefectHorizontalButton.png │ │ │ ├── DeleteDefectsHorizontalButton.png │ │ │ ├── DeleteFirstsHorizontalButton.png │ │ │ ├── DeleteSecondHorizontalButton.png │ │ │ ├── DeleteSecondsHorizontalButton.png │ │ │ ├── MoveFirstToSecondVerticalMenu.png │ │ │ ├── MoveSecondToFirstVerticalMenu.png │ │ │ ├── MoveFirstToSecondHorizontalMenu.png │ │ │ ├── MoveFirstToSecondVerticalButton.png │ │ │ ├── MoveSecondToFirstHorizontalMenu.png │ │ │ ├── MoveSecondToFirstVerticalButton.png │ │ │ ├── RenameFirstToSecondVerticalIcon.png │ │ │ ├── RenameFirstToSecondVerticalMenu.png │ │ │ ├── RenameSecondToFirstVerticalIcon.png │ │ │ ├── RenameSecondToFirstVerticalMenu.png │ │ │ ├── MoveFirstToSecondHorizontalButton.png │ │ │ ├── MoveSecondToFirstHorizontalButton.png │ │ │ ├── RenameFirstLikeSecondVerticalMenu.png │ │ │ ├── RenameFirstToSecondHorizontalIcon.png │ │ │ ├── RenameFirstToSecondHorizontalMenu.png │ │ │ ├── RenameFirstToSecondVerticalButton.png │ │ │ ├── RenameSecondLikeFirstVerticalMenu.png │ │ │ ├── RenameSecondToFirstHorizontalIcon.png │ │ │ ├── RenameSecondToFirstHorizontalMenu.png │ │ │ ├── RenameSecondToFirstVerticalButton.png │ │ │ ├── RenameFirstLikeSecondHorizontalButton.png │ │ │ ├── RenameFirstLikeSecondHorizontalMenu.png │ │ │ ├── RenameFirstLikeSecondVerticalButton.png │ │ │ ├── RenameFirstToSecondHorizontalButton.png │ │ │ ├── RenameSecondLikeFirstHorizontalButton.png │ │ │ ├── RenameSecondLikeFirstHorizontalMenu.png │ │ │ ├── RenameSecondLikeFirstVerticalButton.png │ │ │ └── RenameSecondToFirstHorizontalButton.png │ │ ├── search_clear.png │ │ ├── spyglass24x24.png │ │ ├── rotate_left24x24.png │ │ ├── arrow-190-64-left.png │ │ ├── arrow-190-64-rigth.png │ │ ├── rotate_right24x24.png │ │ ├── ReplaceFirstVerticalButton.png │ │ ├── ReplaceSecondVerticalButton.png │ │ ├── MoveFirstToSecondVerticalButton.png │ │ ├── MoveSecondToFirstVerticalButton.png │ │ ├── MoveAndRenameFirstLikeSecondVertical.png │ │ └── MoveAndRenameSecondLikeFirstVertical.png │ ├── App.config │ ├── Properties │ │ ├── Settings.settings │ │ ├── PublishProfiles │ │ │ └── AntiDuplPublishSingleFile.pubxml │ │ └── Settings.Designer.cs │ ├── View │ │ ├── ConfigurationWindow.xaml.cs │ │ ├── MainWindow.xaml.cs │ │ ├── PathWindow.xaml.cs │ │ ├── ColorWindow.xaml.cs │ │ ├── ComparatorWindow.xaml.cs │ │ ├── PrioritiesWindow.xaml.cs │ │ ├── ConfigurableActionWindow.xaml.cs │ │ ├── IWindowService.cs │ │ └── ProgressDialog.xaml.cs │ ├── ObjectModel │ │ ├── ViewMode.cs │ │ ├── PositionInDuplPair.cs │ │ ├── ActionCondition.cs │ │ ├── ActionOnDuplPair.cs │ │ ├── EqualAction.cs │ │ ├── CriterionType.cs │ │ ├── BindableMenuItem.cs │ │ ├── DirectoryFilter │ │ │ ├── IDirectoryFilter.cs │ │ │ ├── AnywhereDirectoryFilter.cs │ │ │ ├── OneImageInDir1OtherInDir2.cs │ │ │ └── SameDirectory.cs │ │ ├── ConditionMode │ │ │ ├── IConditionMode.cs │ │ │ ├── LessConditionMode.cs │ │ │ ├── MoreConditionMode.cs │ │ │ └── EqualConditionMode.cs │ │ ├── GettingNumber │ │ │ ├── IGettingNumber.cs │ │ │ └── NumberBeforeUnderlineGettingNumber.cs │ │ ├── ByImageProperty │ │ │ └── BestConditionParametr.cs │ │ ├── ByPath │ │ │ ├── IBestSelectingByPath.cs │ │ │ └── BestImageShouldBeInDirectory.cs │ │ ├── ConfigurableAction │ │ │ ├── IConfigurableAction.cs │ │ │ ├── ReplaceBadImageAction.cs │ │ │ ├── SkipAction.cs │ │ │ └── DeleteBadAction.cs │ │ ├── LogEntry.cs │ │ ├── FilterConditionParametr.cs │ │ ├── SerializableCultureInfo.cs │ │ ├── Criterion.cs │ │ └── DuplicateGroup.cs │ ├── packages.config │ ├── ViewModel │ │ ├── IClosingViewModel.cs │ │ ├── BoolEventHandler.cs │ │ ├── LanguageViewModel.cs │ │ ├── CloseableViewModel.cs │ │ └── PropertyChangedBase.cs │ ├── UndoRedo │ │ ├── IUCommand.cs │ │ ├── IUndoRedoEngine.cs │ │ └── RenamedImage.cs │ ├── Const.cs │ ├── Model │ │ ├── IViewModeModel.cs │ │ ├── ViewModeModel.cs │ │ ├── IgnoreStorage.cs │ │ └── IConfigurationModel.cs │ ├── Service │ │ ├── IThumbnailProvider.cs │ │ ├── IImageLoader.cs │ │ └── ILanguageService.cs │ ├── Convertor │ │ ├── MaxProperty.cs │ │ ├── StringToVisibilityConverter.cs │ │ ├── ColorToSolidColorBrushConverter.cs │ │ ├── DifferenceValueConverter.cs │ │ ├── InverseBooleanConverter.cs │ │ ├── ViewModeToVisibilityConverter.cs │ │ ├── FileSizeConverter.cs │ │ ├── FolderAreDiffrentMultuValueConverter.cs │ │ └── DeleteBackgroundValueConverter.cs │ ├── DragDrop │ │ └── IDropable.cs │ ├── Themes │ │ └── Generic.xaml │ ├── Helper │ │ ├── IOHelper.cs │ │ ├── DirectoryHelper.cs │ │ ├── PercentHelper.cs │ │ ├── VisualTreeHelperEx.cs │ │ └── GroupHelper.cs │ ├── App.xaml │ └── Behavior │ │ └── WindowCloseOnEscBehavior.cs ├── AntiDupl.NET.WinForms │ ├── Icon.ico │ ├── ResultsOptions.cs │ ├── Properties │ │ ├── Settings.settings │ │ ├── PublishProfiles │ │ │ └── AntiDuplPublishSingleFile.pubxml │ │ └── Settings.Designer.cs │ ├── ImageOpener.cs │ └── ImageDiffOpener.cs ├── AntiDupl.NET.Core │ ├── Enums │ │ ├── PixelFormatType.cs │ │ ├── AlgorithmComparing.cs │ │ └── Error.cs │ ├── Original │ │ └── AdBitmap.cs │ ├── Properties │ │ └── PublishProfiles │ │ │ └── AntiDuplPublishSingleFile.pubxml │ └── AntiDupl.NET.Core.xml ├── vcpkg.json ├── Prop.csproj └── AntiDupl │ ├── adDump.h │ ├── adDds.h │ ├── adTga.h │ ├── adInit.h │ ├── adPsd.h │ ├── adException.h │ ├── adHeif.h │ ├── adJxl.h │ ├── adWebp.h │ ├── adAvif.h │ ├── adGdiplus.h │ └── adImageUtils.h ├── docs ├── _config.yml ├── russian │ ├── files │ │ ├── IconGreen.gif │ │ ├── IconRed.gif │ │ ├── MainForm1.gif │ │ ├── MainForm2.png │ │ ├── CompareForm.png │ │ ├── HelpButton.gif │ │ ├── IconYellow.gif │ │ ├── StartButton.gif │ │ ├── StopButton.gif │ │ ├── BrowseButton.gif │ │ ├── DeleteButton.gif │ │ ├── LeftMoveButton.gif │ │ ├── OptionsButton.gif │ │ └── RightMoveButton.gif │ ├── index.html │ └── head.html ├── data │ ├── help │ │ ├── english │ │ │ ├── table.html │ │ │ ├── options.html │ │ │ ├── files │ │ │ │ ├── MainForm.png │ │ │ │ ├── MainForm2.png │ │ │ │ ├── PathsForm.png │ │ │ │ ├── HotKeysForm.png │ │ │ │ ├── EmptyMainForm.png │ │ │ │ ├── ProgressForm.png │ │ │ │ ├── AdvancedOptionsForm.png │ │ │ │ ├── CompareOptionsForm.png │ │ │ │ ├── DefectsOptionsForm.png │ │ │ │ ├── SearchOptionsForm.png │ │ │ │ ├── SelectColumnsForm.png │ │ │ │ ├── SelectColumnsForm2.png │ │ │ │ ├── ContextMenuImagePanel.png │ │ │ │ └── HighlightOptionsForm.png │ │ │ ├── title.html │ │ │ ├── home.html │ │ │ ├── install.html │ │ │ ├── status.html │ │ │ ├── index.html │ │ │ ├── intro.html │ │ │ ├── args.html │ │ │ └── license.html │ │ └── russian │ │ │ ├── files │ │ │ ├── MainForm.png │ │ │ ├── MainForm2.png │ │ │ ├── PathsForm.png │ │ │ ├── HotKeysForm.png │ │ │ ├── EmptyMainForm.png │ │ │ ├── ProgressForm.png │ │ │ ├── AdvancedOptionsForm.png │ │ │ ├── CompareOptionsForm.png │ │ │ ├── DefectsOptionsForm.png │ │ │ ├── SearchOptionsForm.png │ │ │ ├── SelectColumnsForm.png │ │ │ ├── SelectColumnsForm2.png │ │ │ ├── ContextMenuImagePanel.png │ │ │ └── HighlightOptionsForm.png │ │ │ ├── title.html │ │ │ ├── home.html │ │ │ ├── install.html │ │ │ ├── status.html │ │ │ ├── index.html │ │ │ ├── args.html │ │ │ └── intro.html │ └── resources │ │ ├── icons │ │ └── Icon.ico │ │ └── images │ │ ├── HelpMenu.img │ │ ├── RedoMenu.img │ │ ├── UndoMenu.img │ │ ├── DefectIcon.img │ │ ├── HelpButton.img │ │ ├── NextButton.img │ │ ├── OptionsMenu.img │ │ ├── PathsButton.img │ │ ├── PathsMenu.img │ │ ├── RedoButton.img │ │ ├── RefreshMenu.img │ │ ├── StartButton.img │ │ ├── StartMenu.img │ │ ├── Turn_0_Icon.img │ │ ├── UndoButton.img │ │ ├── BlurringIcon.img │ │ ├── MistakeButton.img │ │ ├── MistakesMenu.img │ │ ├── OptionsButton.img │ │ ├── RefreshButton.img │ │ ├── Turn_180_Icon.img │ │ ├── Turn_270_Icon.img │ │ ├── Turn_90_Icon.img │ │ ├── BlockinessIcon.img │ │ ├── DeleteDefectIcon.img │ │ ├── MistakesButton.img │ │ ├── PerformHintMenu.img │ │ ├── PreviousButton.img │ │ ├── ProfileOpenMenu.img │ │ ├── MirrorTurn_0_Icon.img │ │ ├── MirrorTurn_90_Icon.img │ │ ├── PerformHintButton.img │ │ ├── ProfileOpenButton.img │ │ ├── ProfileSaveAsMenu.img │ │ ├── UnknownDefectIcon.img │ │ ├── DuplPairVerticalIcon.img │ │ ├── MirrorTurn_180_Icon.img │ │ ├── MirrorTurn_270_Icon.img │ │ ├── OpenBothFoldersButton.png │ │ ├── OpenBothImagesButton.png │ │ ├── ProfileSaveAsButton.img │ │ ├── DeleteFirstVerticalIcon.img │ │ ├── DuplPairHorizontalIcon.img │ │ ├── DeleteBothHorizontalButton.img │ │ ├── DeleteBothVerticalButton.img │ │ ├── DeleteBothesHorizontalMenu.img │ │ ├── DeleteBothesVerticalButton.img │ │ ├── DeleteBothesVerticalMenu.img │ │ ├── DeleteDefectVerticalButton.img │ │ ├── DeleteDefectsVerticalMenu.img │ │ ├── DeleteFirstHorizontalIcon.img │ │ ├── DeleteFirstVerticalButton.img │ │ ├── DeleteFirstsHorizontalMenu.img │ │ ├── DeleteFirstsVerticalButton.img │ │ ├── DeleteFirstsVerticalMenu.img │ │ ├── DeleteSecondHorizontalIcon.img │ │ ├── DeleteSecondVerticalButton.img │ │ ├── DeleteSecondVerticalIcon.img │ │ ├── DeleteSecondsVerticalMenu.img │ │ ├── JpegEndMarkerIsAbsentIcon.img │ │ ├── OpenExternDiffImagesButton.png │ │ ├── DeleteBothesHorizontalButton.img │ │ ├── DeleteDefectHorizontalButton.img │ │ ├── DeleteDefectsHorizontalMenu.img │ │ ├── DeleteDefectsVerticalButton.img │ │ ├── DeleteFirstHorizontalButton.img │ │ ├── DeleteFirstsHorizontalButton.img │ │ ├── DeleteSecondHorizontalButton.img │ │ ├── DeleteSecondsHorizontalMenu.img │ │ ├── DeleteSecondsVerticalButton.img │ │ ├── DeleteDefectsHorizontalButton.img │ │ ├── DeleteSecondsHorizontalButton.img │ │ ├── MoveFirstToSecondHorizontalMenu.img │ │ ├── MoveFirstToSecondVerticalButton.img │ │ ├── MoveFirstToSecondVerticalMenu.img │ │ ├── MoveSecondToFirstHorizontalMenu.img │ │ ├── MoveSecondToFirstVerticalButton.img │ │ ├── MoveSecondToFirstVerticalMenu.img │ │ ├── RenameFirstToSecondVerticalIcon.img │ │ ├── RenameFirstToSecondVerticalMenu.img │ │ ├── RenameSecondToFirstVerticalIcon.img │ │ ├── RenameSecondToFirstVerticalMenu.img │ │ ├── MoveFirstToSecondHorizontalButton.img │ │ ├── MoveSecondToFirstHorizontalButton.img │ │ ├── RenameFirstLikeSecondVerticalMenu.img │ │ ├── RenameFirstToSecondHorizontalIcon.img │ │ ├── RenameFirstToSecondHorizontalMenu.img │ │ ├── RenameFirstToSecondVerticalButton.img │ │ ├── RenameSecondLikeFirstVerticalMenu.img │ │ ├── RenameSecondToFirstHorizontalIcon.img │ │ ├── RenameSecondToFirstHorizontalMenu.img │ │ ├── RenameSecondToFirstVerticalButton.img │ │ ├── RenameFirstLikeSecondHorizontalMenu.img │ │ ├── RenameFirstLikeSecondVerticalButton.img │ │ ├── RenameFirstToSecondHorizontalButton.img │ │ ├── RenameSecondLikeFirstHorizontalMenu.img │ │ ├── RenameSecondLikeFirstVerticalButton.img │ │ ├── RenameSecondToFirstHorizontalButton.img │ │ ├── RenameFirstLikeSecondHorizontalButton.img │ │ └── RenameSecondLikeFirstHorizontalButton.img ├── index.html ├── version.xml └── english │ ├── head.html │ └── index.html ├── cmd ├── 7-zip │ ├── 7z.sfx │ ├── 7za_2201.exe │ └── config.txt └── CopyData.cmd └── LICENSE /src/version.txt: -------------------------------------------------------------------------------- 1 | 2.3.12 -------------------------------------------------------------------------------- /docs/_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-minimal -------------------------------------------------------------------------------- /cmd/7-zip/7z.sfx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/cmd/7-zip/7z.sfx -------------------------------------------------------------------------------- /cmd/7-zip/7za_2201.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/cmd/7-zip/7za_2201.exe -------------------------------------------------------------------------------- /src/查找和显示重复图像/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Icon.png -------------------------------------------------------------------------------- /cmd/7-zip/config.txt: -------------------------------------------------------------------------------- 1 | ;!@Install@!UTF-8! 2 | Title="AntiDupl.NET-2.3.11" 3 | RunProgram="" 4 | ;!@InstallEnd@! -------------------------------------------------------------------------------- /docs/russian/files/IconGreen.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/russian/files/IconGreen.gif -------------------------------------------------------------------------------- /docs/russian/files/IconRed.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/russian/files/IconRed.gif -------------------------------------------------------------------------------- /docs/russian/files/MainForm1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/russian/files/MainForm1.gif -------------------------------------------------------------------------------- /docs/russian/files/MainForm2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/russian/files/MainForm2.png -------------------------------------------------------------------------------- /src/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.cs] 2 | 3 | # WFO1000: 缺少属性内容的代码序列化配置 4 | dotnet_diagnostic.WFO1000.severity = warning 5 | -------------------------------------------------------------------------------- /docs/data/help/english/table.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/help/english/table.html -------------------------------------------------------------------------------- /docs/data/resources/icons/Icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/icons/Icon.ico -------------------------------------------------------------------------------- /docs/russian/files/CompareForm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/russian/files/CompareForm.png -------------------------------------------------------------------------------- /docs/russian/files/HelpButton.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/russian/files/HelpButton.gif -------------------------------------------------------------------------------- /docs/russian/files/IconYellow.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/russian/files/IconYellow.gif -------------------------------------------------------------------------------- /docs/russian/files/StartButton.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/russian/files/StartButton.gif -------------------------------------------------------------------------------- /docs/russian/files/StopButton.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/russian/files/StopButton.gif -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/AB.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/AB.jpg -------------------------------------------------------------------------------- /src/AntiDupl.NET.WinForms/Icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WinForms/Icon.ico -------------------------------------------------------------------------------- /docs/data/help/english/options.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/help/english/options.html -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /docs/russian/files/BrowseButton.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/russian/files/BrowseButton.gif -------------------------------------------------------------------------------- /docs/russian/files/DeleteButton.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/russian/files/DeleteButton.gif -------------------------------------------------------------------------------- /docs/russian/files/LeftMoveButton.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/russian/files/LeftMoveButton.gif -------------------------------------------------------------------------------- /docs/russian/files/OptionsButton.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/russian/files/OptionsButton.gif -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/check.png -------------------------------------------------------------------------------- /docs/data/resources/images/HelpMenu.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/HelpMenu.img -------------------------------------------------------------------------------- /docs/data/resources/images/RedoMenu.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/RedoMenu.img -------------------------------------------------------------------------------- /docs/data/resources/images/UndoMenu.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/UndoMenu.img -------------------------------------------------------------------------------- /docs/russian/files/RightMoveButton.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/russian/files/RightMoveButton.gif -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/loading.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/loading.jpg -------------------------------------------------------------------------------- /docs/data/help/english/files/MainForm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/help/english/files/MainForm.png -------------------------------------------------------------------------------- /docs/data/help/english/files/MainForm2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/help/english/files/MainForm2.png -------------------------------------------------------------------------------- /docs/data/help/english/files/PathsForm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/help/english/files/PathsForm.png -------------------------------------------------------------------------------- /docs/data/help/russian/files/MainForm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/help/russian/files/MainForm.png -------------------------------------------------------------------------------- /docs/data/help/russian/files/MainForm2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/help/russian/files/MainForm2.png -------------------------------------------------------------------------------- /docs/data/help/russian/files/PathsForm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/help/russian/files/PathsForm.png -------------------------------------------------------------------------------- /docs/data/resources/images/DefectIcon.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/DefectIcon.img -------------------------------------------------------------------------------- /docs/data/resources/images/HelpButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/HelpButton.img -------------------------------------------------------------------------------- /docs/data/resources/images/NextButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/NextButton.img -------------------------------------------------------------------------------- /docs/data/resources/images/OptionsMenu.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/OptionsMenu.img -------------------------------------------------------------------------------- /docs/data/resources/images/PathsButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/PathsButton.img -------------------------------------------------------------------------------- /docs/data/resources/images/PathsMenu.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/PathsMenu.img -------------------------------------------------------------------------------- /docs/data/resources/images/RedoButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/RedoButton.img -------------------------------------------------------------------------------- /docs/data/resources/images/RefreshMenu.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/RefreshMenu.img -------------------------------------------------------------------------------- /docs/data/resources/images/StartButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/StartButton.img -------------------------------------------------------------------------------- /docs/data/resources/images/StartMenu.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/StartMenu.img -------------------------------------------------------------------------------- /docs/data/resources/images/Turn_0_Icon.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/Turn_0_Icon.img -------------------------------------------------------------------------------- /docs/data/resources/images/UndoButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/UndoButton.img -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/redo-3-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/redo-3-32.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/undo-3-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/undo-3-32.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/StoreLogo.backup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/StoreLogo.backup.png -------------------------------------------------------------------------------- /docs/data/help/english/files/HotKeysForm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/help/english/files/HotKeysForm.png -------------------------------------------------------------------------------- /docs/data/help/russian/files/HotKeysForm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/help/russian/files/HotKeysForm.png -------------------------------------------------------------------------------- /docs/data/resources/images/BlurringIcon.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/BlurringIcon.img -------------------------------------------------------------------------------- /docs/data/resources/images/MistakeButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/MistakeButton.img -------------------------------------------------------------------------------- /docs/data/resources/images/MistakesMenu.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/MistakesMenu.img -------------------------------------------------------------------------------- /docs/data/resources/images/OptionsButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/OptionsButton.img -------------------------------------------------------------------------------- /docs/data/resources/images/RefreshButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/RefreshButton.img -------------------------------------------------------------------------------- /docs/data/resources/images/Turn_180_Icon.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/Turn_180_Icon.img -------------------------------------------------------------------------------- /docs/data/resources/images/Turn_270_Icon.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/Turn_270_Icon.img -------------------------------------------------------------------------------- /docs/data/resources/images/Turn_90_Icon.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/Turn_90_Icon.img -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/DeleteIcon16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/DeleteIcon16.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/MistakeButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/MistakeButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/fit_size24x24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/fit_size24x24.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/HelpMenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/HelpMenu.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/PathsMenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/PathsMenu.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/RedoMenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/RedoMenu.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/StartMenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/StartMenu.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/UndoMenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/UndoMenu.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/search_clear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/search_clear.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/spyglass24x24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/spyglass24x24.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WinForms/ResultsOptions.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WinForms/ResultsOptions.cs -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/LargeTile.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/LargeTile.scale-100.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/LargeTile.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/LargeTile.scale-125.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/LargeTile.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/LargeTile.scale-150.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/LargeTile.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/LargeTile.scale-200.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/LargeTile.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/LargeTile.scale-400.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/SmallTile.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/SmallTile.scale-100.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/SmallTile.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/SmallTile.scale-125.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/SmallTile.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/SmallTile.scale-150.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/SmallTile.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/SmallTile.scale-200.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/SmallTile.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/SmallTile.scale-400.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/StoreLogo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/StoreLogo.scale-100.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/StoreLogo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/StoreLogo.scale-125.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/StoreLogo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/StoreLogo.scale-150.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/StoreLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/StoreLogo.scale-200.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/StoreLogo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/StoreLogo.scale-400.png -------------------------------------------------------------------------------- /docs/data/help/english/files/EmptyMainForm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/help/english/files/EmptyMainForm.png -------------------------------------------------------------------------------- /docs/data/help/english/files/ProgressForm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/help/english/files/ProgressForm.png -------------------------------------------------------------------------------- /docs/data/help/russian/files/EmptyMainForm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/help/russian/files/EmptyMainForm.png -------------------------------------------------------------------------------- /docs/data/help/russian/files/ProgressForm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/help/russian/files/ProgressForm.png -------------------------------------------------------------------------------- /docs/data/resources/images/BlockinessIcon.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/BlockinessIcon.img -------------------------------------------------------------------------------- /docs/data/resources/images/DeleteDefectIcon.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/DeleteDefectIcon.img -------------------------------------------------------------------------------- /docs/data/resources/images/MistakesButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/MistakesButton.img -------------------------------------------------------------------------------- /docs/data/resources/images/PerformHintMenu.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/PerformHintMenu.img -------------------------------------------------------------------------------- /docs/data/resources/images/PreviousButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/PreviousButton.img -------------------------------------------------------------------------------- /docs/data/resources/images/ProfileOpenMenu.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/ProfileOpenMenu.img -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/BlurringIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/BlurringIcon.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/DefectIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/DefectIcon.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/HelpButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/HelpButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/MistakesMenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/MistakesMenu.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/NextButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/NextButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/OptionsMenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/OptionsMenu.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/PathsButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/PathsButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/RedoButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/RedoButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/RefreshMenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/RefreshMenu.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/StartButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/StartButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/Turn_0_Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/Turn_0_Icon.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/Turn_90_Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/Turn_90_Icon.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/UndoButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/UndoButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/rotate_left24x24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/rotate_left24x24.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/SplashScreen.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/SplashScreen.scale-100.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/SplashScreen.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/SplashScreen.scale-125.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/SplashScreen.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/SplashScreen.scale-150.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/SplashScreen.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/SplashScreen.scale-200.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/SplashScreen.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/SplashScreen.scale-400.png -------------------------------------------------------------------------------- /docs/data/resources/images/MirrorTurn_0_Icon.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/MirrorTurn_0_Icon.img -------------------------------------------------------------------------------- /docs/data/resources/images/MirrorTurn_90_Icon.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/MirrorTurn_90_Icon.img -------------------------------------------------------------------------------- /docs/data/resources/images/PerformHintButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/PerformHintButton.img -------------------------------------------------------------------------------- /docs/data/resources/images/ProfileOpenButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/ProfileOpenButton.img -------------------------------------------------------------------------------- /docs/data/resources/images/ProfileSaveAsMenu.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/ProfileSaveAsMenu.img -------------------------------------------------------------------------------- /docs/data/resources/images/UnknownDefectIcon.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/UnknownDefectIcon.img -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/arrow-190-64-left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/arrow-190-64-left.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/arrow-190-64-rigth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/arrow-190-64-rigth.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/BlockinessIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/BlockinessIcon.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/MistakeButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/MistakeButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/MistakesButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/MistakesButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/OptionsButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/OptionsButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/PreviousButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/PreviousButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/RefreshButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/RefreshButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/Turn_180_Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/Turn_180_Icon.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/Turn_270_Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/Turn_270_Icon.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/rotate_right24x24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/rotate_right24x24.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/LockScreenLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/LockScreenLogo.scale-200.png -------------------------------------------------------------------------------- /docs/data/help/english/files/AdvancedOptionsForm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/help/english/files/AdvancedOptionsForm.png -------------------------------------------------------------------------------- /docs/data/help/english/files/CompareOptionsForm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/help/english/files/CompareOptionsForm.png -------------------------------------------------------------------------------- /docs/data/help/english/files/DefectsOptionsForm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/help/english/files/DefectsOptionsForm.png -------------------------------------------------------------------------------- /docs/data/help/english/files/SearchOptionsForm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/help/english/files/SearchOptionsForm.png -------------------------------------------------------------------------------- /docs/data/help/english/files/SelectColumnsForm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/help/english/files/SelectColumnsForm.png -------------------------------------------------------------------------------- /docs/data/help/english/files/SelectColumnsForm2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/help/english/files/SelectColumnsForm2.png -------------------------------------------------------------------------------- /docs/data/help/russian/files/AdvancedOptionsForm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/help/russian/files/AdvancedOptionsForm.png -------------------------------------------------------------------------------- /docs/data/help/russian/files/CompareOptionsForm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/help/russian/files/CompareOptionsForm.png -------------------------------------------------------------------------------- /docs/data/help/russian/files/DefectsOptionsForm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/help/russian/files/DefectsOptionsForm.png -------------------------------------------------------------------------------- /docs/data/help/russian/files/SearchOptionsForm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/help/russian/files/SearchOptionsForm.png -------------------------------------------------------------------------------- /docs/data/help/russian/files/SelectColumnsForm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/help/russian/files/SelectColumnsForm.png -------------------------------------------------------------------------------- /docs/data/help/russian/files/SelectColumnsForm2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/help/russian/files/SelectColumnsForm2.png -------------------------------------------------------------------------------- /docs/data/resources/images/DuplPairVerticalIcon.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/DuplPairVerticalIcon.img -------------------------------------------------------------------------------- /docs/data/resources/images/MirrorTurn_180_Icon.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/MirrorTurn_180_Icon.img -------------------------------------------------------------------------------- /docs/data/resources/images/MirrorTurn_270_Icon.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/MirrorTurn_270_Icon.img -------------------------------------------------------------------------------- /docs/data/resources/images/OpenBothFoldersButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/OpenBothFoldersButton.png -------------------------------------------------------------------------------- /docs/data/resources/images/OpenBothImagesButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/OpenBothImagesButton.png -------------------------------------------------------------------------------- /docs/data/resources/images/ProfileSaveAsButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/ProfileSaveAsButton.img -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/DeleteDefectIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/DeleteDefectIcon.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/MirrorTurn_0_Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/MirrorTurn_0_Icon.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/PerformHintButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/PerformHintButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/PerformHintMenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/PerformHintMenu.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/ProfileOpenButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/ProfileOpenButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/ProfileOpenMenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/ProfileOpenMenu.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/ProfileSaveAsMenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/ProfileSaveAsMenu.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/UnknownDefectIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/UnknownDefectIcon.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/Square150x150Logo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/Square150x150Logo.scale-100.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/Square150x150Logo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/Square150x150Logo.scale-125.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/Square150x150Logo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/Square150x150Logo.scale-150.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/Square150x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/Square150x150Logo.scale-200.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/Square150x150Logo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/Square150x150Logo.scale-400.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/Square44x44Logo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/Square44x44Logo.scale-100.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/Square44x44Logo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/Square44x44Logo.scale-125.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/Square44x44Logo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/Square44x44Logo.scale-150.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/Square44x44Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/Square44x44Logo.scale-200.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/Square44x44Logo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/Square44x44Logo.scale-400.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/Wide310x150Logo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/Wide310x150Logo.scale-100.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/Wide310x150Logo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/Wide310x150Logo.scale-125.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/Wide310x150Logo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/Wide310x150Logo.scale-150.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/Wide310x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/Wide310x150Logo.scale-200.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/Wide310x150Logo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/Wide310x150Logo.scale-400.png -------------------------------------------------------------------------------- /docs/data/help/english/files/ContextMenuImagePanel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/help/english/files/ContextMenuImagePanel.png -------------------------------------------------------------------------------- /docs/data/help/english/files/HighlightOptionsForm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/help/english/files/HighlightOptionsForm.png -------------------------------------------------------------------------------- /docs/data/help/russian/files/ContextMenuImagePanel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/help/russian/files/ContextMenuImagePanel.png -------------------------------------------------------------------------------- /docs/data/help/russian/files/HighlightOptionsForm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/help/russian/files/HighlightOptionsForm.png -------------------------------------------------------------------------------- /docs/data/resources/images/DeleteFirstVerticalIcon.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/DeleteFirstVerticalIcon.img -------------------------------------------------------------------------------- /docs/data/resources/images/DuplPairHorizontalIcon.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/DuplPairHorizontalIcon.img -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/MirrorTurn_180_Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/MirrorTurn_180_Icon.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/MirrorTurn_270_Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/MirrorTurn_270_Icon.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/MirrorTurn_90_Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/MirrorTurn_90_Icon.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/ProfileSaveAsButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/ProfileSaveAsButton.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/Square44x44Logo.targetsize-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/Square44x44Logo.targetsize-16.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/Square44x44Logo.targetsize-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/Square44x44Logo.targetsize-24.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/Square44x44Logo.targetsize-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/Square44x44Logo.targetsize-32.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/Square44x44Logo.targetsize-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/Square44x44Logo.targetsize-48.png -------------------------------------------------------------------------------- /docs/data/resources/images/DeleteBothHorizontalButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/DeleteBothHorizontalButton.img -------------------------------------------------------------------------------- /docs/data/resources/images/DeleteBothVerticalButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/DeleteBothVerticalButton.img -------------------------------------------------------------------------------- /docs/data/resources/images/DeleteBothesHorizontalMenu.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/DeleteBothesHorizontalMenu.img -------------------------------------------------------------------------------- /docs/data/resources/images/DeleteBothesVerticalButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/DeleteBothesVerticalButton.img -------------------------------------------------------------------------------- /docs/data/resources/images/DeleteBothesVerticalMenu.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/DeleteBothesVerticalMenu.img -------------------------------------------------------------------------------- /docs/data/resources/images/DeleteDefectVerticalButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/DeleteDefectVerticalButton.img -------------------------------------------------------------------------------- /docs/data/resources/images/DeleteDefectsVerticalMenu.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/DeleteDefectsVerticalMenu.img -------------------------------------------------------------------------------- /docs/data/resources/images/DeleteFirstHorizontalIcon.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/DeleteFirstHorizontalIcon.img -------------------------------------------------------------------------------- /docs/data/resources/images/DeleteFirstVerticalButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/DeleteFirstVerticalButton.img -------------------------------------------------------------------------------- /docs/data/resources/images/DeleteFirstsHorizontalMenu.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/DeleteFirstsHorizontalMenu.img -------------------------------------------------------------------------------- /docs/data/resources/images/DeleteFirstsVerticalButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/DeleteFirstsVerticalButton.img -------------------------------------------------------------------------------- /docs/data/resources/images/DeleteFirstsVerticalMenu.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/DeleteFirstsVerticalMenu.img -------------------------------------------------------------------------------- /docs/data/resources/images/DeleteSecondHorizontalIcon.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/DeleteSecondHorizontalIcon.img -------------------------------------------------------------------------------- /docs/data/resources/images/DeleteSecondVerticalButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/DeleteSecondVerticalButton.img -------------------------------------------------------------------------------- /docs/data/resources/images/DeleteSecondVerticalIcon.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/DeleteSecondVerticalIcon.img -------------------------------------------------------------------------------- /docs/data/resources/images/DeleteSecondsVerticalMenu.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/DeleteSecondsVerticalMenu.img -------------------------------------------------------------------------------- /docs/data/resources/images/JpegEndMarkerIsAbsentIcon.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/JpegEndMarkerIsAbsentIcon.img -------------------------------------------------------------------------------- /docs/data/resources/images/OpenExternDiffImagesButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/OpenExternDiffImagesButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/ReplaceFirstVerticalButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/ReplaceFirstVerticalButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/DuplPairHorizontalIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/DuplPairHorizontalIcon.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/DuplPairVerticalIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/DuplPairVerticalIcon.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/Square44x44Logo.targetsize-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/Square44x44Logo.targetsize-256.png -------------------------------------------------------------------------------- /docs/data/resources/images/DeleteBothesHorizontalButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/DeleteBothesHorizontalButton.img -------------------------------------------------------------------------------- /docs/data/resources/images/DeleteDefectHorizontalButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/DeleteDefectHorizontalButton.img -------------------------------------------------------------------------------- /docs/data/resources/images/DeleteDefectsHorizontalMenu.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/DeleteDefectsHorizontalMenu.img -------------------------------------------------------------------------------- /docs/data/resources/images/DeleteDefectsVerticalButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/DeleteDefectsVerticalButton.img -------------------------------------------------------------------------------- /docs/data/resources/images/DeleteFirstHorizontalButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/DeleteFirstHorizontalButton.img -------------------------------------------------------------------------------- /docs/data/resources/images/DeleteFirstsHorizontalButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/DeleteFirstsHorizontalButton.img -------------------------------------------------------------------------------- /docs/data/resources/images/DeleteSecondHorizontalButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/DeleteSecondHorizontalButton.img -------------------------------------------------------------------------------- /docs/data/resources/images/DeleteSecondsHorizontalMenu.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/DeleteSecondsHorizontalMenu.img -------------------------------------------------------------------------------- /docs/data/resources/images/DeleteSecondsVerticalButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/DeleteSecondsVerticalButton.img -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/ReplaceSecondVerticalButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/ReplaceSecondVerticalButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/DeleteBothVerticalButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/DeleteBothVerticalButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/DeleteBothesVerticalMenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/DeleteBothesVerticalMenu.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/DeleteFirstVerticalIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/DeleteFirstVerticalIcon.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/DeleteFirstsVerticalMenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/DeleteFirstsVerticalMenu.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/DeleteSecondVerticalIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/DeleteSecondVerticalIcon.png -------------------------------------------------------------------------------- /docs/data/resources/images/DeleteDefectsHorizontalButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/DeleteDefectsHorizontalButton.img -------------------------------------------------------------------------------- /docs/data/resources/images/DeleteSecondsHorizontalButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/DeleteSecondsHorizontalButton.img -------------------------------------------------------------------------------- /docs/data/resources/images/MoveFirstToSecondHorizontalMenu.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/MoveFirstToSecondHorizontalMenu.img -------------------------------------------------------------------------------- /docs/data/resources/images/MoveFirstToSecondVerticalButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/MoveFirstToSecondVerticalButton.img -------------------------------------------------------------------------------- /docs/data/resources/images/MoveFirstToSecondVerticalMenu.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/MoveFirstToSecondVerticalMenu.img -------------------------------------------------------------------------------- /docs/data/resources/images/MoveSecondToFirstHorizontalMenu.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/MoveSecondToFirstHorizontalMenu.img -------------------------------------------------------------------------------- /docs/data/resources/images/MoveSecondToFirstVerticalButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/MoveSecondToFirstVerticalButton.img -------------------------------------------------------------------------------- /docs/data/resources/images/MoveSecondToFirstVerticalMenu.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/MoveSecondToFirstVerticalMenu.img -------------------------------------------------------------------------------- /docs/data/resources/images/RenameFirstToSecondVerticalIcon.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/RenameFirstToSecondVerticalIcon.img -------------------------------------------------------------------------------- /docs/data/resources/images/RenameFirstToSecondVerticalMenu.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/RenameFirstToSecondVerticalMenu.img -------------------------------------------------------------------------------- /docs/data/resources/images/RenameSecondToFirstVerticalIcon.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/RenameSecondToFirstVerticalIcon.img -------------------------------------------------------------------------------- /docs/data/resources/images/RenameSecondToFirstVerticalMenu.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/RenameSecondToFirstVerticalMenu.img -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/MoveFirstToSecondVerticalButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/MoveFirstToSecondVerticalButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/MoveSecondToFirstVerticalButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/MoveSecondToFirstVerticalButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/DeleteBothHorizontalButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/DeleteBothHorizontalButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/DeleteBothesHorizontalMenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/DeleteBothesHorizontalMenu.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/DeleteBothesVerticalButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/DeleteBothesVerticalButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/DeleteDefectVerticalButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/DeleteDefectVerticalButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/DeleteDefectsHorizontalMenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/DeleteDefectsHorizontalMenu.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/DeleteDefectsVerticalButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/DeleteDefectsVerticalButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/DeleteDefectsVerticalMenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/DeleteDefectsVerticalMenu.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/DeleteFirstHorizontalButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/DeleteFirstHorizontalButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/DeleteFirstHorizontalIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/DeleteFirstHorizontalIcon.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/DeleteFirstVerticalButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/DeleteFirstVerticalButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/DeleteFirstsHorizontalMenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/DeleteFirstsHorizontalMenu.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/DeleteFirstsVerticalButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/DeleteFirstsVerticalButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/DeleteSecondHorizontalIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/DeleteSecondHorizontalIcon.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/DeleteSecondVerticalButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/DeleteSecondVerticalButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/DeleteSecondsHorizontalMenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/DeleteSecondsHorizontalMenu.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/DeleteSecondsVerticalButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/DeleteSecondsVerticalButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/DeleteSecondsVerticalMenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/DeleteSecondsVerticalMenu.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/JpegEndMarkerIsAbsentIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/JpegEndMarkerIsAbsentIcon.png -------------------------------------------------------------------------------- /docs/data/resources/images/MoveFirstToSecondHorizontalButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/MoveFirstToSecondHorizontalButton.img -------------------------------------------------------------------------------- /docs/data/resources/images/MoveSecondToFirstHorizontalButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/MoveSecondToFirstHorizontalButton.img -------------------------------------------------------------------------------- /docs/data/resources/images/RenameFirstLikeSecondVerticalMenu.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/RenameFirstLikeSecondVerticalMenu.img -------------------------------------------------------------------------------- /docs/data/resources/images/RenameFirstToSecondHorizontalIcon.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/RenameFirstToSecondHorizontalIcon.img -------------------------------------------------------------------------------- /docs/data/resources/images/RenameFirstToSecondHorizontalMenu.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/RenameFirstToSecondHorizontalMenu.img -------------------------------------------------------------------------------- /docs/data/resources/images/RenameFirstToSecondVerticalButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/RenameFirstToSecondVerticalButton.img -------------------------------------------------------------------------------- /docs/data/resources/images/RenameSecondLikeFirstVerticalMenu.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/RenameSecondLikeFirstVerticalMenu.img -------------------------------------------------------------------------------- /docs/data/resources/images/RenameSecondToFirstHorizontalIcon.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/RenameSecondToFirstHorizontalIcon.img -------------------------------------------------------------------------------- /docs/data/resources/images/RenameSecondToFirstHorizontalMenu.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/RenameSecondToFirstHorizontalMenu.img -------------------------------------------------------------------------------- /docs/data/resources/images/RenameSecondToFirstVerticalButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/RenameSecondToFirstVerticalButton.img -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/DeleteBothesHorizontalButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/DeleteBothesHorizontalButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/DeleteDefectHorizontalButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/DeleteDefectHorizontalButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/DeleteDefectsHorizontalButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/DeleteDefectsHorizontalButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/DeleteFirstsHorizontalButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/DeleteFirstsHorizontalButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/DeleteSecondHorizontalButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/DeleteSecondHorizontalButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/DeleteSecondsHorizontalButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/DeleteSecondsHorizontalButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/MoveFirstToSecondVerticalMenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/MoveFirstToSecondVerticalMenu.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/MoveSecondToFirstVerticalMenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/MoveSecondToFirstVerticalMenu.png -------------------------------------------------------------------------------- /docs/data/resources/images/RenameFirstLikeSecondHorizontalMenu.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/RenameFirstLikeSecondHorizontalMenu.img -------------------------------------------------------------------------------- /docs/data/resources/images/RenameFirstLikeSecondVerticalButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/RenameFirstLikeSecondVerticalButton.img -------------------------------------------------------------------------------- /docs/data/resources/images/RenameFirstToSecondHorizontalButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/RenameFirstToSecondHorizontalButton.img -------------------------------------------------------------------------------- /docs/data/resources/images/RenameSecondLikeFirstHorizontalMenu.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/RenameSecondLikeFirstHorizontalMenu.img -------------------------------------------------------------------------------- /docs/data/resources/images/RenameSecondLikeFirstVerticalButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/RenameSecondLikeFirstVerticalButton.img -------------------------------------------------------------------------------- /docs/data/resources/images/RenameSecondToFirstHorizontalButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/RenameSecondToFirstHorizontalButton.img -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/MoveAndRenameFirstLikeSecondVertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/MoveAndRenameFirstLikeSecondVertical.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/MoveAndRenameSecondLikeFirstVertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/MoveAndRenameSecondLikeFirstVertical.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/MoveFirstToSecondHorizontalMenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/MoveFirstToSecondHorizontalMenu.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/MoveFirstToSecondVerticalButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/MoveFirstToSecondVerticalButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/MoveSecondToFirstHorizontalMenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/MoveSecondToFirstHorizontalMenu.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/MoveSecondToFirstVerticalButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/MoveSecondToFirstVerticalButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/RenameFirstToSecondVerticalIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/RenameFirstToSecondVerticalIcon.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/RenameFirstToSecondVerticalMenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/RenameFirstToSecondVerticalMenu.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/RenameSecondToFirstVerticalIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/RenameSecondToFirstVerticalIcon.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/RenameSecondToFirstVerticalMenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/RenameSecondToFirstVerticalMenu.png -------------------------------------------------------------------------------- /docs/data/resources/images/RenameFirstLikeSecondHorizontalButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/RenameFirstLikeSecondHorizontalButton.img -------------------------------------------------------------------------------- /docs/data/resources/images/RenameSecondLikeFirstHorizontalButton.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/docs/data/resources/images/RenameSecondLikeFirstHorizontalButton.img -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/MoveFirstToSecondHorizontalButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/MoveFirstToSecondHorizontalButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/MoveSecondToFirstHorizontalButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/MoveSecondToFirstHorizontalButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/RenameFirstLikeSecondVerticalMenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/RenameFirstLikeSecondVerticalMenu.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/RenameFirstToSecondHorizontalIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/RenameFirstToSecondHorizontalIcon.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/RenameFirstToSecondHorizontalMenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/RenameFirstToSecondHorizontalMenu.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/RenameFirstToSecondVerticalButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/RenameFirstToSecondVerticalButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/RenameSecondLikeFirstVerticalMenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/RenameSecondLikeFirstVerticalMenu.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/RenameSecondToFirstHorizontalIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/RenameSecondToFirstHorizontalIcon.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/RenameSecondToFirstHorizontalMenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/RenameSecondToFirstHorizontalMenu.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/RenameSecondToFirstVerticalButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/RenameSecondToFirstVerticalButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.Core/Enums/PixelFormatType.cs: -------------------------------------------------------------------------------- 1 | namespace AntiDupl.NET.Core.Enums 2 | { 3 | public enum PixelFormatType 4 | { 5 | None = 0, 6 | Argb32 = 1, 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/RenameFirstLikeSecondHorizontalButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/RenameFirstLikeSecondHorizontalButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/RenameFirstLikeSecondHorizontalMenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/RenameFirstLikeSecondHorizontalMenu.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/RenameFirstLikeSecondVerticalButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/RenameFirstLikeSecondVerticalButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/RenameFirstToSecondHorizontalButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/RenameFirstToSecondHorizontalButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/RenameSecondLikeFirstHorizontalButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/RenameSecondLikeFirstHorizontalButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/RenameSecondLikeFirstHorizontalMenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/RenameSecondLikeFirstHorizontalMenu.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/RenameSecondLikeFirstVerticalButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/RenameSecondLikeFirstVerticalButton.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Image/img/RenameSecondToFirstHorizontalButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/AntiDupl.NET.WPF/Image/img/RenameSecondToFirstHorizontalButton.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/Square44x44Logo.altform-unplated_targetsize-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/Square44x44Logo.altform-unplated_targetsize-16.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/Square44x44Logo.altform-unplated_targetsize-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/Square44x44Logo.altform-unplated_targetsize-256.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/Square44x44Logo.altform-unplated_targetsize-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/Square44x44Logo.altform-unplated_targetsize-32.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/Square44x44Logo.altform-unplated_targetsize-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/Square44x44Logo.altform-unplated_targetsize-48.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/Square44x44Logo.targetsize-24_altform-unplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/Square44x44Logo.targetsize-24_altform-unplated.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/Square44x44Logo.altform-lightunplated_targetsize-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/Square44x44Logo.altform-lightunplated_targetsize-16.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/Square44x44Logo.altform-lightunplated_targetsize-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/Square44x44Logo.altform-lightunplated_targetsize-24.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/Square44x44Logo.altform-lightunplated_targetsize-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/Square44x44Logo.altform-lightunplated_targetsize-256.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/Square44x44Logo.altform-lightunplated_targetsize-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/Square44x44Logo.altform-lightunplated_targetsize-32.png -------------------------------------------------------------------------------- /src/查找和显示重复图像/Images/Square44x44Logo.altform-lightunplated_targetsize-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ermig1979/AntiDupl/HEAD/src/查找和显示重复图像/Images/Square44x44Logo.altform-lightunplated_targetsize-48.png -------------------------------------------------------------------------------- /src/AntiDupl.NET.Core/Enums/AlgorithmComparing.cs: -------------------------------------------------------------------------------- 1 | namespace AntiDupl.NET.Core.Enums 2 | { 3 | public enum AlgorithmComparing : int 4 | { 5 | SquaredSum = 0, 6 | SSIM = 1, 7 | }; 8 | } -------------------------------------------------------------------------------- /src/查找和显示重复图像/Directory.Build.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /docs/version.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 2 4 | 3 5 | 12 6 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/View/ConfigurationWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace AntiDupl.NET.WPF.View 2 | { 3 | public partial class ConfigurationWindow 4 | { 5 | public ConfigurationWindow() 6 | { 7 | InitializeComponent(); 8 | } 9 | } 10 | } -------------------------------------------------------------------------------- /src/AntiDupl.NET.WinForms/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /docs/data/help/english/title.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Title 5 | 6 |
7 | 8 |
9 |

AntiDupl.NET Description

10 |
11 | 12 |
13 | 14 | -------------------------------------------------------------------------------- /docs/data/help/english/home.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Home page 5 | 6 | 7 |

8 | Home page 9 |

10 | 11 | 12 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/View/MainWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | using System.Windows.Controls; 3 | 4 | namespace AntiDupl.NET.WPF.View 5 | { 6 | public partial class MainWindow 7 | { 8 | public MainWindow() 9 | { 10 | InitializeComponent(); 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /docs/data/help/russian/title.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Заголовок 5 | 6 |
7 | 8 |
9 |

Описание AntiDupl.NET

10 |
11 | 12 |
13 | 14 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/ObjectModel/ViewMode.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace AntiDupl.NET.WPF.ObjectModel 8 | { 9 | public enum ViewMode 10 | { 11 | Pair, 12 | Group 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /docs/data/help/russian/home.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Домашняя страница 5 | 6 | 7 |

8 | Домашняя страница 9 |

10 | 11 | 12 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/ObjectModel/PositionInDuplPair.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace AntiDupl.NET.WPF.ObjectModel 8 | { 9 | public enum PositionInDuplPair 10 | { 11 | First, 12 | Second 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/packages.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/ObjectModel/ActionCondition.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace AntiDupl.NET.WPF.ObjectModel 8 | { 9 | /* public enum ActionCondition 10 | { 11 | BestImageByPropertyEqualBestImageByPath, 12 | }*/ 13 | } 14 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/ObjectModel/ActionOnDuplPair.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace AntiDupl.NET.WPF.ObjectModel 8 | { 9 | public enum ActionOnDuplPair 10 | { 11 | DeleteBadImage, 12 | ReplaceBadImage 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /cmd/CopyData.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | set SRC_DIR=%1 3 | set OUT_DIR=%2 4 | 5 | robocopy "%SRC_DIR%\data\resources" "%OUT_DIR%\data\resources" /MIR 6 | if %ERRORLEVEL% GEQ 8 goto FAIL 7 | robocopy "%SRC_DIR%\docs\data\resources" "%OUT_DIR%\data\resources" /S 8 | if %ERRORLEVEL% GEQ 8 goto FAIL 9 | 10 | exit /b 0 11 | :FAIL 12 | echo error! exitcode: %ERRORLEVEL% 13 | exit /b %ERRORLEVEL% 14 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/ViewModel/IClosingViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace AntiDupl.NET.WPF.ViewModel 8 | { 9 | public interface IClosingViewModel 10 | { 11 | void OnClosing(object sender, System.ComponentModel.CancelEventArgs e); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/ObjectModel/EqualAction.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace AntiDupl.NET.WPF.ObjectModel 8 | { 9 | public enum EqualAction 10 | { 11 | //SkipPair, 12 | SkipImagePropertyCompare, 13 | BestHaveOldestLastAccessTime 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/UndoRedo/IUCommand.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace AntiDupl.NET.WPF.UndoRedo 8 | { 9 | public interface IUCommand : IDisposable 10 | { 11 | bool Execute(); 12 | bool UnExecute(); 13 | string Description { get; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/vcpkg.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg.schema.json", 3 | "name": "antidupl", 4 | "version": "1.1", 5 | "dependencies": [ 6 | "libjpeg-turbo", 7 | "openjpeg", 8 | "libwebp", 9 | "libheif", 10 | "simd", 11 | "libavif", 12 | "libjxl" 13 | ], 14 | "builtin-baseline": "3b9d086009cc1c2256e9c28ad44a00036fbd9b26" 15 | } 16 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Const.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace AntiDupl.NET.WPF 8 | { 9 | public class Const 10 | { 11 | public const int IMAGE_HEIGHT = 150; 12 | public const int IMAGE_WIDTH = 150; 13 | 14 | public const string ForDeleteEXTENSION = ".icd"; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/ObjectModel/CriterionType.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace AntiDupl.NET.WPF.ObjectModel 8 | { 9 | public enum CriterionType 10 | { 11 | Resolution, 12 | LargerFileSize, 13 | SmallerFileSize, 14 | Blockiness, 15 | Bluring 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Model/IViewModeModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using AntiDupl.NET.WPF.ObjectModel; 8 | 9 | namespace AntiDupl.NET.WPF.Model 10 | { 11 | public interface IViewModeModel : INotifyPropertyChanged 12 | { 13 | ViewMode ViewMode { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.Core/Original/AdBitmap.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Runtime.InteropServices; 3 | using AntiDupl.NET.Core.Enums; 4 | 5 | namespace AntiDupl.NET.Core.Original 6 | { 7 | [StructLayout(LayoutKind.Sequential)] 8 | public struct AdBitmap 9 | { 10 | public uint width; 11 | public uint height; 12 | public int stride; 13 | public PixelFormatType format; 14 | public IntPtr data; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Service/IThumbnailProvider.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.ComponentModel; 3 | namespace AntiDupl.NET.WPF.Service 4 | { 5 | public interface IThumbnailProvider : IDisposable 6 | { 7 | event PropertyChangedEventHandler PropertyChanged; 8 | void ClearThumbnailCache(); 9 | void Dispose(); 10 | void Enqueue(AntiDupl.NET.WPF.ObjectModel.ImageInfoClass item); 11 | string ThumbnailCacheStatus { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Convertor/MaxProperty.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace AntiDupl.NET.WPF.Convertor 8 | { 9 | public enum MaxProperty 10 | { 11 | Blockiness, 12 | Bluring, 13 | JpegPeaks, 14 | FileSize, 15 | Resolution, 16 | EXIF, 17 | UtilityIndex 18 | //Width, 19 | //Height 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/DragDrop/IDropable.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace AntiDupl.NET.WPF.DragDrop 8 | { 9 | interface IDropable 10 | { 11 | /// 12 | /// Drop data into the collection. 13 | /// 14 | /// The data to be dropped 15 | void Drop(object dropObject); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/ObjectModel/BindableMenuItem.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows.Input; 7 | 8 | namespace AntiDupl.NET.WPF.ObjectModel 9 | { 10 | public class BindableMenuItem 11 | { 12 | public string Name { get; set; } 13 | public BindableMenuItem[] Children { get; set; } 14 | public ICommand Command { get; set; } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/ObjectModel/DirectoryFilter/IDirectoryFilter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace AntiDupl.NET.WPF.ObjectModel.DirectoryFilter 8 | { 9 | public interface IDirectoryFilter 10 | { 11 | string Name { get; } 12 | 13 | bool IsSelect(ViewModel.DuplPairViewModel pair); 14 | 15 | bool IsSelect(DuplicateGroup group); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/ObjectModel/ConditionMode/IConditionMode.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace AntiDupl.NET.WPF.ObjectModel.ConditionMode 8 | { 9 | public interface IConditionMode 10 | { 11 | string Name { get; } 12 | 13 | bool IsSelect(double sourceValue, double compareValue); 14 | bool IsSelect(uint sourceValue, uint compareValue); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Themes/Generic.xaml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/Prop.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | $(SolutionDir)\..\..\bin\$(Configuration) 5 | $(SolutionDir)..\..\obj\$(Configuration)\$(MSBuildProjectName) 6 | $(SolutionDir)..\..\obj\$(Configuration)\$(MSBuildProjectName) 7 | 8 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/ObjectModel/GettingNumber/IGettingNumber.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace AntiDupl.NET.WPF.ObjectModel.GettingNumber 8 | { 9 | public interface IGettingNumber 10 | { 11 | string Name { get; } 12 | 13 | bool ContainNumber(ViewModel.DuplPairViewModel result); 14 | 15 | bool ContainNumber(DuplicateGroup group); 16 | 17 | uint? GetNumber(string fileName); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/ViewModel/BoolEventHandler.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace AntiDupl.NET.WPF.ViewModel 8 | { 9 | public class BoolEventHandler : EventArgs 10 | { 11 | private bool _dialogResult; 12 | 13 | public BoolEventHandler(bool dialogResult) 14 | { 15 | _dialogResult = dialogResult; 16 | } 17 | 18 | public bool DialogResult 19 | { 20 | get { return _dialogResult; } 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/ObjectModel/ByImageProperty/BestConditionParametr.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace AntiDupl.NET.WPF.ObjectModel 8 | { 9 | public enum BestConditionParametr 10 | { 11 | FileSizeBig, 12 | FileSizeSmall, 13 | BlockinessBest, 14 | BlockinessBad, 15 | BlurringBest, 16 | BlurringBad, 17 | ResolutionBig, 18 | ResolutionSmall, 19 | DctHistogramPeaksBest, 20 | DctHistogramPeaksBad 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/ObjectModel/ByPath/IBestSelectingByPath.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace AntiDupl.NET.WPF.ObjectModel.ByPath 8 | { 9 | public interface IBestSelectingByPath 10 | { 11 | ImageInfoClass GetBest(DuplicateGroup group, GettingNumber.IGettingNumber algorithmOfGettingNumberFromFileName); 12 | 13 | bool ExistBest(DuplicateGroup group, GettingNumber.IGettingNumber algorithmOfGettingNumberFromFileName); 14 | 15 | string Name { get; } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/UndoRedo/IUndoRedoEngine.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace AntiDupl.NET.WPF.UndoRedo 9 | { 10 | public interface IUndoRedoEngine : INotifyPropertyChanged 11 | { 12 | void ExecuteCommand(IUCommand command); 13 | bool Redo(); 14 | bool RedoEnable { get; } 15 | bool Undo(); 16 | bool UndoEnable { get; } 17 | 18 | void Clear(); 19 | 20 | string UndoTooltip { get; } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Service/IImageLoader.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | using AntiDupl.NET.Core.Original; 8 | 9 | namespace AntiDupl.NET.WPF.Service 10 | { 11 | interface IImageLoader 12 | { 13 | System.Windows.Media.Imaging.BitmapSource LoadImage(string path, uint width, uint height, CoreDll.ImageType type); 14 | 15 | System.Windows.Media.Imaging.BitmapSource LoadResizedBitmapImage(string path, uint width, uint height, CoreDll.ImageType imageType, int resizedWidth); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/UndoRedo/RenamedImage.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using AntiDupl.NET.WPF.ObjectModel; 7 | 8 | namespace AntiDupl.NET.WPF.UndoRedo 9 | { 10 | struct RenamedImage 11 | { 12 | public ImageInfoClass ImageInfo; 13 | public string PathWithTempExtension; 14 | 15 | public RenamedImage(ImageInfoClass item) 16 | { 17 | ImageInfo = item; 18 | PathWithTempExtension = item.Path + Const.ForDeleteEXTENSION; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Helper/IOHelper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace AntiDupl.NET.WPF.Helper 9 | { 10 | public class IOHelper 11 | { 12 | public static bool IsDirectory(string filename) 13 | { 14 | if (!Directory.Exists(filename)) 15 | { 16 | return false; 17 | } 18 | FileAttributes attr = File.GetAttributes(filename); 19 | return (attr & FileAttributes.Directory) != 0; 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/ObjectModel/ConfigurableAction/IConfigurableAction.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.ObjectModel; 3 | using System.ComponentModel; 4 | namespace AntiDupl.NET.WPF.ObjectModel.ConfigurableAction 5 | { 6 | public interface IConfigurableAction 7 | { 8 | string Name { get; } 9 | 10 | string BestImage { get; } 11 | 12 | string BestByPath { get; } 13 | 14 | string ToString(); 15 | 16 | bool Excute(UndoRedo.IUndoRedoEngine undoRedoEngine, ObservableCollection resultList, 17 | IEditableCollectionView resultCollectionView); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Service/ILanguageService.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Collections.ObjectModel; 4 | using System.Globalization; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | using System.Windows.Input; 9 | using AntiDupl.NET.WPF.ViewModel; 10 | 11 | namespace AntiDupl.NET.WPF.Service 12 | { 13 | public interface ILanguageService 14 | { 15 | event EventHandler LanguageChanged; 16 | 17 | CultureInfo Language { get; set; } 18 | ObservableCollection LanguageCollection { get; } 19 | ICommand LanguageSelectedCommand { get; } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Model/ViewModeModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using AntiDupl.NET.WPF.ObjectModel; 7 | using AntiDupl.NET.WPF.ViewModel; 8 | 9 | namespace AntiDupl.NET.WPF.Model 10 | { 11 | public class ViewModeModel : PropertyChangedBase, IViewModeModel 12 | { 13 | ViewMode _viewMode; 14 | public ViewMode ViewMode 15 | { 16 | get { return _viewMode; } 17 | set 18 | { 19 | _viewMode = value; 20 | RaisePropertyChangedEvent("ViewMode"); 21 | } 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Helper/DirectoryHelper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace AntiDupl.NET.WPF.Helper 9 | { 10 | public class DirectoryHelper 11 | { 12 | public static string ResultDirectory 13 | { 14 | get 15 | { 16 | string directory = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "Result"); 17 | if (!Directory.Exists(directory)) 18 | Directory.CreateDirectory(directory); 19 | return directory; 20 | } 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/ObjectModel/DirectoryFilter/AnywhereDirectoryFilter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace AntiDupl.NET.WPF.ObjectModel.DirectoryFilter 8 | { 9 | class AnywhereDirectoryFilter : IDirectoryFilter 10 | { 11 | public string Name 12 | { 13 | get { return "Anywhere"; } 14 | } 15 | 16 | public bool IsSelect(ViewModel.DuplPairViewModel pair) 17 | { 18 | return true; 19 | } 20 | 21 | public bool IsSelect(DuplicateGroup group) 22 | { 23 | return true; 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/ObjectModel/LogEntry.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace AntiDupl.NET.WPF.ObjectModel 8 | { 9 | public class LogEntry 10 | { 11 | public LogEntry(string message) 12 | { 13 | Message = message; 14 | Time = DateTime.Now.ToString("yyyy.MM.dd HH:mm:ss"); 15 | } 16 | 17 | public string Time { get; private set; } 18 | public string Message { get; private set; } 19 | 20 | public override string ToString() 21 | { 22 | return String.Format("{0} {1}", Time, Message); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/View/PathWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows; 7 | using System.Windows.Controls; 8 | using System.Windows.Data; 9 | using System.Windows.Documents; 10 | using System.Windows.Input; 11 | using System.Windows.Media; 12 | using System.Windows.Media.Imaging; 13 | using System.Windows.Shapes; 14 | 15 | namespace AntiDupl.NET.WPF.View 16 | { 17 | /// 18 | /// Логика взаимодействия для PathWindow.xaml 19 | /// 20 | public partial class PathWindow : Window 21 | { 22 | public PathWindow() 23 | { 24 | InitializeComponent(); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/App.xaml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/View/ColorWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows; 7 | using System.Windows.Controls; 8 | using System.Windows.Data; 9 | using System.Windows.Documents; 10 | using System.Windows.Input; 11 | using System.Windows.Media; 12 | using System.Windows.Media.Imaging; 13 | using System.Windows.Shapes; 14 | 15 | namespace AntiDupl.NET.WPF.View 16 | { 17 | /// 18 | /// Логика взаимодействия для ColorWindow.xaml 19 | /// 20 | public partial class ColorWindow : Window 21 | { 22 | public ColorWindow() 23 | { 24 | InitializeComponent(); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.Core/Properties/PublishProfiles/AntiDuplPublishSingleFile.pubxml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | Publish 8 | x64 9 | ..\..\bin\Publish\ 10 | FileSystem 11 | <_TargetId>Folder 12 | net6.0 13 | win-x64 14 | true 15 | false 16 | false 17 | false 18 | 19 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/ObjectModel/DirectoryFilter/OneImageInDir1OtherInDir2.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace AntiDupl.NET.WPF.ObjectModel.DirectoryFilter 8 | { 9 | class OneImageInDir1OtherInDir2 : IDirectoryFilter 10 | { 11 | public string Name 12 | { 13 | get { return "OneImageInDir1OtherInDir2"; } 14 | } 15 | 16 | public bool IsSelect(ViewModel.DuplPairViewModel pair) 17 | { 18 | throw new NotImplementedException(); 19 | } 20 | 21 | 22 | public bool IsSelect(DuplicateGroup group) 23 | { 24 | throw new NotImplementedException(); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/View/ComparatorWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows; 7 | using System.Windows.Controls; 8 | using System.Windows.Data; 9 | using System.Windows.Documents; 10 | using System.Windows.Input; 11 | using System.Windows.Media; 12 | using System.Windows.Media.Imaging; 13 | using System.Windows.Shapes; 14 | 15 | namespace AntiDupl.NET.WPF.View 16 | { 17 | /// 18 | /// Логика взаимодействия для ComparatorWindow.xaml 19 | /// 20 | public partial class ComparatorWindow : Window 21 | { 22 | public ComparatorWindow() 23 | { 24 | InitializeComponent(); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/View/PrioritiesWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows; 7 | using System.Windows.Controls; 8 | using System.Windows.Data; 9 | using System.Windows.Documents; 10 | using System.Windows.Input; 11 | using System.Windows.Media; 12 | using System.Windows.Media.Imaging; 13 | using System.Windows.Shapes; 14 | 15 | namespace AntiDupl.NET.WPF.View 16 | { 17 | /// 18 | /// Логика взаимодействия для PrioritiesWindow.xaml 19 | /// 20 | public partial class PrioritiesWindow : Window 21 | { 22 | public PrioritiesWindow() 23 | { 24 | InitializeComponent(); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/View/ConfigurableActionWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows; 7 | using System.Windows.Controls; 8 | using System.Windows.Data; 9 | using System.Windows.Documents; 10 | using System.Windows.Input; 11 | using System.Windows.Media; 12 | using System.Windows.Media.Imaging; 13 | using System.Windows.Shapes; 14 | 15 | namespace AntiDupl.NET.WPF.View 16 | { 17 | /// 18 | /// Логика взаимодействия для ConfigurableActionWindow.xaml 19 | /// 20 | public partial class ConfigurableActionWindow : Window 21 | { 22 | public ConfigurableActionWindow() 23 | { 24 | InitializeComponent(); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /docs/data/help/english/install.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Installation 5 | 6 |
7 | 8 |

Installation

9 | 10 |

11 | AntiDupl.NET program requires no installation. 12 | It can be used at any directory on your computer, where access to the record files is opened. 13 |

14 | 15 |

16 | Note: The program can be installed in the directory in which no access to write files. 17 | However, in this case, when user start the program he must specify in command line options 18 | the directory with open access to write files in order to program can save the results of their work. 19 |

20 | 21 |
22 | 23 | -------------------------------------------------------------------------------- /docs/data/help/russian/install.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Установка 5 | 6 |
7 | 8 |

Установка

9 | 10 |

11 | Программа AntiDupl.NET не требует установки. 12 | Она может быть использована из любого каталога на вашем компьютере, в котором открыт доступ на запись файлов. 13 |

14 | 15 |

16 | Замечание: Программа может быть установлена также в каталог, в котором закрыт доступ на запись файлов. 17 | Однако в этом случае программе во время запуска необходимо в опциях коммандной строки указать каталог, 18 | в котором открыт доступ на запись файлов, чтобы программа могла сохранять результаты своей работы. 19 |

20 | 21 |
22 | 23 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/ObjectModel/ByPath/BestImageShouldBeInDirectory.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace AntiDupl.NET.WPF.ObjectModel.ByPath 8 | { 9 | class BestImageShouldBeInDirectory : IBestSelectingByPath 10 | { 11 | public ImageInfoClass GetBest(DuplicateGroup group, GettingNumber.IGettingNumber algorithmOfGettingNumberFromFileName) 12 | { 13 | throw new NotImplementedException(); 14 | } 15 | 16 | 17 | public bool ExistBest(DuplicateGroup group, GettingNumber.IGettingNumber algorithmOfGettingNumberFromFileName) 18 | { 19 | throw new NotImplementedException(); 20 | } 21 | 22 | 23 | public string Name 24 | { 25 | get { return "BestImageShouldBeInDirectory"; } 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WinForms/ImageOpener.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using System.Threading; 3 | using System.Windows.Forms; 4 | 5 | namespace AntiDupl.NET.WinForms 6 | { 7 | static public class ImageOpener 8 | { 9 | /// 10 | /// Opens the specified file using its default application. 11 | /// 12 | static public void OpenFile(string filePath) 13 | { 14 | ProcessStartInfo startInfo = new ProcessStartInfo(); 15 | startInfo.UseShellExecute = true; 16 | startInfo.FileName = filePath; 17 | try 18 | { 19 | var process = Process.Start(startInfo); 20 | Thread.Sleep(System.TimeSpan.FromMilliseconds(100)); 21 | } 22 | catch (System.Exception exeption) 23 | { 24 | MessageBox.Show(exeption.Message); 25 | } 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/ObjectModel/FilterConditionParametr.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace AntiDupl.NET.WPF.ObjectModel 8 | { 9 | public enum FilterConditionParametr 10 | { 11 | Difference, 12 | BothBlockiness, 13 | BlockinessDifference, 14 | //BlockinessDifferenceInPercent, 15 | BothBlurring, 16 | BlurringDifference, 17 | //BlurringDifferenceInPercent, 18 | Resolution, 19 | 20 | //ValueUint 21 | ResolutionDifference, 22 | ResolutionDifferenceInPercent, 23 | 24 | FileSizeDifferenceInPercent, 25 | NoTransformType, 26 | //SameDirectory, 27 | SameType, 28 | DctHistogramPeaksDifference, 29 | DctHistogramPeaksDifferenceInPercent, 30 | OneBlockiness, 31 | OneBlurring, 32 | 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/View/IWindowService.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using AntiDupl.NET.WPF.ViewModel; 7 | 8 | namespace AntiDupl.NET.WPF.View 9 | { 10 | public interface IWindowService 11 | { 12 | //System.Windows.Window MainWindow { get; set; } 13 | ProgressDialogViewModel OpenProgressWindow(ProgressDialogViewModel vm); 14 | void ShowDialogWindow(object dataContext) where T : System.Windows.Window, new(); 15 | bool? ShowDialogWindow(CloseableViewModel dataContext) where T : System.Windows.Window, new(); 16 | void CloseProgressWindow(); 17 | void OpenComparatorWindow(ComparatorViewModel vm); 18 | void CloseComparatorWindow(); 19 | 20 | 21 | void ShowPleaseWait(); 22 | void ClosePleaseWait(); 23 | 24 | void ShowMessage(string message); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/ViewModel/LanguageViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace AntiDupl.NET.WPF.ViewModel 8 | { 9 | public enum LanguageEnum 10 | { 11 | English = 1, 12 | Russian = 2 13 | } 14 | 15 | public class LanguageViewModel : PropertyChangedBase 16 | { 17 | public LanguageViewModel() 18 | { 19 | IsChecked = false; 20 | } 21 | 22 | public LanguageEnum Enum { get; set; } 23 | private bool _isChecked = false; 24 | 25 | public bool IsChecked 26 | { 27 | get { return _isChecked; } 28 | set 29 | { 30 | _isChecked = value; 31 | RaisePropertyChangedEvent("IsChecked"); 32 | } 33 | 34 | } 35 | 36 | public string Title { get; set; } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Properties/PublishProfiles/AntiDuplPublishSingleFile.pubxml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | Publish 8 | x64 9 | ..\..\out\Publish\AntiDupl.NET 10 | FileSystem 11 | <_TargetId>Folder 12 | net6.0-windows 13 | win-x64 14 | true 15 | true 16 | true 17 | true 18 | true 19 | True 20 | 21 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WinForms/Properties/PublishProfiles/AntiDuplPublishSingleFile.pubxml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | Publish 8 | x64 9 | ..\..\out\Publish\AntiDupl.NET 10 | FileSystem 11 | <_TargetId>Folder 12 | net6.0-windows 13 | win-x64 14 | true 15 | true 16 | true 17 | true 18 | true 19 | True 20 | 21 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Convertor/StringToVisibilityConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Globalization; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using System.Windows; 8 | using System.Windows.Data; 9 | 10 | namespace AntiDupl.NET.WPF.Convertor 11 | { 12 | [ValueConversion(typeof(string), typeof(Visibility))] 13 | public class StringToVisibilityConverter : IValueConverter 14 | { 15 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 16 | { 17 | if (!String.IsNullOrEmpty(value as string)) 18 | { 19 | return Visibility.Visible; 20 | } 21 | return Visibility.Collapsed; 22 | } 23 | 24 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 25 | { 26 | throw new NotImplementedException(); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/ObjectModel/DirectoryFilter/SameDirectory.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace AntiDupl.NET.WPF.ObjectModel.DirectoryFilter 8 | { 9 | class SameDirectory : IDirectoryFilter 10 | { 11 | public string Name 12 | { 13 | get { return "SameDirectory"; } 14 | } 15 | 16 | 17 | public bool IsSelect(ViewModel.DuplPairViewModel pair) 18 | { 19 | return pair.FirstFile.Directory == pair.SecondFile.Directory; 20 | } 21 | 22 | 23 | public bool IsSelect(DuplicateGroup group) 24 | { 25 | var firstMatch = group.FileList.FirstOrDefault(); 26 | 27 | if (firstMatch != null) 28 | { 29 | return group.FileList.All(e => e.Directory == firstMatch.Directory); 30 | } 31 | 32 | return false; 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Convertor/ColorToSolidColorBrushConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Globalization; 3 | using System.Windows.Data; 4 | using System.Windows.Media; 5 | 6 | namespace AntiDupl.NET.WPF.Convertor 7 | { 8 | public sealed class ColorToSolidColorBrushConverter : IValueConverter 9 | { 10 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 11 | { 12 | if (!(value is Color)) 13 | return value; 14 | 15 | var brush = new SolidColorBrush((Color) value); 16 | brush.Freeze(); 17 | 18 | return brush; 19 | } 20 | 21 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 22 | { 23 | var brush = value as SolidColorBrush; 24 | if (brush == null) 25 | throw new Exception("Provided value is not brush"); 26 | 27 | return brush.Color; 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /docs/english/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Head 5 | 6 | 7 |
8 | 9 |

10 | English | 11 | Русский 12 |

13 | 14 |
15 |

AntiDupl is a program of similar pictures search

16 | 17 | News | 18 | Download | 19 | Discuss | 20 | AntiDupl.NET Description | 21 | Authors | 22 | GitHub 23 |
24 | 25 |
26 | 27 | 28 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/View/ProgressDialog.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel; 2 | using System.Diagnostics; 3 | using System.Linq; 4 | using System.Windows; 5 | using AntiDupl.NET.WPF.ViewModel; 6 | 7 | namespace AntiDupl.NET.WPF.View; 8 | 9 | /// 10 | /// Логика взаимодействия для ProgressDialog.xaml 11 | /// 12 | public partial class ProgressDialog : Window 13 | { 14 | public ProgressDialog() 15 | { 16 | InitializeComponent(); 17 | } 18 | 19 | protected override void OnClosing(CancelEventArgs e) 20 | { 21 | base.OnClosing(e); 22 | 23 | //find out, if the close button was pressed or if the window was closed by win.close() 24 | if (new StackTrace().GetFrames().FirstOrDefault(x => x.GetMethod() == typeof(Window).GetMethod("Close")) != null) return; 25 | 26 | //if close button was pressed, cancel execution 27 | var vm = (ProgressDialogViewModel)DataContext; 28 | vm.CancelCommand.Execute(null); 29 | e.Cancel = true; 30 | } 31 | } -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Convertor/DifferenceValueConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Globalization; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using System.Windows.Data; 8 | using System.Windows.Media; 9 | 10 | namespace AntiDupl.NET.WPF.Convertor 11 | { 12 | public class DifferenceValueConverter : IValueConverter 13 | { 14 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 15 | { 16 | double difference = (double)value; 17 | if (difference != null) 18 | { 19 | if (difference == 0.0) 20 | return new SolidColorBrush(Colors.LightGreen); 21 | } 22 | 23 | return new SolidColorBrush(); 24 | } 25 | 26 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 27 | { 28 | throw new NotImplementedException(); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Convertor/InverseBooleanConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows.Data; 7 | 8 | namespace AntiDupl.NET.WPF.Convertor 9 | { 10 | [ValueConversion(typeof(bool), typeof(bool))] 11 | public class InverseBooleanConverter : IValueConverter 12 | { 13 | #region IValueConverter Members 14 | 15 | public object Convert(object value, Type targetType, object parameter, 16 | System.Globalization.CultureInfo culture) 17 | { 18 | if (targetType != typeof(bool)) 19 | throw new InvalidOperationException("The target must be a boolean"); 20 | 21 | return !(bool)value; 22 | } 23 | 24 | public object ConvertBack(object value, Type targetType, object parameter, 25 | System.Globalization.CultureInfo culture) 26 | { 27 | throw new NotSupportedException(); 28 | } 29 | 30 | #endregion 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /docs/english/index.html: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | 21 | 22 | AntiDupl is a program of similar pictures search 23 | 24 | 25 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /docs/russian/index.html: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | 21 | 22 | AntiDupl - программа поиска похожих изображений 23 | 24 | 25 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Model/IgnoreStorage.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using AntiDupl.NET.WPF.Helper; 7 | using AntiDupl.NET.WPF.ViewModel; 8 | 9 | namespace AntiDupl.NET.WPF.Model 10 | { 11 | public class IgnoreStorage 12 | { 13 | [NonSerialized] 14 | private const string _fileName = @"ignored.xml"; 15 | 16 | public IgnoreStorage() 17 | { 18 | IgnoreList = new List(); 19 | } 20 | 21 | public List IgnoreList { get; set; } 22 | 23 | 24 | public static IgnoreStorage Load() 25 | { 26 | IgnoreStorage model; 27 | model = SerializeHelper.Load(_fileName); 28 | if (model == null) 29 | model = new IgnoreStorage(); 30 | return model; 31 | } 32 | 33 | public void Save() 34 | { 35 | SerializeHelper.Save(this, _fileName); 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Convertor/ViewModeToVisibilityConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Globalization; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using System.Windows; 8 | using System.Windows.Data; 9 | using AntiDupl.NET.WPF.ObjectModel; 10 | 11 | namespace AntiDupl.NET.WPF.Convertor 12 | { 13 | [ValueConversion(typeof(ViewMode), typeof(Visibility))] 14 | public class ViewModeToVisibilityConverter : IValueConverter 15 | { 16 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 17 | { 18 | var par = (ViewMode)parameter; 19 | var viewMode = (ViewMode)value; 20 | if (viewMode == par) 21 | { 22 | return Visibility.Visible; 23 | } 24 | return Visibility.Collapsed; 25 | } 26 | 27 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 28 | { 29 | throw new NotImplementedException(); 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Model/IConfigurationModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.ObjectModel; 3 | using System.ComponentModel; 4 | using System.Globalization; 5 | using System.Windows.Media; 6 | using AntiDupl.NET.WPF.ObjectModel; 7 | 8 | namespace AntiDupl.NET.WPF.Model 9 | { 10 | public interface IConfigurationModel : INotifyPropertyChanged 11 | { 12 | int ThumbnailWidth { get; set; } 13 | 14 | ObservableCollection Criterions { get; set; } 15 | SerializableCultureInfo Language { get; set; } 16 | string LastResultFile { get; set; } 17 | uint UndoRedoStackSize { get; set; } 18 | uint MaxCachedThumbnail { get; set; } 19 | bool SaveResultInCurrentFile { get; set; } 20 | 21 | Color GoodColor { get; set; } 22 | Color BadColor { get; set; } 23 | Color AlternateColor { get; set; } 24 | Brush AlternateBrush { get; } 25 | 26 | bool LoadResultOnOpen { get; set; } 27 | bool SaveResultOnClose { get; set; } 28 | 29 | void Save(); 30 | ObservableCollection GetDefaultCriterions(); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/ObjectModel/ConfigurableAction/ReplaceBadImageAction.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace AntiDupl.NET.WPF.ObjectModel.ConfigurableAction 8 | { 9 | /* class ReplaceBadImageAction : IConfigurableAction 10 | { 11 | private ImageInfoClass _best; 12 | private ImageInfoClass _bad; 13 | 14 | public ReplaceBadImageAction(ImageInfoClass best, ImageInfoClass bad) 15 | { 16 | this._best = best; 17 | this._bad = bad; 18 | } 19 | 20 | public string Name 21 | { 22 | get { return String.Format("Replace {0} with {1}", _bad.FileName, _best.FileName); } 23 | } 24 | 25 | public void Excute(UndoRedo.IUndoRedoEngine _undoRedoEngine, System.Collections.ObjectModel.ObservableCollection _resultList, System.ComponentModel.IEditableCollectionView _resultCollectionView) 26 | { 27 | throw new NotImplementedException(); 28 | } 29 | }*/ 30 | } 31 | -------------------------------------------------------------------------------- /docs/data/help/english/status.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Status Bar 5 | 6 |
7 | 8 |

Status Bar

9 | 10 |

11 | The status bar is located in the bottom of the main window of the program: 12 |

13 | 14 | 15 | 16 |

17 | It displays: 18 |

19 | 20 |
    21 |
  • 22 | The total number of search results. 23 |

  • 24 |
  • 25 | Number of the current result, which is displayed at the Preview Panel. 26 |

  • 27 |
  • 28 | The count of results which selected by user in the Table of Results. 29 |

  • 30 |
31 | 32 |

33 | The visibility of the status bar can be determined by using item View - Status Bar 34 | of the Main Menu. 35 |

36 | 37 |
38 | 39 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Convertor/FileSizeConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Globalization; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using System.Windows.Data; 8 | 9 | namespace AntiDupl.NET.WPF.Convertor 10 | { 11 | [ValueConversion(typeof(long), typeof(string))] 12 | public class FileSizeConverter : IValueConverter 13 | { 14 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 15 | { 16 | string[] units = { "B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB" }; 17 | double size = (double)((ulong)value); 18 | int unit = 0; 19 | 20 | while (size >= 1024) 21 | { 22 | size /= 1024; 23 | ++unit; 24 | } 25 | 26 | return String.Format("{0:0.#} {1}", size, units[unit]); 27 | } 28 | 29 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 30 | { 31 | throw new NotImplementedException(); 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Helper/PercentHelper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace AntiDupl.NET.WPF.Helper 8 | { 9 | class PercentHelper 10 | { 11 | public static uint CalculateDifference(uint p1, uint p2) 12 | { 13 | return Math.Max(p1, p2) - Math.Min(p1, p2); 14 | } 15 | 16 | public static double CalculatePercent(uint p1, uint p2) 17 | { 18 | return 100 - Math.Min(p1, p2) * 100 / Math.Max(p1, p2); 19 | } 20 | 21 | public static decimal CalculateDifference(ulong p1, ulong p2) 22 | { 23 | return Math.Abs(Convert.ToDecimal(p1) - Convert.ToDecimal(p2)); 24 | } 25 | 26 | public static double CalculatePercent(ulong p1, ulong p2) 27 | { 28 | return 100 - Math.Min(p1, p2) * 100 / Math.Max(p1, p2); 29 | } 30 | 31 | public static double CalculatePercent(double p1, double p2, double maxValue) 32 | { 33 | return Math.Abs(p1 - p2) * 100 / maxValue; 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2002-2019 Ihar Yermalayeu, Dmitry Borisov 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /docs/data/help/russian/status.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Строка состояния 5 | 6 |
7 | 8 |

Строка состояния

9 | 10 |

11 | Строка состояния располагается в нижней части главного окна программы. 12 |

13 | 14 | 15 | 16 |

17 | В ней отображаются: 18 |

19 | 20 |
    21 |
  • 22 | Общее количество результатов поиска. 23 |

  • 24 |
  • 25 | Номер текущего результата, который отображается на панели просмотра. 26 |

  • 27 |
  • 28 | Количество результатов, которые выделил пользователь в таблице результатов. 29 |

  • 30 |
31 | 32 |

33 | Видимость строки состояния регулируется посредством пункта Вид - Строка состояния 34 | в главном меню. 35 |

36 | 37 |
38 | 39 | -------------------------------------------------------------------------------- /docs/russian/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Заголовок 5 | 6 | 7 |
8 | 9 |

10 | English | 11 | Русский 12 |

13 | 14 |
15 |

AntiDupl - программа поиска похожих изображений

16 | 17 | Новости | 18 | Скачать | 19 | Обсудить | 20 | Описание AntiDupl-1.17 | 21 | Описание AntiDupl-2.4.2 | 22 | Описание AntiDupl.NET | 23 | Авторы | 24 | GitHub 25 |
26 | 27 |
28 | 29 | 30 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/ViewModel/CloseableViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows.Input; 6 | using AntiDupl.NET.WPF.Command; 7 | 8 | namespace AntiDupl.NET.WPF.ViewModel 9 | { 10 | public abstract class CloseableViewModel : PropertyChangedBase 11 | { 12 | public event EventHandler ClosingRequest; 13 | 14 | public void OnClosingRequest(bool dialogResult) 15 | { 16 | if (this.ClosingRequest != null) 17 | { 18 | this.ClosingRequest(this, new BoolEventHandler(dialogResult)); 19 | } 20 | } 21 | 22 | ICommand _closeCommand; 23 | public virtual ICommand CloseCommand 24 | { 25 | get 26 | { 27 | return _closeCommand ?? (_closeCommand = new RelayCommand(arg => 28 | { 29 | OnClosingRequest(false); 30 | }, arg => true)); 31 | } 32 | } 33 | 34 | public virtual void OnClosing(object sender, System.ComponentModel.CancelEventArgs e) 35 | { 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.Core/AntiDupl.NET.Core.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | AntiDupl.NET.Core 5 | 6 | 7 | 8 | 9 | Возврашает общее количество групп. 10 | 11 | 12 | 13 | 14 | 15 | Возврашает массив CoreImageInfo содержащихся в переданной группе. 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | Возвращает количество изображений в переданной группе. 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/data/help/english/index.html: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | 21 | 22 | AntiDupl.NET Description 23 | 24 | 25 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /docs/data/help/russian/index.html: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | 21 | 22 | Описание AntiDupl.NET 23 | 24 | 25 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // Dieser Code wurde von einem Tool generiert. 4 | // Laufzeitversion:4.0.30319.42000 5 | // 6 | // Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn 7 | // der Code erneut generiert wird. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace AntiDupl.NET.WPF.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.4.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/ObjectModel/SerializableCultureInfo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Globalization; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace AntiDupl.NET.WPF.ObjectModel 9 | { 10 | [Serializable] 11 | public class SerializableCultureInfo 12 | { 13 | public string LanguageName { get; set; } 14 | 15 | /// 16 | /// Intended for xml serialization purposes only 17 | /// 18 | private SerializableCultureInfo() { } 19 | 20 | public SerializableCultureInfo(string languageName) 21 | { 22 | LanguageName = languageName; 23 | } 24 | 25 | /* public static SerializableCultureInfo FromRGB(int red, int green, int blue) 26 | { 27 | return new SerializableColor(Color.FromArgb(red, green, blue)); 28 | }*/ 29 | 30 | public static SerializableCultureInfo FromCultureInfo(CultureInfo c) 31 | { 32 | return new SerializableCultureInfo(c.Name); 33 | } 34 | 35 | public CultureInfo ToCultureInfo() 36 | { 37 | return new CultureInfo(LanguageName); 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.Core/Enums/Error.cs: -------------------------------------------------------------------------------- 1 | namespace AntiDupl.NET.Core.Enums 2 | { 3 | public enum Error 4 | { 5 | Ok = 0, 6 | Unknown = 1, 7 | AccessDenied = 2, 8 | InvalidPointer = 3, 9 | InvalidFileFormat = 4, 10 | InvalidPathType = 5, 11 | InvalidOptionsType = 6, 12 | InvalidFileType = 7, 13 | InvalidSortType = 8, 14 | InvalidGlobalActionType = 9, 15 | InvalidThreadId = 10, 16 | InvalidStartPosition = 11, 17 | OutputBufferIsTooSmall = 12, 18 | FileIsNotExists = 13, 19 | CantOpenFile = 14, 20 | CantCreateFile = 15, 21 | CantReadFile = 16, 22 | CantWriteFile = 17, 23 | InvalidFileName = 18, 24 | InvalidLocalActionType = 19, 25 | InvalidTargetType = 20, 26 | InvalidIndex = 21, 27 | ZeroTarget = 22, 28 | PathTooLong = 23, 29 | CantLoadImage = 24, 30 | InvalidBitmap = 25, 31 | InvalidThreadType = 26, 32 | InvalidActionEnableType = 27, 33 | InvalidParameterCombination = 28, 34 | InvalidRenameCurrentType = 29, 35 | InvalidInfoType = 30, 36 | InvalidGroupId = 31, 37 | InvalidSelectionType = 32, 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WinForms/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // Dieser Code wurde von einem Tool generiert. 4 | // Laufzeitversion:4.0.30319.42000 5 | // 6 | // Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn 7 | // der Code erneut generiert wird. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace AntiDupl.NET.WinForms.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.4.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Convertor/FolderAreDiffrentMultuValueConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows; 7 | using System.Windows.Data; 8 | using System.Windows.Media; 9 | 10 | 11 | namespace AntiDupl.NET.WPF.Convertor 12 | { 13 | public class FolderAreDiffrentMultuValueConverter : IMultiValueConverter 14 | { 15 | public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture) 16 | { 17 | if (values[0] != DependencyProperty.UnsetValue && values[1] != DependencyProperty.UnsetValue) 18 | { 19 | bool folderAreDiffrent = (bool)values[0]; 20 | Color color = (Color)values[1]; 21 | if (folderAreDiffrent && color != null) 22 | { 23 | return new SolidColorBrush(color); 24 | } 25 | } 26 | return new SolidColorBrush(); 27 | } 28 | 29 | public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture) 30 | { 31 | throw new NotImplementedException(); 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/ObjectModel/ConfigurableAction/SkipAction.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace AntiDupl.NET.WPF.ObjectModel.ConfigurableAction 8 | { 9 | public class SkipAction : IConfigurableAction 10 | { 11 | private string _message; 12 | 13 | public SkipAction(string message) 14 | { 15 | _message = message; 16 | } 17 | 18 | public string Name 19 | { 20 | get { return String.Format("Skip. {0}", _message); } 21 | } 22 | 23 | public override string ToString() 24 | { 25 | return Name; 26 | } 27 | 28 | public bool Excute(UndoRedo.IUndoRedoEngine undoRedoEngine, 29 | System.Collections.ObjectModel.ObservableCollection resultList, 30 | System.ComponentModel.IEditableCollectionView resultCollectionView) 31 | { 32 | return true; 33 | } 34 | 35 | public string BestImage 36 | { 37 | get { return String.Empty; } 38 | } 39 | 40 | public string BestByPath 41 | { 42 | get { return String.Empty; } 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /docs/data/help/english/intro.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | General 5 | 6 |
7 | 8 |

General

9 | 10 |

11 | Typically, modern computer users have large collections of images in various formats. 12 | And then more these collections, then more likely to have the large number of duplicates. 13 | The natural desire of the user is to get rid of them. 14 | However, if the collection is large enough, do this manually is a very tedious and unproductive work. 15 | AntiDupl.NET program will help you automate this process. 16 | It can find and display duplicate images in the main graphic formats: JPEG, GIF, TIFF, BMP, PNG, EMF, WMF, WEBP, EXIF, ICON, JP2, PSD, DDS, HEIF, HEIC, TGA, AVIF and JXL. 17 | The comparison is based on the contents of the files, so the program can find not only almost identical, but similar images. 18 | In addition, the program can find images with some types of defects. 19 |

20 | 21 |

22 | AntiDupl.NET program is free and open-source software. 23 | It is simple to use, has high speed and accuracy of work, supports Russian, Byelorussian, German and English interface. 24 |

25 | 26 |
27 | 28 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Behavior/WindowCloseOnEscBehavior.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows; 7 | using System.Windows.Input; 8 | using Microsoft.Xaml.Behaviors; 9 | 10 | namespace AntiDupl.NET.WPF.Behavior 11 | { 12 | class WindowCloseOnEscBehavior : Behavior 13 | { 14 | protected override void OnAttached() 15 | { 16 | base.OnAttached(); 17 | 18 | AssociatedObject.PreviewKeyDown += AssociatedObject_PreviewKeyDown; 19 | 20 | //_undoRedoEngine = TinyIoCContainer.Current.Resolve(); 21 | } 22 | 23 | void AssociatedObject_PreviewKeyDown(object sender, System.Windows.Input.KeyEventArgs e) 24 | { 25 | Window target = sender as Window; 26 | 27 | if (target != null) 28 | { 29 | if (e.Key == Key.Escape) 30 | { 31 | target.Close(); 32 | } 33 | } 34 | } 35 | 36 | 37 | protected override void OnDetaching() 38 | { 39 | base.OnDetaching(); 40 | 41 | AssociatedObject.PreviewKeyDown -= AssociatedObject_PreviewKeyDown; 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WinForms/ImageDiffOpener.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Diagnostics; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading; 7 | using System.Threading.Tasks; 8 | using System.Windows.Forms; 9 | 10 | namespace AntiDupl.NET.WinForms 11 | { 12 | static public class ImageDiffOpener 13 | { 14 | /// 15 | /// Opens the specified file using its default application. 16 | /// 17 | static public void OpenFiles(string filePathFirstImage, string filePathSecondImage, string executablePath, string executableArguments) 18 | { 19 | ProcessStartInfo startInfo = new ProcessStartInfo(); 20 | startInfo.FileName = executablePath; 21 | startInfo.Arguments = executableArguments.Replace("%1",filePathFirstImage).Replace("%2",filePathSecondImage); 22 | startInfo.WindowStyle = ProcessWindowStyle.Maximized; 23 | try 24 | { 25 | var process = Process.Start(startInfo); 26 | Thread.Sleep(System.TimeSpan.FromMilliseconds(100)); 27 | } 28 | catch (System.Exception exeption) 29 | { 30 | MessageBox.Show(exeption.Message); 31 | } 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/ObjectModel/ConditionMode/LessConditionMode.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace AntiDupl.NET.WPF.ObjectModel.ConditionMode 8 | { 9 | class LessConditionMode : IConditionMode 10 | { 11 | public string Name 12 | { 13 | get 14 | { 15 | return "Less"; 16 | } 17 | } 18 | 19 | public bool IsSelect(double sourceValue, double compareValue) 20 | { 21 | return sourceValue < compareValue; 22 | } 23 | 24 | public bool IsSelect(uint sourceValue, uint compareValue) 25 | { 26 | return sourceValue < compareValue; 27 | } 28 | 29 | public override bool Equals(Object obj) 30 | { 31 | // Check for null values and compare run-time types. 32 | if (obj == null || GetType() != obj.GetType()) 33 | return false; 34 | 35 | //Если ссылки указывают на один и тот же адрес, то их идентичность гарантирована. 36 | if (object.ReferenceEquals(this, obj)) 37 | return true; 38 | 39 | IConditionMode c = (IConditionMode)obj; 40 | return Name.Equals(c.Name); 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/ObjectModel/ConditionMode/MoreConditionMode.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace AntiDupl.NET.WPF.ObjectModel.ConditionMode 8 | { 9 | class MoreConditionMode : IConditionMode 10 | { 11 | public string Name 12 | { 13 | get 14 | { 15 | return "More"; 16 | } 17 | } 18 | 19 | public bool IsSelect(double sourceValue, double compareValue) 20 | { 21 | return sourceValue > compareValue; 22 | } 23 | 24 | public bool IsSelect(uint sourceValue, uint compareValue) 25 | { 26 | return sourceValue > compareValue; 27 | } 28 | 29 | public override bool Equals(Object obj) 30 | { 31 | // Check for null values and compare run-time types. 32 | if (obj == null || GetType() != obj.GetType()) 33 | return false; 34 | 35 | //Если ссылки указывают на один и тот же адрес, то их идентичность гарантирована. 36 | if (object.ReferenceEquals(this, obj)) 37 | return true; 38 | 39 | IConditionMode c = (IConditionMode)obj; 40 | return Name.Equals(c.Name); 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/ObjectModel/ConditionMode/EqualConditionMode.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace AntiDupl.NET.WPF.ObjectModel.ConditionMode 8 | { 9 | class EqualConditionMode : IConditionMode 10 | { 11 | public string Name 12 | { 13 | get 14 | { 15 | return "Equal"; 16 | } 17 | } 18 | 19 | public bool IsSelect(double sourceValue, double compareValue) 20 | { 21 | return sourceValue == compareValue; 22 | } 23 | 24 | public bool IsSelect(uint sourceValue, uint compareValue) 25 | { 26 | return sourceValue == compareValue; 27 | } 28 | 29 | public override bool Equals(Object obj) 30 | { 31 | // Check for null values and compare run-time types. 32 | if (obj == null || GetType() != obj.GetType()) 33 | return false; 34 | 35 | //Если ссылки указывают на один и тот же адрес, то их идентичность гарантирована. 36 | if (object.ReferenceEquals(this, obj)) 37 | return true; 38 | 39 | IConditionMode c = (IConditionMode)obj; 40 | return Name.Equals(c.Name); 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /docs/data/help/english/args.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Command Line Options 5 | 6 |
7 | 8 |

Command Line Options

9 | 10 |

11 | When the program starts, you can at the command prompt specify a number of additional options that govern its work. 12 | Below are descriptions of these options and examples of their use. 13 |

14 | 15 |

Place of storage of temporary files

16 | 17 |

18 | In operation, the program needs place to save your settings and results. 19 | By default, the program stores them in its directory (in subfolder user). 20 | If the user, for whatever reason wants to change the storage location of these files, he can do it using the option -s. 21 | The option has the following format: 22 |

23 | 24 |

25 | -s Path 26 |

27 | 28 |

29 | Here Path - full path to an existing directory selected by the user to store files. 30 | If the path contains spaces, it must always be quoted. 31 | Below is an example of using this option: 32 |

33 | 34 |

35 | AntiDupl.NET.exe -s "C:\Documents and Settings\User\Application Data\AntiDupl.NET" 36 |

37 | 38 | 39 |
40 | 41 | -------------------------------------------------------------------------------- /docs/data/help/russian/args.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Опции коммандной строки 5 | 6 |
7 | 8 |

Опции коммандной строки

9 | 10 |

11 | При старте программы, можно в коммандной строке указать ряд дополнительных опций, регулирующих ее работу. 12 | Ниже приведены описания таких опций и примеры их использования. 13 |

14 | 15 |

Место хранения временных файлов

16 | 17 |

18 | В процессе работы программе требуется где-то сохранять свои настройки и результаты работы. 19 | По умолчанию программа сохраняет их в свой каталог (в поддиректорию user). 20 | Если пользователь по каким-либо причинам хочет изменить место хранения таких файлов, он может сделать это при помощи опции -s. 21 | Опция имеет следующий формат: 22 |

23 | 24 |

25 | -s Path 26 |

27 | 28 |

29 | Здесь Path - полный путь к уже существующей директории, выбранной пользователем для хранения файлов. 30 | Если данный путь содержит в себе пробелы, то его нужно обязательно взять в кавычки. 31 | Ниже приведен пример использования этой опции: 32 |

33 | 34 |

35 | AntiDupl.NET.exe -s "C:\Documents and Settings\User\Application Data\AntiDupl.NET" 36 |

37 | 38 |
39 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/ObjectModel/ConfigurableAction/DeleteBadAction.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Collections.ObjectModel; 4 | using System.ComponentModel; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | using AntiDupl.NET.WPF.UndoRedo; 9 | using AntiDupl.NET.WPF.ViewModel; 10 | 11 | namespace AntiDupl.NET.WPF.ObjectModel.ConfigurableAction 12 | { 13 | /* class DeleteBadAction : IConfigurableAction 14 | { 15 | private ImageInfoClass _bad; 16 | DuplPairViewModel _item; 17 | 18 | public DeleteBadAction(ImageInfoClass bad, DuplPairViewModel item) 19 | { 20 | this._bad = bad; 21 | _item = item; 22 | } 23 | 24 | public string Name 25 | { 26 | get { return String.Format("Delete {0}", _bad.FileName); } 27 | } 28 | 29 | public override string ToString() 30 | { 31 | return Name; 32 | } 33 | 34 | public void Excute(UndoRedo.IUndoRedoEngine undoRedoEngine, ObservableCollection resultList, 35 | IEditableCollectionView resultCollectionView) 36 | { 37 | IUCommand deleteImageUndoCommand = new DeleteImageCommand(_item, _bad, resultList, resultCollectionView); 38 | 39 | undoRedoEngine.ExecuteCommand(deleteImageUndoCommand); 40 | } 41 | 42 | 43 | }*/ 44 | } 45 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Helper/VisualTreeHelperEx.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows; 7 | using System.Windows.Media; 8 | 9 | namespace AntiDupl.NET.WPF.Helper 10 | { 11 | public static class VisualTreeHelperEx 12 | { 13 | public static T FindVisualAncestorByType(DependencyObject dependencyObject) where T : DependencyObject 14 | { 15 | if (dependencyObject == null) return default(T); 16 | if (dependencyObject is T) return (T)dependencyObject; 17 | T parent = default(T); 18 | parent = FindVisualAncestorByType(VisualTreeHelper.GetParent(dependencyObject)); 19 | return parent; 20 | } 21 | 22 | public static T FindVisualChildByType(DependencyObject dependencyObject) where T : DependencyObject 23 | { 24 | if (dependencyObject == null) return default(T); 25 | if (dependencyObject is T) return (T)dependencyObject; 26 | T child = default(T); 27 | for (int i = 0; i < VisualTreeHelper.GetChildrenCount(dependencyObject); i++) 28 | { 29 | child = FindVisualChildByType(VisualTreeHelper.GetChild(dependencyObject, i)); 30 | if (child != null) return child; 31 | } 32 | return null; 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /docs/data/help/russian/intro.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Общие сведения 5 | 6 |
7 | 8 |

Общие сведения

9 | 10 |

11 | Как правило, у современных компьютерных пользователей имеются большие коллекции изображений в различных форматах. 12 | И чем больше эти коллекции, тем более вероятно в них наличие большого числа дубликатов. 13 | Естественное желание пользователя - избавиться от них. 14 | Однако, если коллекция достаточно большая, то заниматься этим вручную - весьма утомительное и непродуктивное занятие. 15 | Программа AntiDupl.NET поможет вам автоматизировать данный процесс. 16 | Она способна находить и выводить дубликаты изображений в основных графических форматах: JPEG, GIF, TIFF, BMP, PNG, EMF, WMF, WEBP, EXIF, ICON, JP2, PSD, DDS, HEIF, HEIC, TGA, AVIF и JXL. 17 | Сравнение ведется на основании содержимого файлов, поэтому программа может находить не только полностью идентичные, но и похожие изображения. 18 | Кроме того, программа умеет находить изображения с некоторыми типами дефектов. 19 |

20 | 21 |

22 | AntiDupl.NET - бесплатная программа с открытым исходным кодом. Она достаточно проста в управлении, имеет высокую скорость и точность работы, 23 | поддерживает русский, белорусский, немецкий и английский интерфейс. 24 |

25 | 26 |
27 | 28 | -------------------------------------------------------------------------------- /src/AntiDupl/adDump.h: -------------------------------------------------------------------------------- 1 | /* 2 | * AntiDupl.NET Program (http://ermig1979.github.io/AntiDupl). 3 | * 4 | * Copyright (c) 2002-2018 Yermalayeu Ihar, 2013-2018 Borisov Dmitry. 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in 14 | * all copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | * SOFTWARE. 23 | */ 24 | #ifndef __adDump_h__ 25 | #define __adDump_h__ 26 | 27 | #include "adConfig.h" 28 | 29 | namespace ad 30 | { 31 | void DumpInit(); 32 | } 33 | 34 | #endif//__adDump_h__ -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/ObjectModel/Criterion.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows; 7 | using AntiDupl.NET.WPF.ViewModel; 8 | 9 | namespace AntiDupl.NET.WPF.ObjectModel 10 | { 11 | public class Criterion : PropertyChangedBase 12 | { 13 | /*string _name; 14 | public string Name 15 | { 16 | get { return _name; } 17 | set 18 | { 19 | _name = value; 20 | RaisePropertyChangedEvent("Name"); 21 | } 22 | }*/ 23 | 24 | public CriterionType Type { get; set; } 25 | 26 | public string Name 27 | { 28 | get 29 | { 30 | return Application.Current.Resources["criterion_" + Type.ToString()] as string; 31 | } 32 | } 33 | 34 | decimal _weight; 35 | public decimal Weight 36 | { 37 | get { return _weight; } 38 | set 39 | { 40 | _weight = value; 41 | RaisePropertyChangedEvent("Weight"); 42 | } 43 | } 44 | 45 | bool _isUse; 46 | public bool IsUse 47 | { 48 | get { return _isUse; } 49 | set 50 | { 51 | _isUse = value; 52 | RaisePropertyChangedEvent("IsUse"); 53 | } 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/ObjectModel/GettingNumber/NumberBeforeUnderlineGettingNumber.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Diagnostics; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace AntiDupl.NET.WPF.ObjectModel.GettingNumber 9 | { 10 | class NumberBeforeUnderlineGettingNumber : IGettingNumber 11 | { 12 | public string Name 13 | { 14 | get 15 | { 16 | return "Number before _"; 17 | } 18 | } 19 | 20 | public bool ContainNumber(ViewModel.DuplPairViewModel result) 21 | { 22 | return GetNumber(result.FirstFile.FileName).HasValue && GetNumber(result.SecondFile.FileName).HasValue; 23 | } 24 | 25 | public bool ContainNumber(DuplicateGroup group) 26 | { 27 | return group.FileList.All(r => GetNumber(r.FileName).HasValue); 28 | } 29 | 30 | public uint? GetNumber(string fileName) 31 | { 32 | int index = fileName.IndexOf("_"); 33 | if (index <= 0) 34 | { 35 | Debug.WriteLine(String.Format("Не найдено _ в {0}", fileName)); 36 | return null; 37 | } 38 | string substr = fileName.Substring(0, index); 39 | uint number; 40 | bool result = uint.TryParse(substr, out number); 41 | if (!result) 42 | return null; 43 | return number; 44 | } 45 | 46 | 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/AntiDupl/adDds.h: -------------------------------------------------------------------------------- 1 | /* 2 | * AntiDupl.NET Program (http://ermig1979.github.io/AntiDupl). 3 | * 4 | * Copyright (c) 2002-2018 Yermalayeu Ihar. 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in 14 | * all copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | * SOFTWARE. 23 | */ 24 | #ifndef __adDds_h__ 25 | #define __adDds_h__ 26 | 27 | #include "adImage.h" 28 | 29 | namespace ad 30 | { 31 | class TDds : public TImage 32 | { 33 | public: 34 | static TDds* Load(HGLOBAL hGlobal); 35 | static bool Supported(HGLOBAL hGlobal); 36 | }; 37 | } 38 | 39 | #endif//__adDds_h__ -------------------------------------------------------------------------------- /src/AntiDupl/adTga.h: -------------------------------------------------------------------------------- 1 | /* 2 | * AntiDupl.NET Program (http://ermig1979.github.io/AntiDupl). 3 | * 4 | * Copyright (c) 2002-2018 Yermalayeu Ihar. 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in 14 | * all copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | * SOFTWARE. 23 | */ 24 | #ifndef __adTga_h__ 25 | #define __adTga_h__ 26 | 27 | #include "adImage.h" 28 | 29 | namespace ad 30 | { 31 | class TTga : public TImage 32 | { 33 | public: 34 | static TTga* Load(HGLOBAL hGlobal); 35 | static bool Supported(HGLOBAL hGlobal); 36 | }; 37 | } 38 | 39 | #endif//__adTga_h__ -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Helper/GroupHelper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using AntiDupl.NET.WPF.ObjectModel; 7 | using AntiDupl.NET.WPF.ViewModel; 8 | 9 | namespace AntiDupl.NET.WPF.Helper 10 | { 11 | class GroupHelper 12 | { 13 | public static void ConvertToGroup(IList groups, IEnumerable resultList) 14 | { 15 | foreach (var result in resultList) 16 | { 17 | DuplicateGroup finded = null; 18 | foreach (var group in groups) 19 | { 20 | if (group.ContainFile(result.FirstFile) || group.ContainFile(result.SecondFile)) 21 | { 22 | finded = group; 23 | break; 24 | } 25 | } 26 | if (finded != null) 27 | { 28 | finded.AddResult(result); 29 | } 30 | else 31 | groups.Add(new DuplicateGroup(result)); 32 | } 33 | } 34 | 35 | public static void GroupToList(IEnumerable groups, IList results) 36 | { 37 | foreach (var group in groups) 38 | { 39 | foreach (var result in group.ResultList) 40 | { 41 | results.Add(result); 42 | } 43 | } 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/AntiDupl/adInit.h: -------------------------------------------------------------------------------- 1 | /* 2 | * AntiDupl.NET Program (http://ermig1979.github.io/AntiDupl). 3 | * 4 | * Copyright (c) 2002-2018 Yermalayeu Ihar. 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in 14 | * all copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | * SOFTWARE. 23 | */ 24 | #ifndef __adInit_h__ 25 | #define __adInit_h__ 26 | 27 | #include "adConfig.h" 28 | 29 | namespace ad 30 | { 31 | class TInit 32 | { 33 | struct TContext; 34 | TContext *m_pContext; 35 | public: 36 | TInit(); 37 | ~TInit(); 38 | }; 39 | } 40 | 41 | #endif//__adInit_h__ -------------------------------------------------------------------------------- /src/AntiDupl/adPsd.h: -------------------------------------------------------------------------------- 1 | /* 2 | * AntiDupl.NET Program (http://ermig1979.github.io/AntiDupl). 3 | * 4 | * Copyright (c) 2002-2018 Yermalayeu Ihar. 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in 14 | * all copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | * SOFTWARE. 23 | */ 24 | #ifndef __adPsd_h__ 25 | #define __adPsd_h__ 26 | 27 | #include "adImage.h" 28 | 29 | namespace ad 30 | { 31 | class TPsd : public TImage 32 | { 33 | public: 34 | static TPsd* Load(HGLOBAL hGlobal); 35 | static bool Supported(HGLOBAL hGlobal); 36 | }; 37 | } 38 | 39 | #endif//__adPsd_h__ -------------------------------------------------------------------------------- /src/AntiDupl/adException.h: -------------------------------------------------------------------------------- 1 | /* 2 | * AntiDupl.NET Program (http://ermig1979.github.io/AntiDupl). 3 | * 4 | * Copyright (c) 2002-2018 Yermalayeu Ihar. 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in 14 | * all copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | * SOFTWARE. 23 | */ 24 | #ifndef __adException_h__ 25 | #define __adException_h__ 26 | 27 | #include "adConfig.h" 28 | 29 | namespace ad 30 | { 31 | class TException 32 | { 33 | public: 34 | const adError Error; 35 | 36 | TException(adError error) 37 | :Error(error) 38 | { 39 | } 40 | }; 41 | } 42 | 43 | #endif//__adException_h__ -------------------------------------------------------------------------------- /docs/data/help/english/license.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | License 5 | 6 |
7 | 8 |

License

9 | 10 |

11 | Copyright (c) 2002-2018, Yermalayeu Ihar. 12 |

13 | 14 |

15 | Permission is hereby granted, free of charge, to any person obtaining a copy 16 | of this software and associated documentation files (the "Software"), to deal 17 | in the Software without restriction, including without limitation the rights 18 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 19 | copies of the Software, and to permit persons to whom the Software is 20 | furnished to do so, subject to the following conditions: 21 |

22 | 23 |

24 | The above copyright notice and this permission notice shall be included in 25 | all copies or substantial portions of the Software. 26 |

27 | 28 |

29 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 30 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 31 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 32 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 33 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 34 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 35 | SOFTWARE. 36 |

37 | 38 |
39 | 40 | -------------------------------------------------------------------------------- /src/AntiDupl/adHeif.h: -------------------------------------------------------------------------------- 1 | /* 2 | * AntiDupl.NET Program (http://ermig1979.github.io/AntiDupl). 3 | * 4 | * Copyright (c) 2002-2019 Yermalayeu Ihar, 5 | * 2013-2019 Borisov Dmitry. 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining a copy 8 | * of this software and associated documentation files (the "Software"), to deal 9 | * in the Software without restriction, including without limitation the rights 10 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | * copies of the Software, and to permit persons to whom the Software is 12 | * furnished to do so, subject to the following conditions: 13 | * 14 | * The above copyright notice and this permission notice shall be included in 15 | * all copies or substantial portions of the Software. 16 | * 17 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | * SOFTWARE. 24 | */ 25 | #ifndef __adHeif_h__ 26 | #define __adHeif_h__ 27 | 28 | #include "adImage.h" 29 | 30 | namespace ad 31 | { 32 | class THeif : public TImage 33 | { 34 | public: 35 | static THeif* Load(HGLOBAL hGlobal); 36 | static bool Supported(HGLOBAL hGlobal); 37 | 38 | private: 39 | }; 40 | } 41 | 42 | #endif//__adHeif_h__ 43 | -------------------------------------------------------------------------------- /src/AntiDupl/adJxl.h: -------------------------------------------------------------------------------- 1 | /* 2 | * AntiDupl.NET Program (http://ermig1979.github.io/AntiDupl). 3 | * 4 | * Copyright (c) 2002-2023 Yermalayeu Ihar, 5 | * 2013-2023 Borisov Dmitry. 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining a copy 8 | * of this software and associated documentation files (the "Software"), to deal 9 | * in the Software without restriction, including without limitation the rights 10 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | * copies of the Software, and to permit persons to whom the Software is 12 | * furnished to do so, subject to the following conditions: 13 | * 14 | * The above copyright notice and this permission notice shall be included in 15 | * all copies or substantial portions of the Software. 16 | * 17 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | * SOFTWARE. 24 | */ 25 | #ifndef __adJxl_h__ 26 | #define __adJxl_h__ 27 | 28 | #include "adImage.h" 29 | 30 | namespace ad 31 | { 32 | class TJxl : public TImage 33 | { 34 | public: 35 | static TJxl* Load(HGLOBAL hGlobal); 36 | static bool Supported(HGLOBAL hGlobal); 37 | 38 | private: 39 | }; 40 | } 41 | 42 | #endif//__adJxl_h__ 43 | 44 | -------------------------------------------------------------------------------- /src/AntiDupl/adWebp.h: -------------------------------------------------------------------------------- 1 | /* 2 | * AntiDupl.NET Program (http://ermig1979.github.io/AntiDupl). 3 | * 4 | * Copyright (c) 2002-2019 Yermalayeu Ihar, 5 | * 2013-2019 Borisov Dmitry. 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining a copy 8 | * of this software and associated documentation files (the "Software"), to deal 9 | * in the Software without restriction, including without limitation the rights 10 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | * copies of the Software, and to permit persons to whom the Software is 12 | * furnished to do so, subject to the following conditions: 13 | * 14 | * The above copyright notice and this permission notice shall be included in 15 | * all copies or substantial portions of the Software. 16 | * 17 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | * SOFTWARE. 24 | */ 25 | #ifndef __adWebp_h__ 26 | #define __adWebp_h__ 27 | 28 | #include "adImage.h" 29 | 30 | namespace ad 31 | { 32 | class TWebp : public TImage 33 | { 34 | public: 35 | static TWebp* Load(HGLOBAL hGlobal); 36 | static bool Supported(HGLOBAL hGlobal); 37 | 38 | private: 39 | }; 40 | } 41 | 42 | #endif//__adWebp_h__ 43 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/ObjectModel/DuplicateGroup.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Collections.ObjectModel; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using AntiDupl.NET.WPF.ObjectModel.ConfigurableAction; 8 | using AntiDupl.NET.WPF.ViewModel; 9 | 10 | namespace AntiDupl.NET.WPF.ObjectModel 11 | { 12 | public class DuplicateGroup 13 | { 14 | private DuplPairViewModel result; 15 | public List ResultList { get; set; } 16 | public ObservableCollection FileList { get; set; } 17 | 18 | public DuplicateGroup(DuplPairViewModel result) 19 | { 20 | ResultList = new List(1); 21 | ResultList.Add(result); 22 | FileList = new ObservableCollection(); 23 | FileList.Add(result.FirstFile); 24 | FileList.Add(result.SecondFile); 25 | } 26 | 27 | 28 | internal void AddResult(DuplPairViewModel result) 29 | { 30 | ResultList.Add(result); 31 | if (!FileList.Contains(result.FirstFile)) 32 | FileList.Add(result.FirstFile); 33 | if (!FileList.Contains(result.SecondFile)) 34 | FileList.Add(result.SecondFile); 35 | } 36 | 37 | internal bool ContainFile(ImageInfoClass imageInfoClass) 38 | { 39 | return FileList.Contains(imageInfoClass); 40 | } 41 | 42 | [System.Xml.Serialization.XmlIgnore] 43 | public IConfigurableAction ConfigurableAction { get; set; } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/AntiDupl/adAvif.h: -------------------------------------------------------------------------------- 1 | /* 2 | * AntiDupl.NET Program (http://ermig1979.github.io/AntiDupl). 3 | * 4 | * Copyright (c) 2002-2023 Yermalayeu Ihar, 5 | * 2013-2023 Borisov Dmitry. 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining a copy 8 | * of this software and associated documentation files (the "Software"), to deal 9 | * in the Software without restriction, including without limitation the rights 10 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | * copies of the Software, and to permit persons to whom the Software is 12 | * furnished to do so, subject to the following conditions: 13 | * 14 | * The above copyright notice and this permission notice shall be included in 15 | * all copies or substantial portions of the Software. 16 | * 17 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | * SOFTWARE. 24 | */ 25 | #ifndef __adAvif_h__ 26 | #define __adAvif_h__ 27 | 28 | #include "adImage.h" 29 | 30 | namespace ad 31 | { 32 | class TAvif : public TImage 33 | { 34 | public: 35 | static TAvif* Load(HGLOBAL hGlobal); 36 | static bool Supported(HGLOBAL hGlobal); 37 | 38 | private: 39 | }; 40 | } 41 | 42 | #endif//__adAvif_h__ 43 | 44 | -------------------------------------------------------------------------------- /src/AntiDupl/adGdiplus.h: -------------------------------------------------------------------------------- 1 | /* 2 | * AntiDupl.NET Program (http://ermig1979.github.io/AntiDupl). 3 | * 4 | * Copyright (c) 2002-2018 Yermalayeu Ihar. 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in 14 | * all copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | * SOFTWARE. 23 | */ 24 | #ifndef __adGdiplus_h__ 25 | #define __adGdiplus_h__ 26 | 27 | #include "adImage.h" 28 | 29 | namespace ad 30 | { 31 | class TGdiplus : public TImage 32 | { 33 | public: 34 | static TGdiplus* Load(HGLOBAL hGlobal); 35 | static bool Save(const TView *pView, const TChar * fileName, TImage::TFormat format); 36 | }; 37 | } 38 | 39 | #endif//__adGdiplus_h__ -------------------------------------------------------------------------------- /src/AntiDupl/adImageUtils.h: -------------------------------------------------------------------------------- 1 | /* 2 | * AntiDupl.NET Program (http://ermig1979.github.io/AntiDupl). 3 | * 4 | * Copyright (c) 2002-2018 Yermalayeu Ihar. 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in 14 | * all copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | * SOFTWARE. 23 | */ 24 | #ifndef __adImages_h__ 25 | #define __adImages_h__ 26 | 27 | #include "adImage.h" 28 | 29 | namespace ad 30 | { 31 | struct TOptions; 32 | 33 | //------------------------------------------------------------------------- 34 | 35 | adError LoadBitmap(const TString& fileName, adBitmapPtr pBitmap, const TOptions * pOptions); 36 | } 37 | #endif//__adImages_h__ 38 | 39 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/ViewModel/PropertyChangedBase.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace AntiDupl.NET.WPF.ViewModel 9 | { 10 | public class PropertyChangedBase : INotifyPropertyChanged, INotifyPropertyChanging 11 | { 12 | 13 | #region INotifyPropertyChanged Members 14 | 15 | //реализация INotifyPropertyChanged 16 | public event PropertyChangedEventHandler PropertyChanged; 17 | protected virtual void RaisePropertyChangedEvent(string propertyName) 18 | { 19 | if (PropertyChanged != null) 20 | PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 21 | } 22 | 23 | #endregion 24 | 25 | #region INotifyPropertyChanging Members 26 | 27 | public event PropertyChangingEventHandler PropertyChanging; 28 | 29 | /// 30 | /// Raises the PropertyChanging event. 31 | /// 32 | /// The name of the changing property. 33 | public virtual void RaisePropertyChangingEvent(string propertyName) 34 | { 35 | // Exit if changes ignored 36 | //if (IgnorePropertyChangeEvents) return; 37 | 38 | // Exit if no subscribers 39 | if (PropertyChanging == null) return; 40 | 41 | // Raise event 42 | var e = new PropertyChangingEventArgs(propertyName); 43 | PropertyChanging(this, e); 44 | } 45 | 46 | 47 | #endregion 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/AntiDupl.NET.WPF/Convertor/DeleteBackgroundValueConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Globalization; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using System.Windows.Data; 8 | using System.Windows.Media; 9 | using AntiDupl.NET.WPF.ObjectModel; 10 | using AntiDupl.NET.WPF.ViewModel; 11 | 12 | namespace AntiDupl.NET.WPF.Convertor 13 | { 14 | public class DeleteBackgroundValueConverter : IValueConverter 15 | { 16 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 17 | { 18 | DuplPairViewModel result = value as DuplPairViewModel; 19 | PositionInDuplPair position = (PositionInDuplPair)parameter; 20 | if (result != null && position != null) 21 | { 22 | if (result.FirstFile.UtilityIndex > result.SecondFile.UtilityIndex) 23 | { 24 | if (position == PositionInDuplPair.Second) 25 | return new SolidColorBrush(Colors.LightCoral); 26 | } 27 | else if (result.FirstFile.UtilityIndex < result.SecondFile.UtilityIndex) 28 | { 29 | if (position == PositionInDuplPair.First) 30 | return new SolidColorBrush(Colors.LightCoral); 31 | } 32 | } 33 | 34 | return new SolidColorBrush(); 35 | } 36 | 37 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 38 | { 39 | throw new NotImplementedException(); 40 | } 41 | } 42 | } 43 | --------------------------------------------------------------------------------