
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@5917 212acab6-be3b-0410-9dea-997c60f758d6
99 lines
2.6 KiB
C
99 lines
2.6 KiB
C
/*
|
|
* bgbg.c
|
|
*
|
|
* This file is a part of NSIS.
|
|
*
|
|
* Copyright (C) 1999-2009 Nullsoft and Contributors
|
|
*
|
|
* Licensed under the zlib/libpng license (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
*
|
|
* Licence details can be found in the file COPYING.
|
|
*
|
|
* This software is provided 'as-is', without any express or implied
|
|
* warranty.
|
|
*/
|
|
|
|
#include "../Platform.h"
|
|
#include "resource.h"
|
|
#include "config.h"
|
|
#include "fileform.h"
|
|
#include "state.h"
|
|
#include "ui.h"
|
|
#include "util.h"
|
|
|
|
#ifdef NSIS_SUPPORT_BGBG
|
|
|
|
#define c1 header->bg_color1
|
|
#define c2 header->bg_color2
|
|
|
|
LRESULT CALLBACK BG_WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|
{
|
|
switch (uMsg)
|
|
{
|
|
case WM_WINDOWPOSCHANGING:
|
|
{
|
|
LPWINDOWPOS wp = (LPWINDOWPOS) lParam;
|
|
wp->flags |= SWP_NOACTIVATE;
|
|
wp->hwndInsertAfter = g_hwnd;
|
|
break;
|
|
}
|
|
case WM_PAINT:
|
|
{
|
|
header *header = g_header;
|
|
|
|
PAINTSTRUCT ps;
|
|
HDC hdc=BeginPaint(hwnd,&ps);
|
|
RECT r;
|
|
LOGBRUSH lh;
|
|
int ry;
|
|
|
|
lh.lbStyle = BS_SOLID;
|
|
|
|
GetClientRect(hwnd,&r);
|
|
// this portion by Drew Davidson, drewdavidson@mindspring.com
|
|
ry=r.bottom;
|
|
r.bottom=0;
|
|
|
|
// JF: made slower, reduced to 4 pixels high, because I like how it looks better/
|
|
while (r.top < ry)
|
|
{
|
|
int rv,gv,bv;
|
|
HBRUSH brush;
|
|
rv = (GetRValue(c2) * r.top + GetRValue(c1) * (ry-r.top)) / ry;
|
|
gv = (GetGValue(c2) * r.top + GetGValue(c1) * (ry-r.top)) / ry;
|
|
bv = (GetBValue(c2) * r.top + GetBValue(c1) * (ry-r.top)) / ry;
|
|
lh.lbColor = RGB(rv,gv,bv);
|
|
brush = CreateBrushIndirect(&lh);
|
|
// note that we don't need to do "SelectObject(hdc, brush)"
|
|
// because FillRect lets us specify the brush as a parameter.
|
|
r.bottom+=4;
|
|
FillRect(hdc, &r, brush);
|
|
DeleteObject(brush);
|
|
r.top+=4;
|
|
}
|
|
|
|
if (header->bg_textcolor != -1)
|
|
{
|
|
HFONT newFont = CreateFontIndirect((LOGFONT *) header->blocks[NB_BGFONT].offset);
|
|
if (newFont)
|
|
{
|
|
HFONT oldFont;
|
|
r.left=16;
|
|
r.top=8;
|
|
SetBkMode(hdc,TRANSPARENT);
|
|
SetTextColor(hdc,header->bg_textcolor);
|
|
oldFont = SelectObject(hdc,newFont);
|
|
DrawText(hdc,g_caption,-1,&r,DT_TOP|DT_LEFT|DT_SINGLELINE|DT_NOPREFIX);
|
|
SelectObject(hdc,oldFont);
|
|
DeleteObject(newFont);
|
|
}
|
|
}
|
|
EndPaint(hwnd,&ps);
|
|
}
|
|
return 0;
|
|
}
|
|
return DefWindowProc(hwnd,uMsg,wParam,lParam);
|
|
}
|
|
|
|
#endif //NSIS_SUPPORT_BGBG
|