Fix UI restore when window is resized while in loading screen
[ryzomcore.git] / nelns / login_system / nel_launcher_windows_ext / BarWnd.cpp
blob0ff86a881a30cbd87d37bb1f7c01103f4b1d09c6
1 // BarWnd.cpp : implementation file
2 //
4 #include "stdafx.h"
5 #include "nel_launcher.h"
6 #include "BarWnd.h"
8 #ifdef _DEBUG
9 #define new DEBUG_NEW
10 #undef THIS_FILE
11 static char THIS_FILE[] = __FILE__;
12 #endif
14 /*#define R1 50
15 #define G1 169
16 #define B1 143*/
17 #define R1 20
18 #define G1 70
19 #define B1 50
20 #define R2 0
21 #define G2 255
22 #define B2 192
24 /////////////////////////////////////////////////////////////////////////////
25 // CBarWnd
27 CBarWnd::CBarWnd()
29 m_iPos = 0;
30 m_iRange = 100;
33 CBarWnd::~CBarWnd()
38 BEGIN_MESSAGE_MAP(CBarWnd, CWnd)
39 //{{AFX_MSG_MAP(CBarWnd)
40 ON_WM_PAINT()
41 //}}AFX_MSG_MAP
42 END_MESSAGE_MAP()
45 /////////////////////////////////////////////////////////////////////////////
46 // CBarWnd message handlers
48 void CBarWnd::OnPaint()
50 CPaintDC dc(this); // device context for painting
52 CRect r;
54 GetClientRect(&r);
56 if(r.Width() == 0 || m_iRange == 0)
57 return;
59 int iWidth = m_iPos * r.Width() / m_iRange;
60 double iRatio;
61 int iR, iG, iB;
63 for(int i = 0; i < iWidth; i++)
65 iRatio = double(i) / double(r.Width());
66 iR = int(iRatio * (R2 - R1) + R1);
67 iG = int(iRatio * (G2 - G1) + G1);
68 iB = int(iRatio * (B2 - B1) + B1);
69 if(i < 3)
70 dc.FillSolidRect(i+1, 0, 1, r.Height(), RGB(iR/1.5, iG/1.5, iB/1.5));
71 else
73 dc.FillSolidRect(i+1, 0, 1, r.Height(), RGB(iR, iG, iB));
74 dc.SetPixelV(i+1, 0, RGB(iR/1.5, iG/1.5, iB/1.5));
75 dc.SetPixelV(i+1, 1, RGB(iR/1.5, iG/1.5, iB/1.5));
78 dc.FillSolidRect(iWidth+1, 0, r.Width() - iWidth-2, r.Height(), RGB(0, 32, 0));
81 void CBarWnd::SetRange(int iRange)
83 m_iRange = iRange;
86 void CBarWnd::UpdatePos(int iPos)
88 m_iPos = iPos;
89 Invalidate(FALSE);