Small space-saving optimisation
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@687 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
parent
8b9d432f7e
commit
c05a873977
2 changed files with 25 additions and 30 deletions
|
@ -2,33 +2,28 @@
|
||||||
#ifdef NSIS_CONFIG_CRC_SUPPORT
|
#ifdef NSIS_CONFIG_CRC_SUPPORT
|
||||||
|
|
||||||
// this is based on the (slow,small) CRC32 implementation from zlib.
|
// this is based on the (slow,small) CRC32 implementation from zlib.
|
||||||
|
|
||||||
static unsigned long crc_table[256];
|
|
||||||
|
|
||||||
static void make_crc_table()
|
|
||||||
{
|
|
||||||
unsigned long c;
|
|
||||||
int n, k;
|
|
||||||
|
|
||||||
for (n = 0; n < 256; n++)
|
|
||||||
{
|
|
||||||
c = (unsigned long)n;
|
|
||||||
for (k = 0; k < 8; k++) c = (c >> 1) ^ (c & 1 ? 0xedb88320L : 0);
|
|
||||||
crc_table[n] = c;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// actually CRC32, but we put it in here so we don't
|
|
||||||
// have to modify the other code.
|
|
||||||
unsigned long CRC32(unsigned long crc, const unsigned char *buf, unsigned int len)
|
unsigned long CRC32(unsigned long crc, const unsigned char *buf, unsigned int len)
|
||||||
{
|
{
|
||||||
if (!crc_table[1]) make_crc_table();
|
static unsigned long crc_table[256];
|
||||||
|
|
||||||
|
if (!crc_table[1])
|
||||||
|
{
|
||||||
|
unsigned long c;
|
||||||
|
int n, k;
|
||||||
|
|
||||||
|
for (n = 0; n < 256; n++)
|
||||||
|
{
|
||||||
|
c = (unsigned long)n;
|
||||||
|
for (k = 0; k < 8; k++) c = (c >> 1) ^ (c & 1 ? 0xedb88320L : 0);
|
||||||
|
crc_table[n] = c;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
crc = crc ^ 0xffffffffL;
|
crc = crc ^ 0xffffffffL;
|
||||||
while (len-- > 0) {
|
while (len-- > 0) {
|
||||||
crc = crc_table[(crc ^ (*buf++)) & 0xff] ^ (crc >> 8);
|
crc = crc_table[(crc ^ (*buf++)) & 0xff] ^ (crc >> 8);
|
||||||
}
|
}
|
||||||
return crc ^ 0xffffffffL;
|
return crc ^ 0xffffffffL;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -19,24 +19,24 @@ static LRESULT CALLBACK BG_WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM l
|
||||||
int y;
|
int y;
|
||||||
GetClientRect(hwnd,&r);
|
GetClientRect(hwnd,&r);
|
||||||
// this portion by Drew Davidson, drewdavidson@mindspring.com
|
// this portion by Drew Davidson, drewdavidson@mindspring.com
|
||||||
|
|
||||||
// JF: made slower, reduced to 4 pixels high, because I like how it looks better/
|
// JF: made slower, reduced to 4 pixels high, because I like how it looks better/
|
||||||
for (y = r.top; y < r.bottom; y += 4)
|
for (y = r.top; y < r.bottom; y += 4)
|
||||||
{
|
{
|
||||||
int rv,gv,bv;
|
int rv,gv,bv;
|
||||||
RECT rect;
|
RECT rect;
|
||||||
HBRUSH brush;
|
HBRUSH brush;
|
||||||
rv = GetRValue(m_color2) * y / r.bottom + GetRValue(m_color1) * (r.bottom - y) / r.bottom;
|
rv = (GetRValue(m_color2) * y + GetRValue(m_color1) * (r.bottom - y)) / r.bottom;
|
||||||
gv = GetGValue(m_color2) * y / r.bottom + GetGValue(m_color1) * (r.bottom - y) / r.bottom;
|
gv = (GetGValue(m_color2) * y + GetGValue(m_color1) * (r.bottom - y)) / r.bottom;
|
||||||
bv = GetBValue(m_color2) * y / r.bottom + GetBValue(m_color1) * (r.bottom - y) / r.bottom;
|
bv = (GetBValue(m_color2) * y + GetBValue(m_color1) * (r.bottom - y)) / r.bottom;
|
||||||
brush = CreateSolidBrush(RGB(rv,gv,bv));
|
brush = CreateSolidBrush(RGB(rv,gv,bv));
|
||||||
SetRect(&rect, r.left, y, r.right, y+4);
|
SetRect(&rect, r.left, y, r.right, y+4);
|
||||||
// note that we don't need to do "SelectObject(hdc, brush)"
|
// note that we don't need to do "SelectObject(hdc, brush)"
|
||||||
// because FillRect lets us specify the brush as a parameter.
|
// because FillRect lets us specify the brush as a parameter.
|
||||||
FillRect(hdc, &rect, brush);
|
FillRect(hdc, &rect, brush);
|
||||||
DeleteObject(brush);
|
DeleteObject(brush);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_textcolor != -1)
|
if (m_textcolor != -1)
|
||||||
{
|
{
|
||||||
newFont = CreateFont(40,0,0,0,FW_BOLD,TRUE,FALSE,FALSE,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,"Garamond");
|
newFont = CreateFont(40,0,0,0,FW_BOLD,TRUE,FALSE,FALSE,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,"Garamond");
|
||||||
|
@ -79,7 +79,7 @@ HWND bgWnd_Init(HINSTANCE hInstance, char *title, int color1, int color2, int co
|
||||||
m_color1=color1;
|
m_color1=color1;
|
||||||
m_color2=color2;
|
m_color2=color2;
|
||||||
m_textcolor=color3;
|
m_textcolor=color3;
|
||||||
|
|
||||||
SystemParametersInfo(SPI_GETWORKAREA, 0, &vp, 0);
|
SystemParametersInfo(SPI_GETWORKAREA, 0, &vp, 0);
|
||||||
|
|
||||||
return CreateWindow(classname,title,WS_VISIBLE|WS_OVERLAPPED|WS_THICKFRAME|WS_CAPTION|WS_SYSMENU|WS_MAXIMIZEBOX|WS_MINIMIZEBOX,
|
return CreateWindow(classname,title,WS_VISIBLE|WS_OVERLAPPED|WS_THICKFRAME|WS_CAPTION|WS_SYSMENU|WS_MAXIMIZEBOX|WS_MINIMIZEBOX,
|
||||||
|
@ -87,4 +87,4 @@ HWND bgWnd_Init(HINSTANCE hInstance, char *title, int color1, int color2, int co
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif //NSIS_SUPPORT_BGBG
|
#endif //NSIS_SUPPORT_BGBG
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue