@@ -2201,22 +2201,61 @@ void CImgMergeFrame::OnImgCompareExtractedText()
2201
2201
GetMainFrame ()->ShowTextMergeDoc (m_pDirDoc, m_filePaths.GetSize (), text, desc, _T (" .yaml" ));
2202
2202
}
2203
2203
2204
+ bool CImgMergeFrame::GenerateReport (const String& sFileName ) const
2205
+ {
2206
+ return GenerateReport (sFileName , true );
2207
+ }
2208
+
2204
2209
/* *
2205
2210
* @brief Generate report from file compare results.
2206
2211
*/
2207
- bool CImgMergeFrame::GenerateReport (const String& sFileName ) const
2212
+ bool CImgMergeFrame::GenerateReport (const String& sFileName , bool allPages ) const
2208
2213
{
2209
- String imgdir_full, imgdir, imgfilepath[3 ], diffimg_filename[3 ], path, name, ext;
2214
+ String imgdir_full, imgdir, path, name, ext;
2215
+ String imgfilepath[3 ];
2216
+ std::vector<std::array<String, 3 >> diffimg_filename;
2210
2217
paths::SplitFilename (sFileName , &path, &name, &ext);
2211
2218
imgdir_full = paths::ConcatPath (path, name) + _T (" .files" );
2212
2219
imgdir = paths::FindFileName (imgdir_full);
2213
2220
paths::CreateIfNeeded (imgdir_full);
2214
- for (int i = 0 ; i < m_pImgMergeWindow->GetPaneCount (); ++i)
2221
+
2222
+ int curPages[3 ]{};
2223
+ for (int pane = 0 ; pane < m_pImgMergeWindow->GetPaneCount (); ++pane)
2224
+ curPages[pane] = m_pImgMergeWindow->GetCurrentPage (pane);
2225
+ if (allPages)
2215
2226
{
2216
- imgfilepath[i] = ucr::toTString (m_pImgMergeWindow->GetFileName (i));
2217
- diffimg_filename[i] = strutils::format (_T (" %s/%d.png" ), imgdir, i + 1 );
2218
- m_pImgMergeWindow->SaveDiffImageAs (i, ucr::toUTF16 (strutils::format (_T (" %s\\ %d.png" ), imgdir_full, i + 1 )).c_str ());
2227
+ diffimg_filename.resize (m_pImgMergeWindow->GetMaxPageCount ());
2228
+ for (int page = 0 ; page < m_pImgMergeWindow->GetMaxPageCount (); ++page)
2229
+ {
2230
+ m_pImgMergeWindow->SetCurrentPageAll (page);
2231
+ for (int pane = 0 ; pane < m_pImgMergeWindow->GetPaneCount (); ++pane)
2232
+ {
2233
+ imgfilepath[pane] = ucr::toTString (m_pImgMergeWindow->GetFileName (pane));
2234
+ const int curPage = m_pImgMergeWindow->GetCurrentPage (pane) + 1 ;
2235
+ diffimg_filename[page][pane] = strutils::format (_T (" %s/%d_%d.png" ),
2236
+ imgdir, pane + 1 , curPage);
2237
+ m_pImgMergeWindow->SaveDiffImageAs (pane,
2238
+ ucr::toUTF16 (strutils::format (_T (" %s\\ %d_%d.png" ),
2239
+ imgdir_full, pane + 1 , curPage)).c_str ());
2240
+ }
2241
+ }
2242
+ }
2243
+ else
2244
+ {
2245
+ diffimg_filename.resize (1 );
2246
+ for (int pane = 0 ; pane < m_pImgMergeWindow->GetPaneCount (); ++pane)
2247
+ {
2248
+ imgfilepath[pane] = ucr::toTString (m_pImgMergeWindow->GetFileName (pane));
2249
+ const int curPage = m_pImgMergeWindow->GetCurrentPage (pane) + 1 ;
2250
+ diffimg_filename[0 ][pane] = strutils::format (_T (" %s/%d_%d.png" ),
2251
+ imgdir, pane + 1 , curPage);
2252
+ m_pImgMergeWindow->SaveDiffImageAs (pane,
2253
+ ucr::toUTF16 (strutils::format (_T (" %s\\ %d_%d.png" ),
2254
+ imgdir_full, pane + 1 , curPage)).c_str ());
2255
+ }
2219
2256
}
2257
+ for (int pane = 0 ; pane < m_pImgMergeWindow->GetPaneCount (); ++pane)
2258
+ m_pImgMergeWindow->SetCurrentPage (pane, curPages[pane]);
2220
2259
2221
2260
UniStdioFile file;
2222
2261
if (!file.Open (sFileName , _T (" wt" )))
@@ -2246,17 +2285,21 @@ bool CImgMergeFrame::GenerateReport(const String& sFileName) const
2246
2285
_T (" <body>\n " )
2247
2286
_T (" <table>\n " )
2248
2287
_T (" <tr>\n " ));
2249
- for (int i = 0 ; i < m_pImgMergeWindow->GetPaneCount (); ++i)
2250
- file.WriteString (strutils::format (_T (" <th class=\" title\" >%s</th>\n " ), imgfilepath[i]));
2251
- file.WriteString (
2252
- _T (" </tr>\n " )
2253
- _T (" <tr>\n " ));
2254
- for (int i = 0 ; i < m_pImgMergeWindow->GetPaneCount (); ++i)
2288
+ for (int pane = 0 ; pane < m_pImgMergeWindow->GetPaneCount (); ++pane)
2289
+ file.WriteString (strutils::format (_T (" <th class=\" title\" >%s</th>\n " ), imgfilepath[pane]));
2290
+ file.WriteString (_T (" </tr>\n " ));
2291
+ for (const auto filenames: diffimg_filename)
2292
+ {
2255
2293
file.WriteString (
2256
- strutils::format (_T (" <td><div class=\" img\" ><img src=\" %s\" alt=\" %s\" ></div></td>\n " ),
2257
- diffimg_filename[i], diffimg_filename[i]));
2294
+ _T (" <tr>\n " ));
2295
+ for (int pane = 0 ; pane < m_pImgMergeWindow->GetPaneCount (); ++pane)
2296
+ file.WriteString (
2297
+ strutils::format (_T (" <td><div class=\" img\" ><img src=\" %s\" alt=\" %s\" ></div></td>\n " ),
2298
+ filenames[pane], filenames[pane]));
2299
+ file.WriteString (
2300
+ _T (" </tr>\n " ));
2301
+ }
2258
2302
file.WriteString (
2259
- _T (" </tr>\n " )
2260
2303
_T (" </table>\n " )
2261
2304
_T (" </body>\n " )
2262
2305
_T (" </html>\n " ));
@@ -2270,11 +2313,24 @@ void CImgMergeFrame::OnToolsGenerateReport()
2270
2313
{
2271
2314
String s;
2272
2315
CString folder;
2273
-
2316
+ BOOL allPages = true ;
2317
+
2318
+ #if NTDDI_VERSION >= NTDDI_VISTA
2319
+ CFileDialog dlg (FALSE , _T (" htm" ), nullptr ,
2320
+ OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
2321
+ _ (" HTML Files (*.htm,*.html)|*.htm;*.html|All Files (*.*)|*.*||" ).c_str ());
2322
+ dlg.AddCheckButton (1001 , _ (" All pages" ).c_str (), true );
2323
+ if (dlg.DoModal () != IDOK)
2324
+ return ;
2325
+ dlg.GetCheckButtonState (1001 , allPages);
2326
+ s = dlg.GetPathName ();
2327
+ #else
2274
2328
if (!SelectFile (AfxGetMainWnd ()->GetSafeHwnd (), s, false , folder, _T (" " ), _ (" HTML Files (*.htm,*.html)|*.htm;*.html|All Files (*.*)|*.*||" ), _T (" htm" )))
2275
2329
return ;
2330
+ #endif
2276
2331
2277
- if (GenerateReport (s))
2332
+ CWaitCursor waitstatus;
2333
+ if (GenerateReport (s, allPages))
2278
2334
LangMessageBox (IDS_REPORT_SUCCESS, MB_OK | MB_ICONINFORMATION);
2279
2335
}
2280
2336
0 commit comments