@@ -47,6 +47,7 @@ wchar_t m_szTitle[256] = L"WinIMerge";
47
47
wchar_t m_szWindowClass[256 ] = L" WinIMergeClass" ;
48
48
IImgMergeWindow *m_pImgMergeWindow = NULL ;
49
49
IImgToolWindow *m_pImgToolWindow = NULL ;
50
+ static const int INTERVALS[] = { 200 , 400 , 600 , 800 , 1000 , 1200 , 1500 , 2000 , 3000 , 4000 };
50
51
51
52
#define IMAGES_FILE_FILTER_WILDCARDS L" *.3fr;*.ari;*.arw;*.avci;*.avcs;*.avif;*.avifs;*.bay;*.bmp;*.cap;*.cr2;*.cr3;*.crw;*.cur;*.dcr;*.dcs;*.dds;*.dib;*.dng;*.drf;*.eip;*.erf;*.exif;*.fff;*.gif;*.heic;*.heics;*.heif;*.heifs;*.hif;*.ico;*.icon;*.iiq;*.jfif;*.jpe;*.jpeg;*.jpg;*.jxl;*.jxr;*.k25;*.kdc;*.mef;*.mos;*.mrw;*.nef;*.nrw;*.orf;*.ori;*.pef;*.png;*.ptx;*.pxn;*.raf;*.raw;*.rle;*.rw2;*.rwl;*.sr2;*.srf;*.srw;*.tif;*.tiff;*.wdp;*.webp;*.x3f;*.tga;*.psd;*.svg;*.emf;*.pdf"
52
53
static wchar_t const ImagesFileFilter[] = L" Images (" IMAGES_FILE_FILTER_WILDCARDS L" )\0 " IMAGES_FILE_FILTER_WILDCARDS L" \0 " ;
@@ -208,6 +209,7 @@ void UpdateMenuState(HWND hWnd)
208
209
{
209
210
HMENU hMenu = GetMenu (hWnd);
210
211
CheckMenuItem (hMenu, ID_VIEW_VIEWDIFFERENCES, m_pImgMergeWindow->GetShowDifferences () ? MF_CHECKED : MF_UNCHECKED);
212
+ CheckMenuItem (hMenu, ID_VIEW_BLINKDIFFERENCES, m_pImgMergeWindow->GetBlinkDifferences () ? MF_CHECKED : MF_UNCHECKED);
211
213
CheckMenuItem (hMenu, ID_VIEW_SPLITHORIZONTALLY, m_pImgMergeWindow->GetHorizontalSplit () ? MF_CHECKED : MF_UNCHECKED);
212
214
CheckMenuRadioItem (hMenu, ID_VIEW_INSERTIONDELETIONDETECTION_NONE, ID_VIEW_INSERTIONDELETIONDETECTION_HORIZONTAL,
213
215
m_pImgMergeWindow->GetInsertionDeletionDetectionMode () + ID_VIEW_INSERTIONDELETIONDETECTION_NONE, MF_BYCOMMAND);
@@ -438,6 +440,9 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
438
440
MoveWindow (m_hwndStatusBar, rc.left , rc.bottom , rc.right , rc.bottom + rcStatusBar.bottom , TRUE );
439
441
break ;
440
442
}
443
+ case WM_INITMENUPOPUP:
444
+ UpdateMenuState (hWnd);
445
+ break ;
441
446
case WM_COMMAND:
442
447
{
443
448
int wmId = LOWORD (wParam);
@@ -557,32 +562,38 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
557
562
case ID_VIEW_ZOOM_50:
558
563
case ID_VIEW_ZOOM_25:
559
564
m_pImgMergeWindow->SetZoom (pow (2.0 , (wmId - ID_VIEW_ZOOM_100)));
565
+ m_pImgToolWindow->Sync ();
560
566
break ;
561
567
case ID_VIEW_ZOOMIN:
562
568
m_pImgMergeWindow->SetZoom (m_pImgMergeWindow->GetZoom () + 0.1 );
569
+ m_pImgToolWindow->Sync ();
563
570
break ;
564
571
case ID_VIEW_ZOOMOUT:
565
572
m_pImgMergeWindow->SetZoom (m_pImgMergeWindow->GetZoom () - 0.1 );
566
573
break ;
567
574
case ID_VIEW_OVERLAY_NONE:
568
575
m_pImgMergeWindow->SetOverlayMode (IImgMergeWindow::OVERLAY_NONE);
569
- UpdateMenuState (hWnd );
576
+ m_pImgToolWindow-> Sync ( );
570
577
break ;
571
578
case ID_VIEW_OVERLAY_ALPHABLEND:
572
579
m_pImgMergeWindow->SetOverlayMode (IImgMergeWindow::OVERLAY_ALPHABLEND);
573
- UpdateMenuState (hWnd );
580
+ m_pImgToolWindow-> Sync ( );
574
581
break ;
575
582
case ID_VIEW_OVERLAY_ALPHABLEND_ANIM:
576
583
m_pImgMergeWindow->SetOverlayMode (IImgMergeWindow::OVERLAY_ALPHABLEND_ANIM);
577
- UpdateMenuState (hWnd );
584
+ m_pImgToolWindow-> Sync ( );
578
585
break ;
579
586
case ID_VIEW_OVERLAY_XOR:
580
587
m_pImgMergeWindow->SetOverlayMode (IImgMergeWindow::OVERLAY_XOR);
581
- UpdateMenuState (hWnd );
588
+ m_pImgToolWindow-> Sync ( );
582
589
break ;
583
590
case ID_VIEW_VIEWDIFFERENCES:
584
591
m_pImgMergeWindow->SetShowDifferences (!m_pImgMergeWindow->GetShowDifferences ());
585
- UpdateMenuState (hWnd);
592
+ m_pImgToolWindow->Sync ();
593
+ break ;
594
+ case ID_VIEW_BLINKDIFFERENCES:
595
+ m_pImgMergeWindow->SetBlinkDifferences (!m_pImgMergeWindow->GetBlinkDifferences ());
596
+ m_pImgToolWindow->Sync ();
586
597
break ;
587
598
case ID_VIEW_DIFFBLOCKSIZE_1:
588
599
case ID_VIEW_DIFFBLOCKSIZE_2:
@@ -591,11 +602,11 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
591
602
case ID_VIEW_DIFFBLOCKSIZE_16:
592
603
case ID_VIEW_DIFFBLOCKSIZE_32:
593
604
m_pImgMergeWindow->SetDiffBlockSize (1 << (wmId - ID_VIEW_DIFFBLOCKSIZE_1));
594
- UpdateMenuState (hWnd );
605
+ m_pImgToolWindow-> Sync ( );
595
606
break ;
596
607
case ID_VIEW_THRESHOLD_0:
597
608
m_pImgMergeWindow->SetColorDistanceThreshold (0 );
598
- UpdateMenuState (hWnd );
609
+ m_pImgToolWindow-> Sync ( );
599
610
break ;
600
611
case ID_VIEW_THRESHOLD_2:
601
612
case ID_VIEW_THRESHOLD_4:
@@ -604,25 +615,23 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
604
615
case ID_VIEW_THRESHOLD_32:
605
616
case ID_VIEW_THRESHOLD_64:
606
617
m_pImgMergeWindow->SetColorDistanceThreshold ((1 << (wmId - ID_VIEW_THRESHOLD_2)) * 2.0 );
607
- UpdateMenuState (hWnd );
618
+ m_pImgToolWindow-> Sync ( );
608
619
break ;
609
620
case ID_VIEW_INSERTIONDELETIONDETECTION_NONE:
610
621
case ID_VIEW_INSERTIONDELETIONDETECTION_VERTICAL:
611
622
case ID_VIEW_INSERTIONDELETIONDETECTION_HORIZONTAL:
612
623
m_pImgMergeWindow->SetInsertionDeletionDetectionMode (static_cast <IImgMergeWindow::INSERTION_DELETION_DETECTION_MODE>(wmId - ID_VIEW_INSERTIONDELETIONDETECTION_NONE));
613
- UpdateMenuState (hWnd );
624
+ m_pImgToolWindow-> Sync ( );
614
625
break ;
615
626
case ID_VIEW_DIFF_ALGORITHM_MYERS:
616
627
case ID_VIEW_DIFF_ALGORITHM_MINIMAL:
617
628
case ID_VIEW_DIFF_ALGORITHM_PATIENCE:
618
629
case ID_VIEW_DIFF_ALGORITHM_HISTOGRAM:
619
630
case ID_VIEW_DIFF_ALGORITHM_NONE:
620
631
m_pImgMergeWindow->SetDiffAlgorithm (static_cast <IImgMergeWindow::DIFF_ALGORITHM>(wmId - ID_VIEW_DIFF_ALGORITHM_MYERS));
621
- UpdateMenuState (hWnd);
622
632
break ;
623
633
case ID_VIEW_SPLITHORIZONTALLY:
624
634
m_pImgMergeWindow->SetHorizontalSplit (!m_pImgMergeWindow->GetHorizontalSplit ());
625
- UpdateMenuState (hWnd);
626
635
break ;
627
636
case ID_VIEW_PAGE_NEXTPAGE:
628
637
{
@@ -643,7 +652,6 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
643
652
case ID_VIEW_DRAGGINGMODE_HORIZONTAL_WIPE:
644
653
case ID_VIEW_DRAGGINGMODE_RECTANGLE_SELECT:
645
654
m_pImgMergeWindow->SetDraggingMode (static_cast <IImgMergeWindow::DRAGGING_MODE>(wmId - ID_VIEW_DRAGGINGMODE_NONE));
646
- UpdateMenuState (hWnd);
647
655
break ;
648
656
case ID_VIEW_USEBACKCOLOR:
649
657
{
@@ -669,7 +677,6 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
669
677
{
670
678
m_pImgMergeWindow->SetUseBackColor (useBackColor);
671
679
}
672
- UpdateMenuState (hWnd);
673
680
break ;
674
681
}
675
682
case ID_VIEW_VECTORIMAGESCALING_400:
@@ -679,6 +686,36 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
679
686
case ID_VIEW_VECTORIMAGESCALING_25:
680
687
m_pImgMergeWindow->SetVectorImageZoomRatio (static_cast <float >(pow (2.0 , (wmId - ID_VIEW_VECTORIMAGESCALING_100))));
681
688
break ;
689
+ case ID_VIEW_BLINKINTERVAL_200:
690
+ case ID_VIEW_BLINKINTERVAL_400:
691
+ case ID_VIEW_BLINKINTERVAL_600:
692
+ case ID_VIEW_BLINKINTERVAL_800:
693
+ case ID_VIEW_BLINKINTERVAL_1000:
694
+ case ID_VIEW_BLINKINTERVAL_1200:
695
+ case ID_VIEW_BLINKINTERVAL_1500:
696
+ case ID_VIEW_BLINKINTERVAL_2000:
697
+ case ID_VIEW_BLINKINTERVAL_3000:
698
+ case ID_VIEW_BLINKINTERVAL_4000:
699
+ {
700
+ m_pImgMergeWindow->SetBlinkInterval (INTERVALS[wmId - ID_VIEW_BLINKINTERVAL_200]);
701
+ m_pImgToolWindow->Sync ();
702
+ break ;
703
+ }
704
+ case ID_VIEW_OVERLAYANIMINTERVAL_200:
705
+ case ID_VIEW_OVERLAYANIMINTERVAL_400:
706
+ case ID_VIEW_OVERLAYANIMINTERVAL_600:
707
+ case ID_VIEW_OVERLAYANIMINTERVAL_800:
708
+ case ID_VIEW_OVERLAYANIMINTERVAL_1000:
709
+ case ID_VIEW_OVERLAYANIMINTERVAL_1200:
710
+ case ID_VIEW_OVERLAYANIMINTERVAL_1500:
711
+ case ID_VIEW_OVERLAYANIMINTERVAL_2000:
712
+ case ID_VIEW_OVERLAYANIMINTERVAL_3000:
713
+ case ID_VIEW_OVERLAYANIMINTERVAL_4000:
714
+ {
715
+ m_pImgMergeWindow->SetOverlayAnimationInterval (INTERVALS[wmId - ID_VIEW_OVERLAYANIMINTERVAL_200]);
716
+ m_pImgToolWindow->Sync ();
717
+ break ;
718
+ }
682
719
case ID_VIEW_EXTRACTTEXT:
683
720
{
684
721
int pane = m_pImgMergeWindow->GetActivePane ();
0 commit comments