Skip to content

Commit bb2f4cd

Browse files
committed
Make it possible to change the blink interval and overlay animation interval.
1 parent 05b9c5d commit bb2f4cd

File tree

8 files changed

+171
-35
lines changed

8 files changed

+171
-35
lines changed

src/WinIMerge/WinIMerge.cpp

Lines changed: 50 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ wchar_t m_szTitle[256] = L"WinIMerge";
4747
wchar_t m_szWindowClass[256] = L"WinIMergeClass";
4848
IImgMergeWindow *m_pImgMergeWindow = NULL;
4949
IImgToolWindow *m_pImgToolWindow = NULL;
50+
static const int INTERVALS[] = { 200, 400, 600, 800, 1000, 1200, 1500, 2000, 3000, 4000 };
5051

5152
#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"
5253
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)
208209
{
209210
HMENU hMenu = GetMenu(hWnd);
210211
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);
211213
CheckMenuItem(hMenu, ID_VIEW_SPLITHORIZONTALLY, m_pImgMergeWindow->GetHorizontalSplit() ? MF_CHECKED : MF_UNCHECKED);
212214
CheckMenuRadioItem(hMenu, ID_VIEW_INSERTIONDELETIONDETECTION_NONE, ID_VIEW_INSERTIONDELETIONDETECTION_HORIZONTAL,
213215
m_pImgMergeWindow->GetInsertionDeletionDetectionMode() + ID_VIEW_INSERTIONDELETIONDETECTION_NONE, MF_BYCOMMAND);
@@ -438,6 +440,9 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
438440
MoveWindow(m_hwndStatusBar, rc.left, rc.bottom, rc.right, rc.bottom + rcStatusBar.bottom, TRUE);
439441
break;
440442
}
443+
case WM_INITMENUPOPUP:
444+
UpdateMenuState(hWnd);
445+
break;
441446
case WM_COMMAND:
442447
{
443448
int wmId = LOWORD(wParam);
@@ -557,32 +562,38 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
557562
case ID_VIEW_ZOOM_50:
558563
case ID_VIEW_ZOOM_25:
559564
m_pImgMergeWindow->SetZoom(pow(2.0, (wmId - ID_VIEW_ZOOM_100)));
565+
m_pImgToolWindow->Sync();
560566
break;
561567
case ID_VIEW_ZOOMIN:
562568
m_pImgMergeWindow->SetZoom(m_pImgMergeWindow->GetZoom() + 0.1);
569+
m_pImgToolWindow->Sync();
563570
break;
564571
case ID_VIEW_ZOOMOUT:
565572
m_pImgMergeWindow->SetZoom(m_pImgMergeWindow->GetZoom() - 0.1);
566573
break;
567574
case ID_VIEW_OVERLAY_NONE:
568575
m_pImgMergeWindow->SetOverlayMode(IImgMergeWindow::OVERLAY_NONE);
569-
UpdateMenuState(hWnd);
576+
m_pImgToolWindow->Sync();
570577
break;
571578
case ID_VIEW_OVERLAY_ALPHABLEND:
572579
m_pImgMergeWindow->SetOverlayMode(IImgMergeWindow::OVERLAY_ALPHABLEND);
573-
UpdateMenuState(hWnd);
580+
m_pImgToolWindow->Sync();
574581
break;
575582
case ID_VIEW_OVERLAY_ALPHABLEND_ANIM:
576583
m_pImgMergeWindow->SetOverlayMode(IImgMergeWindow::OVERLAY_ALPHABLEND_ANIM);
577-
UpdateMenuState(hWnd);
584+
m_pImgToolWindow->Sync();
578585
break;
579586
case ID_VIEW_OVERLAY_XOR:
580587
m_pImgMergeWindow->SetOverlayMode(IImgMergeWindow::OVERLAY_XOR);
581-
UpdateMenuState(hWnd);
588+
m_pImgToolWindow->Sync();
582589
break;
583590
case ID_VIEW_VIEWDIFFERENCES:
584591
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();
586597
break;
587598
case ID_VIEW_DIFFBLOCKSIZE_1:
588599
case ID_VIEW_DIFFBLOCKSIZE_2:
@@ -591,11 +602,11 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
591602
case ID_VIEW_DIFFBLOCKSIZE_16:
592603
case ID_VIEW_DIFFBLOCKSIZE_32:
593604
m_pImgMergeWindow->SetDiffBlockSize(1 << (wmId - ID_VIEW_DIFFBLOCKSIZE_1));
594-
UpdateMenuState(hWnd);
605+
m_pImgToolWindow->Sync();
595606
break;
596607
case ID_VIEW_THRESHOLD_0:
597608
m_pImgMergeWindow->SetColorDistanceThreshold(0);
598-
UpdateMenuState(hWnd);
609+
m_pImgToolWindow->Sync();
599610
break;
600611
case ID_VIEW_THRESHOLD_2:
601612
case ID_VIEW_THRESHOLD_4:
@@ -604,25 +615,23 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
604615
case ID_VIEW_THRESHOLD_32:
605616
case ID_VIEW_THRESHOLD_64:
606617
m_pImgMergeWindow->SetColorDistanceThreshold((1 << (wmId - ID_VIEW_THRESHOLD_2)) * 2.0);
607-
UpdateMenuState(hWnd);
618+
m_pImgToolWindow->Sync();
608619
break;
609620
case ID_VIEW_INSERTIONDELETIONDETECTION_NONE:
610621
case ID_VIEW_INSERTIONDELETIONDETECTION_VERTICAL:
611622
case ID_VIEW_INSERTIONDELETIONDETECTION_HORIZONTAL:
612623
m_pImgMergeWindow->SetInsertionDeletionDetectionMode(static_cast<IImgMergeWindow::INSERTION_DELETION_DETECTION_MODE>(wmId - ID_VIEW_INSERTIONDELETIONDETECTION_NONE));
613-
UpdateMenuState(hWnd);
624+
m_pImgToolWindow->Sync();
614625
break;
615626
case ID_VIEW_DIFF_ALGORITHM_MYERS:
616627
case ID_VIEW_DIFF_ALGORITHM_MINIMAL:
617628
case ID_VIEW_DIFF_ALGORITHM_PATIENCE:
618629
case ID_VIEW_DIFF_ALGORITHM_HISTOGRAM:
619630
case ID_VIEW_DIFF_ALGORITHM_NONE:
620631
m_pImgMergeWindow->SetDiffAlgorithm(static_cast<IImgMergeWindow::DIFF_ALGORITHM>(wmId - ID_VIEW_DIFF_ALGORITHM_MYERS));
621-
UpdateMenuState(hWnd);
622632
break;
623633
case ID_VIEW_SPLITHORIZONTALLY:
624634
m_pImgMergeWindow->SetHorizontalSplit(!m_pImgMergeWindow->GetHorizontalSplit());
625-
UpdateMenuState(hWnd);
626635
break;
627636
case ID_VIEW_PAGE_NEXTPAGE:
628637
{
@@ -643,7 +652,6 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
643652
case ID_VIEW_DRAGGINGMODE_HORIZONTAL_WIPE:
644653
case ID_VIEW_DRAGGINGMODE_RECTANGLE_SELECT:
645654
m_pImgMergeWindow->SetDraggingMode(static_cast<IImgMergeWindow::DRAGGING_MODE>(wmId - ID_VIEW_DRAGGINGMODE_NONE));
646-
UpdateMenuState(hWnd);
647655
break;
648656
case ID_VIEW_USEBACKCOLOR:
649657
{
@@ -669,7 +677,6 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
669677
{
670678
m_pImgMergeWindow->SetUseBackColor(useBackColor);
671679
}
672-
UpdateMenuState(hWnd);
673680
break;
674681
}
675682
case ID_VIEW_VECTORIMAGESCALING_400:
@@ -679,6 +686,36 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
679686
case ID_VIEW_VECTORIMAGESCALING_25:
680687
m_pImgMergeWindow->SetVectorImageZoomRatio(static_cast<float>(pow(2.0, (wmId - ID_VIEW_VECTORIMAGESCALING_100))));
681688
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+
}
682719
case ID_VIEW_EXTRACTTEXT:
683720
{
684721
int pane = m_pImgMergeWindow->GetActivePane();

src/WinIMerge/WinIMerge.rc

Lines changed: 38 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ BEGIN
9898
POPUP "&View"
9999
BEGIN
100100
MENUITEM "View &Differences", ID_VIEW_VIEWDIFFERENCES
101+
MENUITEM "&Blink Differences", ID_VIEW_BLINKDIFFERENCES
101102
POPUP "Diff &Block Size"
102103
BEGIN
103104
MENUITEM "&1", ID_VIEW_DIFFBLOCKSIZE_1
@@ -122,14 +123,14 @@ BEGIN
122123
MENUITEM "&None", ID_VIEW_INSERTIONDELETIONDETECTION_NONE
123124
MENUITEM "&Vertical", ID_VIEW_INSERTIONDELETIONDETECTION_VERTICAL
124125
MENUITEM "&Horizontal", ID_VIEW_INSERTIONDELETIONDETECTION_HORIZONTAL
125-
POPUP "Diff Algorithm"
126-
BEGIN
127-
MENUITEM "&Myers", ID_VIEW_DIFF_ALGORITHM_MYERS
128-
MENUITEM "&Minimal", ID_VIEW_DIFF_ALGORITHM_MINIMAL
129-
MENUITEM "&Patience", ID_VIEW_DIFF_ALGORITHM_PATIENCE
130-
MENUITEM "&Histogram", ID_VIEW_DIFF_ALGORITHM_HISTOGRAM
131-
MENUITEM "&None", ID_VIEW_DIFF_ALGORITHM_NONE
132-
END
126+
POPUP "Diff Algorithm"
127+
BEGIN
128+
MENUITEM "&Myers", ID_VIEW_DIFF_ALGORITHM_MYERS
129+
MENUITEM "&Minimal", ID_VIEW_DIFF_ALGORITHM_MINIMAL
130+
MENUITEM "&Patience", ID_VIEW_DIFF_ALGORITHM_PATIENCE
131+
MENUITEM "&Histogram", ID_VIEW_DIFF_ALGORITHM_HISTOGRAM
132+
MENUITEM "&None", ID_VIEW_DIFF_ALGORITHM_NONE
133+
END
133134
END
134135
MENUITEM SEPARATOR
135136
MENUITEM "&Prev Page", ID_VIEW_PAGE_PREVPAGE
@@ -180,6 +181,35 @@ BEGIN
180181
MENUITEM "50%", ID_VIEW_VECTORIMAGESCALING_50
181182
MENUITEM "25%", ID_VIEW_VECTORIMAGESCALING_25
182183
END
184+
POPUP "&Animation Settings"
185+
BEGIN
186+
POPUP "&Blink interval"
187+
BEGIN
188+
MENUITEM "200[ms]", ID_VIEW_BLINKINTERVAL_200
189+
MENUITEM "400[ms]", ID_VIEW_BLINKINTERVAL_400
190+
MENUITEM "600[ms]", ID_VIEW_BLINKINTERVAL_600
191+
MENUITEM "800[ms]", ID_VIEW_BLINKINTERVAL_800
192+
MENUITEM "1000[ms]", ID_VIEW_BLINKINTERVAL_1000
193+
MENUITEM "1200[ms]", ID_VIEW_BLINKINTERVAL_1200
194+
MENUITEM "1500[ms]", ID_VIEW_BLINKINTERVAL_1500
195+
MENUITEM "2000[ms]", ID_VIEW_BLINKINTERVAL_2000
196+
MENUITEM "3000[ms]", ID_VIEW_BLINKINTERVAL_3000
197+
MENUITEM "4000[ms]", ID_VIEW_BLINKINTERVAL_4000
198+
END
199+
POPUP "&Overlay animation interval"
200+
BEGIN
201+
MENUITEM "200[ms]", ID_VIEW_OVERLAYANIMINTERVAL_200
202+
MENUITEM "400[ms]", ID_VIEW_OVERLAYANIMINTERVAL_400
203+
MENUITEM "600[ms]", ID_VIEW_OVERLAYANIMINTERVAL_600
204+
MENUITEM "800[ms]", ID_VIEW_OVERLAYANIMINTERVAL_800
205+
MENUITEM "1000[ms]", ID_VIEW_OVERLAYANIMINTERVAL_1000
206+
MENUITEM "1200[ms]", ID_VIEW_OVERLAYANIMINTERVAL_1200
207+
MENUITEM "1500[ms]", ID_VIEW_OVERLAYANIMINTERVAL_1500
208+
MENUITEM "2000[ms]", ID_VIEW_OVERLAYANIMINTERVAL_2000
209+
MENUITEM "3000[ms]", ID_VIEW_OVERLAYANIMINTERVAL_3000
210+
MENUITEM "4000[ms]", ID_VIEW_OVERLAYANIMINTERVAL_4000
211+
END
212+
END
183213
MENUITEM SEPARATOR
184214
MENUITEM "Extract &Text", ID_VIEW_EXTRACTTEXT
185215
MENUITEM "Show &Metadata", ID_VIEW_SHOWMETADATA

src/WinIMerge/resource.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,27 @@
144144
#define ID_VIEW_VECTORIMAGESCALING_400 32864
145145
#define ID_VIEW_EXTRACTTEXT 32870
146146
#define ID_VIEW_SHOWMETADATA 32871
147+
#define ID_VIEW_BLINKINTERVAL_200 32872
148+
#define ID_VIEW_BLINKINTERVAL_400 32873
149+
#define ID_VIEW_BLINKINTERVAL_600 32874
150+
#define ID_VIEW_BLINKINTERVAL_800 32875
151+
#define ID_VIEW_BLINKINTERVAL_1000 32876
152+
#define ID_VIEW_BLINKINTERVAL_1200 32877
153+
#define ID_VIEW_BLINKINTERVAL_1500 32878
154+
#define ID_VIEW_BLINKINTERVAL_2000 32879
155+
#define ID_VIEW_BLINKINTERVAL_3000 32880
156+
#define ID_VIEW_BLINKINTERVAL_4000 32881
157+
#define ID_VIEW_OVERLAYANIMINTERVAL_200 32882
158+
#define ID_VIEW_OVERLAYANIMINTERVAL_400 32883
159+
#define ID_VIEW_OVERLAYANIMINTERVAL_600 32884
160+
#define ID_VIEW_OVERLAYANIMINTERVAL_800 32885
161+
#define ID_VIEW_OVERLAYANIMINTERVAL_1000 32886
162+
#define ID_VIEW_OVERLAYANIMINTERVAL_1200 32887
163+
#define ID_VIEW_OVERLAYANIMINTERVAL_1500 32888
164+
#define ID_VIEW_OVERLAYANIMINTERVAL_2000 32889
165+
#define ID_VIEW_OVERLAYANIMINTERVAL_3000 32890
166+
#define ID_VIEW_OVERLAYANIMINTERVAL_4000 32891
167+
#define ID_VIEW_BLINKDIFFERENCES 32892
147168
#define IDC_STATIC -1
148169

149170
// Next default values for new objects

src/WinIMergeLib/ImgDiffBuffer.hpp

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -489,8 +489,8 @@ class CImgDiffBuffer
489489
MYERS_DIFF, MINIMAL_DIFF, PATIENCE_DIFF, HISTOGRAM_DIFF, NONE_DIFF
490490
};
491491

492-
enum { BLINK_TIME = 800 };
493-
enum { OVERLAY_ALPHABLEND_ANIM_TIME = 1000 };
492+
enum { BLINK_INTERVAL = 800 };
493+
enum { OVERLAY_ANIMATION_INTERVAL = 1000 };
494494

495495
CImgDiffBuffer() :
496496
m_nImages(0)
@@ -516,6 +516,8 @@ class CImgDiffBuffer
516516
, m_verticalFlip{}
517517
, m_temporarilyTransformed(false)
518518
, m_diffAlgorithm(MYERS_DIFF)
519+
, m_blinkInterval(BLINK_INTERVAL)
520+
, m_overlayAnimationInterval(OVERLAY_ANIMATION_INTERVAL)
519521
{
520522
for (int i = 0; i < 3; ++i)
521523
m_currentPage[i] = 0;
@@ -1145,7 +1147,7 @@ class CImgDiffBuffer
11451147
{
11461148
auto now = std::chrono::system_clock::now();
11471149
auto tse = std::chrono::duration_cast<std::chrono::milliseconds>(now.time_since_epoch());
1148-
if ((tse.count() % BLINK_TIME) < BLINK_TIME / 2)
1150+
if ((tse.count() % m_blinkInterval) < m_blinkInterval / 2)
11491151
{
11501152
showDiff = false;
11511153
}
@@ -1970,14 +1972,14 @@ class CImgDiffBuffer
19701972
{
19711973
auto now = std::chrono::system_clock::now();
19721974
auto tse = std::chrono::duration_cast<std::chrono::milliseconds>(now.time_since_epoch());
1973-
double t = static_cast<double>(tse.count() % OVERLAY_ALPHABLEND_ANIM_TIME);
1974-
if (t < OVERLAY_ALPHABLEND_ANIM_TIME * 2 / 10)
1975-
overlayAlpha = t / (OVERLAY_ALPHABLEND_ANIM_TIME * 2 / 10);
1976-
else if (t < OVERLAY_ALPHABLEND_ANIM_TIME * 5 / 10)
1975+
double t = static_cast<double>(tse.count() % m_overlayAnimationInterval);
1976+
if (t < m_overlayAnimationInterval * 2 / 10)
1977+
overlayAlpha = t / (m_overlayAnimationInterval * 2 / 10);
1978+
else if (t < m_overlayAnimationInterval * 5 / 10)
19771979
overlayAlpha = 1.0;
1978-
else if (t < OVERLAY_ALPHABLEND_ANIM_TIME * 7 / 10)
1979-
overlayAlpha = ((OVERLAY_ALPHABLEND_ANIM_TIME * 2 / 10) - (t - (OVERLAY_ALPHABLEND_ANIM_TIME * 5 / 10)))
1980-
/ (OVERLAY_ALPHABLEND_ANIM_TIME * 2 / 10);
1980+
else if (t < m_overlayAnimationInterval * 7 / 10)
1981+
overlayAlpha = ((m_overlayAnimationInterval * 2 / 10) - (t - (m_overlayAnimationInterval * 5 / 10)))
1982+
/ (m_overlayAnimationInterval * 2 / 10);
19811983
else
19821984
overlayAlpha = 0.0;
19831985
}
@@ -2275,4 +2277,6 @@ class CImgDiffBuffer
22752277
std::vector<LineDiffInfo> m_lineDiffInfos;
22762278
bool m_temporarilyTransformed;
22772279
DIFF_ALGORITHM m_diffAlgorithm;
2280+
int m_blinkInterval;
2281+
int m_overlayAnimationInterval;
22782282
};

src/WinIMergeLib/ImgMergeBuffer.hpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -393,6 +393,27 @@ class CImgMergeBuffer : public CImgDiffBuffer
393393
return !m_imgConverter[pane].isValid() && m_imgOrig[pane].isSaveSupported();
394394
}
395395

396+
int GetBlinkInterval() const
397+
{
398+
return m_blinkInterval;
399+
}
400+
401+
void SetBlinkInterval(int interval)
402+
{
403+
m_blinkInterval = interval;
404+
}
405+
406+
int GetOverlayAnimationInterval() const
407+
{
408+
return m_overlayAnimationInterval;
409+
}
410+
411+
void SetOverlayAnimationInterval(int interval)
412+
{
413+
m_overlayAnimationInterval = interval;
414+
}
415+
416+
396417
bool SaveImage(int pane)
397418
{
398419
if (pane < 0 || pane >= m_nImages)

src/WinIMergeLib/ImgMergeWindow.hpp

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,6 @@ namespace
4949
class CImgMergeWindow : public IImgMergeWindow
5050
{
5151
static constexpr int TIMER_INTERVAL = 25;
52-
static constexpr int TIMER_INTERVAL_ANIM = 50;
53-
static constexpr int TIMER_INTERVAL_BLINK = 400;
5452

5553
struct EventListenerInfo
5654
{
@@ -1188,6 +1186,26 @@ class CImgMergeWindow : public IImgMergeWindow
11881186
return m_buffer.IsSaveSupported(pane);
11891187
}
11901188

1189+
int GetBlinkInterval() const override
1190+
{
1191+
return m_buffer.GetBlinkInterval();
1192+
}
1193+
1194+
void SetBlinkInterval(int interval) override
1195+
{
1196+
m_buffer.SetBlinkInterval(interval);
1197+
}
1198+
1199+
int GetOverlayAnimationInterval() const override
1200+
{
1201+
return m_buffer.GetOverlayAnimationInterval();
1202+
}
1203+
1204+
void SetOverlayAnimationInterval(int interval) override
1205+
{
1206+
m_buffer.SetOverlayAnimationInterval(interval);
1207+
}
1208+
11911209
private:
11921210

11931211
ATOM MyRegisterClass(HINSTANCE hInstance)
@@ -1476,8 +1494,8 @@ class CImgMergeWindow : public IImgMergeWindow
14761494
}
14771495
const auto actualCycle = tse - m_timerPrev;
14781496
const auto idealCycle =
1479-
std::chrono::milliseconds((m_buffer.GetOverlayMode() == OVERLAY_ALPHABLEND_ANIM) ? TIMER_INTERVAL_ANIM : TIMER_INTERVAL_BLINK);
1480-
m_timerNext = tse + ((m_timerNext.count() == 0 || actualCycle < idealCycle) ? idealCycle : actualCycle);
1497+
std::chrono::milliseconds((wParam == 2) ? m_buffer.GetOverlayAnimationInterval() / 20 : m_buffer.GetBlinkInterval() / 4);
1498+
m_timerNext = tse +((m_timerNext.count() == 0 || actualCycle < idealCycle) ? idealCycle : actualCycle);
14811499
}
14821500
m_timerPrev = tse;
14831501
break;

0 commit comments

Comments
 (0)