diff --git a/Contrib/AdvSplash/advsplash.c b/Contrib/AdvSplash/advsplash.c new file mode 100644 index 00000000..45b01424 --- /dev/null +++ b/Contrib/AdvSplash/advsplash.c @@ -0,0 +1,332 @@ +// For layered windows +#define _WIN32_WINNT 0x0500 + +#include +#include "../exdll/exdll.h" + +HINSTANCE g_hInstance; + +#define RESOLUTION 20 // 50 fps ;) +#define KEYCOLOR_8BIT_RGBSUPPORT 1 // Includes (1) code for + // specifing key color for 8bit images as RGB + +BITMAP bm; +HBITMAP g_hbm; +int g_rv=-1; +int resolution = RESOLUTION; +int sleep_val, fadein_val, fadeout_val, state, timeleft, keycolor, nt50, alphaparam; +int call = -1; + +BOOL (_stdcall *SetLayeredWindowAttributesProc)(HWND hwnd, // handle to the layered window + COLORREF crKey, // specifies the color key + BYTE bAlpha, // value for the blend function + DWORD dwFlags // action +); + +static LRESULT CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) +{ + if (uMsg == WM_CREATE) + { + RECT vp; + + SystemParametersInfo(SPI_GETWORKAREA, 0, &vp, 0); + SetWindowLong(hwnd,GWL_STYLE,0); + SetWindowPos(hwnd,NULL, + vp.left+(vp.right-vp.left-bm.bmWidth)/2, + vp.top+(vp.bottom-vp.top-bm.bmHeight)/2, + bm.bmWidth,bm.bmHeight, + SWP_NOZORDER); + ShowWindow(hwnd,SW_SHOW); + + return 0; + } + if (uMsg == WM_PAINT) + { + PAINTSTRUCT ps; + RECT r; + + HDC curdc=BeginPaint(hwnd,&ps); + HDC hdc=CreateCompatibleDC(curdc); + HBITMAP oldbm; + oldbm=(HBITMAP)SelectObject(hdc,g_hbm); + GetClientRect(hwnd,&r); + + BitBlt(curdc,r.left,r.top,r.right-r.left,r.bottom-r.top,hdc,0,0,SRCCOPY); + + SelectObject(hdc,oldbm); + DeleteDC(hdc); + EndPaint(hwnd,&ps); + return 0; + } + if (uMsg == WM_CLOSE) return 0; + if (uMsg == WM_TIMER || uMsg == WM_LBUTTONDOWN) + { + g_rv=(uMsg == WM_LBUTTONDOWN); + DestroyWindow(hwnd); + } + return DefWindowProc(hwnd,uMsg,wParam,lParam); +} + +BOOL WINAPI _DllMainCRTStartup(HANDLE hInst, ULONG ul_reason_for_call, LPVOID lpReserved) +{ + g_hInstance=hInst; + return TRUE; +} + +int myatoi(char *s) +{ + unsigned int v=0; + if (*s == '0' && (s[1] == 'x' || s[1] == 'X')) + { + s+=2; + for (;;) + { + int c=*s++; + if (c >= '0' && c <= '9') c-='0'; + else if (c >= 'a' && c <= 'f') c-='a'-10; + else if (c >= 'A' && c <= 'F') c-='A'-10; + else break; + v<<=4; + v+=c; + } + } + else if (*s == '0' && s[1] <= '7' && s[1] >= '0') + { + s++; + for (;;) + { + int c=*s++; + if (c >= '0' && c <= '7') c-='0'; + else break; + v<<=3; + v+=c; + } + } + else + { + int sign=0; + if (*s == '-') { s++; sign++; } + for (;;) + { + int c=*s++ - '0'; + if (c < 0 || c > 9) break; + v*=10; + v+=c; + } + if (sign) return -(int) v; + } + return (int)v; +} + +void CALLBACK TimeProc( + UINT uID, + UINT uMsg, + DWORD dwUser, + DWORD dw1, + DWORD dw2) +{ + switch (state) + { + // FadeIN + case 0: if (timeleft == 0) + { + timeleft = sleep_val; + state++; + if (nt50) call = 255; + } else { call = ((fadein_val-timeleft)*255)/fadein_val; break; } + // Sleep + case 1: if (timeleft == 0) + { + timeleft = fadeout_val; + state++; + } else break; + // FadeOUT + case 2: if (timeleft == 0) + { + PostMessage((HWND)dwUser, WM_TIMER, 0, 0); + return; + } else { call = ((timeleft)*255)/fadeout_val; break; } + } + // Transparency value aquired, and could be set... + if ((call >= 0) && nt50) + SetLayeredWindowAttributesProc((HWND)dwUser, keycolor, + call, + alphaparam); + call = -1; + // Time is running out... + timeleft--; +} + +void __declspec(dllexport) show(HWND hwndParent, int string_size, char *variables, stack_t **stacktop) +{ + char fn[MAX_PATH]; + char temp[64]; + char *sleep=temp; + + EXDLL_INIT(); + + popstring(temp); + sleep_val = myatoi(temp) / RESOLUTION; + popstring(temp); + fadein_val = myatoi(temp) / RESOLUTION; + popstring(temp); + fadeout_val = myatoi(temp) / RESOLUTION; + popstring(temp); + keycolor = myatoi(temp); + popstring(fn); + + // Check for winXP/2k + nt50 = (LOBYTE(LOWORD(GetVersion())) >= 5); + if (!nt50) + { + // Fading is unsupported at old windows versions... + resolution = (sleep_val + fadein_val + fadeout_val) * RESOLUTION; + fadeout_val = fadein_val = 0; + sleep_val = 1; + } else alphaparam = LWA_ALPHA | ((keycolor == -1)?(0):(LWA_COLORKEY)); + + if (fn[0] && sleep_val>0) + { + MSG msg; + char classname[4]="_sp"; + static WNDCLASS wc; + wc.lpfnWndProc = WndProc; + wc.hInstance = g_hInstance; + wc.hCursor = LoadCursor(NULL,IDC_ARROW); + wc.lpszClassName = classname; + if (RegisterClass(&wc)) + { + char fn2[MAX_PATH]; + lstrcpy(fn2,fn); + lstrcat(fn,".bmp"); + lstrcat(fn2,".wav"); + g_hbm=LoadImage(NULL,fn,IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION|LR_LOADFROMFILE); + if (g_hbm) + { + HWND myWnd; + UINT timerEvent; + + PlaySound(fn2,NULL,SND_ASYNC|SND_FILENAME|SND_NODEFAULT); + + // Get Bitmap Information + GetObject(g_hbm, sizeof(bm), (LPSTR)&bm); + + myWnd = CreateWindowEx(WS_EX_TOOLWINDOW | ((nt50)?(WS_EX_LAYERED):(0)),classname,classname, + 0,0,0,0,0,(HWND)hwndParent,NULL,g_hInstance,NULL); + + // Set transparency / key color + if (nt50) + { + // Get blending proc address + HANDLE user32 = GetModuleHandle("user32"); + SetLayeredWindowAttributesProc = GetProcAddress(user32, "SetLayeredWindowAttributes"); + // Use win2k method + SetLayeredWindowAttributesProc(myWnd, keycolor, + (fadein_val > 0)?(0):(255), + alphaparam); + } else + if (keycolor != -1) + { + // Use simpliest region method + int x, y, wdelta; + HRGN region, cutrgn; + BYTE *bmp = bm.bmBits; + + region = CreateRectRgn(0,0,bm.bmWidth,bm.bmHeight); + //region = CreateRectRgn(0,0,0,0); + + if (bm.bmBitsPixel == 8) + { +#if (KEYCOLOR_8BIT_RGBSUPPORT == 1) + HDC hMemDC; + HBITMAP hOldBitmap; + int rgb[256]; + int nColors; + + // Find out how many colors are in the color table + nColors = 1 << bm.bmBitsPixel; + // Create a memory DC and select the DIBSection into it + hMemDC = CreateCompatibleDC(NULL); + hOldBitmap = SelectObject(hMemDC,g_hbm); + // Get the DIBSection's color table + GetDIBColorTable(hMemDC,0,nColors,(RGBQUAD*)rgb); + + // Find our keycolor at palette + if (keycolor < 0x1000000) + { + for (x = 0; x < nColors; x++) + if (rgb[x] == keycolor) { keycolor = x; break; } + } else keycolor &= 0xff; + + // Free used objects + SelectObject(hMemDC,hOldBitmap); + DeleteDC(hMemDC); +#endif + + // Bitmap is DWORD aligned by width + //wdelta = (( bm.bmWidth + 3 ) & ~3) - bm.bmWidth; + wdelta = ((bm.bmWidth + 3) & 3) ^ 3; + // Search for transparent pixels + for (y = bm.bmHeight-1; y >= 0; y--, bmp += wdelta) + for (x = 0; x < bm.bmWidth; x++, bmp++) + if (*bmp == (BYTE) keycolor) + { + int j = x; + while ((x < bm.bmWidth) && (*bmp == (BYTE) keycolor)) x++, bmp++; + + // Cut transparent pixels from the original region + cutrgn = CreateRectRgn(j, y, x, y+1); + CombineRgn(region, region, cutrgn, RGN_XOR); + DeleteObject(cutrgn); + } + } else if (bm.bmBitsPixel == 24) + { + // Bitmap is DWORD aligned by width + wdelta = ((bm.bmWidth*3 + 3 ) & 3) ^ 3; + // Search for transparent pixels + for (y = bm.bmHeight-1; y >= 0; y--, bmp += wdelta) + for (x = 0; x < bm.bmWidth; bmp += 3, x++) + if ((*(int*)bmp & 0xFFFFFF) == keycolor) + { + int j = x; + while ((x < bm.bmWidth) && ((*(int*)bmp & 0xFFFFFF) == keycolor)) bmp+=3, x++; + + // Cut transparent pixels from the original region + cutrgn = CreateRectRgn(j, y, x, y+1); + CombineRgn(region, region, cutrgn, RGN_XOR); + DeleteObject(cutrgn); + } + } + + // Set resulting region. + SetWindowRgn(myWnd, region, TRUE); + } + + // Start up timer... + state = 0; timeleft = fadein_val; + timerEvent = timeSetEvent(resolution, RESOLUTION/4, TimeProc, (DWORD_PTR)myWnd, TIME_PERIODIC); + + while (IsWindow(myWnd) && GetMessage(&msg,myWnd,0,0)) + { + DispatchMessage(&msg); + } + + // Kill the timer... + timeKillEvent(timerEvent); + + // Stop currently playing wave, we want to exit + PlaySound(0,0,0); + + DeleteObject(g_hbm); + } + } + } + wsprintf(temp,"%d",g_rv); + pushstring(temp); +} + +#ifdef _DEBUG +void main() +{ +} +#endif \ No newline at end of file diff --git a/Contrib/AdvSplash/advsplash.dsp b/Contrib/AdvSplash/advsplash.dsp new file mode 100644 index 00000000..33cd4fdc --- /dev/null +++ b/Contrib/AdvSplash/advsplash.dsp @@ -0,0 +1,114 @@ +# Microsoft Developer Studio Project File - Name="advsplash" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Application" 0x0101 + +CFG=advsplash - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "advsplash.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "advsplash.mak" CFG="advsplash - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "advsplash - Win32 Release" (based on "Win32 (x86) Application") +!MESSAGE "advsplash - Win32 Debug" (based on "Win32 (x86) Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "advsplash - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /Og /Os /Oy /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /FD /c +# SUBTRACT CPP /Ox /Ow /YX +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winmm.lib /nologo /entry:"_DllMainCRTStartup" /subsystem:windows /dll /machine:I386 /nodefaultlib /out:"../../Plugins/advsplash.dll" /opt:nowin98 +# SUBTRACT LINK32 /pdb:none + +!ELSEIF "$(CFG)" == "advsplash - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /YX /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept +# SUBTRACT LINK32 /pdb:none + +!ENDIF + +# Begin Target + +# Name "advsplash - Win32 Release" +# Name "advsplash - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\advsplash.c +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=..\ExDLL\exdll.h +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/Contrib/AdvSplash/advsplash.dsw b/Contrib/AdvSplash/advsplash.dsw new file mode 100644 index 00000000..6bbdc7ed --- /dev/null +++ b/Contrib/AdvSplash/advsplash.dsw @@ -0,0 +1,29 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "advsplash"=.\advsplash.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/Contrib/AdvSplash/advsplash.txt b/Contrib/AdvSplash/advsplash.txt new file mode 100644 index 00000000..6e45532d --- /dev/null +++ b/Contrib/AdvSplash/advsplash.txt @@ -0,0 +1,58 @@ +AdvSplash.exe - small (5.5k), simple plugin that lets you throw +up a splash screen in NSIS installers with cool fading effects (win2k/xp) +and transparency (24bit/8bit bitmaps). + +To use: + +Create a .BMP file of your splash screen. +(optional) Create a .WAV file to play while your splash screen shows. + +Add the following lines to your .NSI file: + +Function .onInit + SetOutPath $TEMP + File /oname=spltmp.bmp "my_splash.bmp" + +; optional +; File /oname=spltmp.wav "my_splashshit.wav" + + advsplash::show 1000 600 400 -1 $TEMP\spltmp + + Pop $0 ; $0 has '1' if the user closed the splash screen early, + ; '0' if everything closed normal, and '-1' if some error occured. + + Delete $TEMP\spltmp.bmp +; Delete $TEMP\spltmp.wav +FunctionEnd + +Calling format + advsplash::show Delay FadeIn FadeOut KeyColor FileName + +Delay - length to show the screen for (in milliseconds) +FadeIn - length to show the fadein scene (in ms) (not included in Delay) +FadeOut - length to show the fadeout scene (in ms) (not included in Delay) +KeyColor - color used for transparency. For 24 bit bitmaps could be any RGB + value (for ex. R=255 G=100 B=16 -> KeyColor=0xFF6410), for 8 bit bitmaps + could be either RGB value or index of the color at bitmap palette + (if such RGB color present in your image and you'd like to use palette + index, use (0x1000000+index) as KeyColor [you should calculate + this value by yourself]). Use KeyColor=-1 if there is now transparent + color at your image. +FileName - splash bitmap filename (without the .bmp). The BMP file used will be + this parameter.bmp, and the wave file used (if present) will be this + parameter.wav. + +(If you already have an .onInit function, put that in it) + +Note 1: fadein/fadeout supported only on win2k/winxp systems, all other systems +will show simple splash screen with Delay = Delay + FadeIn + FadeOut. + +Note 2: transparency supported only for 24bit and 8bit bitmaps. + +Note 3: the return value of splash is 1 if the user closed the splash +screen early (pop it from the stack) + +-Justin +Converted to a plugin DLL by Amir Szekely (kichik) +Fading and transparency by Nik Medved (brainsucker) + diff --git a/Contrib/UberSplash/UberSplash.txt b/Contrib/UberSplash/UberSplash.txt deleted file mode 100644 index f05a295b..00000000 --- a/Contrib/UberSplash/UberSplash.txt +++ /dev/null @@ -1,15 +0,0 @@ -File /oname=bitmap.bmp "C:\pathto\bitmap.bmp" -File /oname=splash.exe "${NSISDIR}\Bin\UberSplash.exe" -ExecWait '"$TEMP\splash.exe" bitmap.bmp FADEINSTEP MILLISECONDSHOW FADEOUTSTEP' - -FADEINSTEP and FADEOUTSTEP between 0 and 255 - -supports magiclime and the alpha fading -for a display and die.. [no fade] -ExecWait '"$TEMP\splash.exe" bitmap.bmp 0 MILLISECONDSHOW 0' -win95 and win98 just display for full length - -To compile you must use the KOL library. You can find it here at http://bonanzas.rinet.ru/ - -code by vince -idea by snowchyld \ No newline at end of file diff --git a/Contrib/UberSplash/splash.cfg b/Contrib/UberSplash/splash.cfg deleted file mode 100644 index 1d7cf9f9..00000000 --- a/Contrib/UberSplash/splash.cfg +++ /dev/null @@ -1,40 +0,0 @@ --$A8 --$B- --$C- --$D+ --$E- --$F- --$G+ --$H+ --$I+ --$J+ --$K- --$L+ --$M- --$N+ --$O+ --$P+ --$Q- --$R- --$S- --$T- --$U- --$V+ --$W- --$X+ --$YD --$Z1 --cg --AClasses=;mirror= --H+ --W+ --M --$M16384,1048576 --K$00400000 --LE"f:\program files\borland\delphi6\Projects\Bpl" --LN"f:\program files\borland\delphi6\Projects\Bpl" --U"f:\kol;f:\kol\sys" --O"f:\kol;f:\kol\sys" --I"f:\kol;f:\kol\sys" --R"f:\kol;f:\kol\sys" --DKOL_MCK diff --git a/Contrib/UberSplash/splash.dcu b/Contrib/UberSplash/splash.dcu deleted file mode 100644 index 953b3963..00000000 Binary files a/Contrib/UberSplash/splash.dcu and /dev/null differ diff --git a/Contrib/UberSplash/splash.dof b/Contrib/UberSplash/splash.dof deleted file mode 100644 index bae2b5f9..00000000 --- a/Contrib/UberSplash/splash.dof +++ /dev/null @@ -1,96 +0,0 @@ -[FileVersion] -Version=6.0 -[Compiler] -A=8 -B=0 -C=0 -D=1 -E=0 -F=0 -G=1 -H=1 -I=1 -J=1 -K=0 -L=1 -M=0 -N=1 -O=1 -P=1 -Q=0 -R=0 -S=0 -T=0 -U=0 -V=1 -W=0 -X=1 -Y=1 -Z=1 -ShowHints=1 -ShowWarnings=1 -UnitAliases=Classes=;mirror= -[Linker] -MapFile=0 -OutputObjs=0 -ConsoleApp=1 -DebugInfo=0 -RemoteSymbols=0 -MinStackSize=16384 -MaxStackSize=1048576 -ImageBase=4194304 -ExeDescription=_KOL_ mirror controls -[Directories] -OutputDir= -UnitOutputDir= -PackageDLLOutputDir= -PackageDCPOutputDir= -SearchPath=f:\kol;f:\kol\sys -Packages=Vcl50;Vclx50;VclSmp50 -Conditionals=KOL_MCK -DebugSourceDirs=f:\kol -UsePackages=0 -[Parameters] -RunParams=b2.bmp -HostApplication= -Launcher= -UseLauncher=0 -DebugCWD= -[Version Info] -IncludeVerInfo=0 -AutoIncBuild=0 -MajorVer=1 -MinorVer=0 -Release=0 -Build=0 -Debug=0 -PreRelease=0 -Special=0 -Private=0 -DLL=0 -Locale=1049 -CodePage=1251 -[Version Info Keys] -CompanyName= -FileDescription= -FileVersion=1.0.0.0 -InternalName= -LegalCopyright= -LegalTrademarks= -OriginalFilename= -ProductName= -ProductVersion=1.0.0.0 -[HistoryLists\hlDebugSourcePath] -Count=2 -Item0=f:\kol -Item1=e:\kol -[HistoryLists\hlConditionals] -Count=1 -Item0=KOL_MCK -[HistoryLists\hlUnitAliases] -Count=1 -Item0=Classes=;mirror= -[HistoryLists\hlSearchPath] -Count=2 -Item0=f:\kol;f:\kol\sys -Item1=e:\kol;e:\kol\sys diff --git a/Contrib/UberSplash/splash.dpr b/Contrib/UberSplash/splash.dpr deleted file mode 100644 index fa9a2dca..00000000 --- a/Contrib/UberSplash/splash.dpr +++ /dev/null @@ -1,138 +0,0 @@ -{****************************************} -Program splash; - -uses - Windows, - Kol; - -type - PByteArray = ^TByteArray; - TByteArray = array[0..32767] of Byte; -var - Applet, {A main form or application} - PaintBox : pControl; {A simple static paintbox} - BitMap : pBitmap; {A bitmap} - i,j,j2,wait,inSpd,outSpd : Word; {temp values...} - WindowRgn, RowRgn : HRGN; {Regions for transparency} - FadeIn,FadeOut : pTimer; {Timers...} - FadeInFlag : Boolean; {Switch Fade In/Out Flag} - ScannedLine : PByteArray; {Array for RGB data from BitMap} - - //This handles the OnPaint event from the Paintbox It draws the bitmap on the PaintBox's Canvas - procedure paint(dummy:pointer;sender:pcontrol;DC:HDC); - begin - Bitmap.Draw(DC,0,0); - end; - - procedure FadeInAlpha(Sender: PObj); - begin - if FadeInFlag then - if Applet.AlphaBlend < (255 - inSpd) then Applet.AlphaBlend := Applet.AlphaBlend + inSpd; - if not FadeInFlag then begin - if Applet.AlphaBlend > outSpd then Applet.AlphaBlend := Applet.AlphaBlend - outSpd; - if Applet.AlphaBlend < outSpd + 1 then begin - Applet.AlphaBlend := 0; - Applet.Close; - end; - end; - end; - - procedure FadeOutAlpha(Sender: PObj); - begin - if Applet.AlphaBlend > inSpd then - FadeInFlag := False - else begin - Applet.AlphaBlend := 0; - Applet.Close; - end; - end; - -begin - if ParamStr(1) <> '' then begin - if ParamStr(2) = '' then inSpd := 5 else inSpd := Str2Int(ParamStr(2)); - if ParamStr(3) = '' then wait := 2000 else wait := Str2Int(ParamStr(3)); - if ParamStr(4) = '' then outSpd := 25 else outSpd := Str2Int(ParamStr(4)); - end - else begin - if ParamStr(2) = '' then inSpd := 1 else inSpd := Str2Int(ParamStr(2)); - if ParamStr(3) = '' then wait := 1 else wait := Str2Int(ParamStr(3)); - if ParamStr(4) = '' then outSpd := 1 else outSpd := Str2Int(ParamStr(4)); - end; - - {Create the form} - Applet:=NewForm(nil,'').SetSize(0,0); - Applet.CenterOnParent; - Applet.Visible := False; - Applet.AlphaBlend := 0; - Applet.Style := WS_POPUP; - Applet.HasBorder := False; - Applet.Border := 0; - Applet.Color := clBlack; - - - {Create the bitmap itself} - BitMap:=NewBitMap(0,0); - BitMap.Clear; - //LoadFromFile has built in error checking... - if ParamStr(1) <> '' then BitMap.LoadFromFile(ParamStr(1)); - - {Create the Paintbox to draw the bitmap on} - PaintBox:=NewPaintbox(Applet).setalign(caClient); - PaintBox.Width:=BitMap.Width; - PaintBox.Height:=BitMap.Height; - PaintBox.OnPaint:=TOnPaint(MakeMethod(nil,@Paint)); - - {Do some housekeeping} - Applet.ClientHeight:=Bitmap.Height+10; - Applet.ClientWidth :=Bitmap.Width+10; - Applet.Top := Applet.Top - Applet.Height div 2; - Applet.Left := Applet.Left - Applet.Width div 2; - - - {Cut out magic color} - WindowRgn := CreateRectRgn(0,0,0,0); - for i:= 0 to BitMap.Height - 1 do begin - ScannedLine := BitMap.ScanLine[i]; - j := 0; - while (j < BitMap.Width - 1) do begin - if ((ScannedLine[j * 3 + 2]*256*256)+(ScannedLine[j * 3 + 1]*256)+ScannedLine[j * 3] = clLime) then j := j + 1 - else begin - j2 := j; - while (j2 < BitMap.Width - 1) and ((ScannedLine[j2 * 3 + 2]*256*256)+(ScannedLine[j2 * 3 + 1]*256)+ScannedLine[j2 * 3] <> clLime) do j2 := j2 + 1; - RowRgn := CreateRectRgn(j,i,j2,i+1); - CombineRgn(WindowRgn, WindowRgn, RowRgn, RGN_OR); - DeleteObject(RowRgn); - j := j2; - end; - end; - end; - SetWindowRgn(Applet.Handle,WindowRgn,true); - - //remove taskbar icon and get ready to rock... - ShowWindow(Applet.Handle, SW_HIDE); - SetWindowLong(Applet.Handle, GWL_EXSTYLE,GetWindowLong(Applet.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW); - ShowWindow(Applet.Handle, SW_SHOW); - ShowWindow(Applet.Handle, SW_SHOWDEFAULT); - BringWindowToTop(Applet.GetWindowHandle); - Applet.DoSetFocus; - Applet.StayOnTop := True; - Applet.Visible := True; - - {start timers} - FadeInFlag := True; - - FadeIn := NewTimer(2); - FadeIn.OnTimer := TOnEvent(MakeMethod(nil,@FadeInAlpha)); - FadeIn.Enabled := True; - - FadeOut := NewTimer(wait); - FadeOut.OnTimer := TOnEvent(MakeMethod(nil,@FadeOutAlpha)); - FadeOut.Enabled := True; - - {Run splash} - Run(Applet); - - {Free the bitmap:it has no parent} - Bitmap.free; - -end. diff --git a/Examples/makensis.nsi b/Examples/makensis.nsi index 9b9bcfa2..05f6edcc 100644 --- a/Examples/makensis.nsi +++ b/Examples/makensis.nsi @@ -179,12 +179,12 @@ Section "Splash" SecContribSplash File ..\Contrib\splash\splash.txt SectionEnd -Section "UberSplash w/transparency" SecContribSplashT +Section "AdvSplash w/transparency" SecContribSplashT SectionIn 1 2 - SetOutPath $INSTDIR\Bin - File ..\Bin\UberSplash.exe - SetOutPath $INSTDIR\Contrib\UberSplash - File ..\Contrib\UberSplash\*.txt + SetOutPath $INSTDIR\Plugins + File ..\Plugins\advsplash.dll + SetOutPath $INSTDIR\Contrib\AdvSplash + File ..\Contrib\AdvSplash\advsplash.txt SectionEnd Section "InstallOptions" SecContribIO @@ -315,11 +315,13 @@ Section "Splash Source" SecContribSplashS File ..\Contrib\splash\splash.txt SectionEnd -Section "UberSplash Source" SecContribSplashTS +Section "AdvSplash Source" SecContribSplashTS SectionIn 1 - SetOutPath $INSTDIR\Contrib\UberSplash - File ..\Contrib\UberSplash\splash.* - File ..\Contrib\UberSplash\*.txt + SetOutPath $INSTDIR\Contrib\AdvSplash + File ..\Contrib\AdvSplash\*.c + File ..\Contrib\AdvSplash\*.dsw + File ..\Contrib\AdvSplash\*.dsp + File ..\Contrib\AdvSplash\*.txt SectionEnd Section "InstallOptions Source" SecContribIOS @@ -452,14 +454,14 @@ Section -post CreateShortCut "$SMPROGRAMS\NSIS\Source\Contrib\Splash project workspace.lnk" "$INSTDIR\Contrib\splash\splash.dsw" NoSPLShortCutsS: - IfFileExists "$INSTDIR\Bin\ubersplash.exe" 0 NoUSPLShortCuts + IfFileExists "$INSTDIR\Plugins\advsplash.dll" 0 NoUSPLShortCuts CreateDirectory $SMPROGRAMS\NSIS\Contrib - CreateShortCut "$SMPROGRAMS\NSIS\Contrib\UberSplash Screen Help.lnk" "$INSTDIR\contrib\ubersplash\ubersplash.txt" + CreateShortCut "$SMPROGRAMS\NSIS\Contrib\AdvSplash Help.lnk" "$INSTDIR\contrib\advsplash\advsplash.txt" NoUSPLShortCuts: - IfFileExists "$INSTDIR\Contrib\UberSplash\*.dpr" 0 NoUSPLShortCutsS + IfFileExists "$INSTDIR\Contrib\AdvSplash\*.dsw" 0 NoUSPLShortCutsS CreateDirectory $SMPROGRAMS\NSIS\Source\Contrib - CreateShortCut "$SMPROGRAMS\NSIS\Source\Contrib\UberSplash project directory.lnk" "$INSTDIR\Contrib\ubersplash" + CreateShortCut "$SMPROGRAMS\NSIS\Source\Contrib\AdvSplash project directory.lnk" "$INSTDIR\Contrib\advsplash" NoUSPLShortCutsS: @@ -650,6 +652,7 @@ Section Uninstall Delete $INSTDIR\Bin\splash.exe Delete $INSTDIR\Plugins\splash.dll Delete $INSTDIR\Bin\UberSplash.exe + Delete $INSTDIR\Plugins\advsplash.dll Delete $INSTDIR\Plugins\nsisdl.dll Delete $INSTDIR\Bin\MakeLangID.exe Delete $INSTDIR\Plugins\LangDLL.dll diff --git a/Plugins/advsplash.dll b/Plugins/advsplash.dll new file mode 100644 index 00000000..efad34c6 Binary files /dev/null and b/Plugins/advsplash.dll differ