int WINAPI FindDupes2(const char* szList, HWND hParent)
{
	AFX_MANAGE_STATE(AfxGetAppModuleState());
	sListOfImages.RemoveAll();
	sListOfImagesToDelete.RemoveAll();
	sListOfImageDibs.RemoveAll();
	CString sFiles=szList;
	sFiles.Replace("\r","");
	sFiles+="\n";
	while(sFiles.GetLength()>0){
		CString sWPTitle=sFiles.SpanExcluding("\n");
		if(strlen(sWPTitle)!=strlen(sFiles)){
			sFiles=sFiles.Mid(strlen(sWPTitle)+1);
		}else{
			sFiles="";
		}
		if(sWPTitle!="" && FindMini(sFiles,sWPTitle+"\n")==-1){
			sListOfImages.Add(sWPTitle);
		}
	}
	CheckImages(0);
	{
		CSplashParams sp;
		sp.szText="Reading...";
		sp.bgColor=0;
		sp.txColor=RGB(255,255,255);
		sp.dwTextParams|=TXSHADOW_VCENT|TXSHADOW_FILLBG|TXSHADOW_WIDE|TXSHADOW_GLOW|TXSHADOW_MIXBG;////TXSHADOW_SHCOL
		sp.dwSplashAlign=SPLASH_OPACITY;
		sp.dwSplashAlign|=SPLASH_HLEFT;
		sp.dwSplashAlign|=SPLASH_VTOP;
		CSplashWindow sw(&sp);
		{//!!!
			for(int i=0;i<sListOfImageDibs.GetSize()-1;i++){
				int iClosest=i+1;
				if(sListOfImageDibs[i] && sListOfImageDibs[iClosest]){
					double daffmin=sListOfImageDibs[i]->CalcDistance(sListOfImageDibs[iClosest]);
					for(int j=i+2;j<sListOfImageDibs.GetSize();j++){
						if(sListOfImageDibs[j]){
							double lAffinity=sListOfImageDibs[i]->CalcDistance(sListOfImageDibs[j]);
							if(daffmin>lAffinity){
								daffmin=lAffinity;
								iClosest=j;
							}
						}
					}
				}
				// iClosest<>i+1
				CString sTmp=sListOfImages[iClosest];
				sListOfImages[iClosest]=sListOfImages[i+1];
				sListOfImages[i+1]=sTmp;
				CDib* sTmp2=sListOfImageDibs[iClosest];
				sListOfImageDibs[iClosest]=sListOfImageDibs[i+1];
				sListOfImageDibs[i+1]=sTmp2;
				sw.SetText(Format("Checking %i",i));
			}
		}
		sw.SetText("Renaming...");
		for(int i=0;i<sListOfImageDibs.GetSize();i++){
			MoveFile(sListOfImages[i],GetDirectoryFromPath(sListOfImages[i])+Format("%04i_%s",i,GetFileFromPath(sListOfImages[i])));
			if(sListOfImageDibs[i]){
				delete sListOfImageDibs[i];
			}
		}
	}
	return 0;
}
Example #2
0
std::string GetLocalModulePath()
{
	std::string dllpath = GetLocalModuleFilename();
	return GetDirectoryFromPath(dllpath);
}