Author: dreimer
Date: Mon Apr 27 01:04:01 2015
New Revision: 67455
URL:
http://svn.reactos.org/svn/reactos?rev=67455&view=rev
Log:
[STARFIELD] Change to use scrnsave library. Tidy up all now useless stuff. Tabs ->
spaces. Single language link in support added. Noticable change: Multi Monitor support!!!
TBD, some user configuration stuff maybe
Modified:
trunk/rosapps/applications/screensavers/starfield/CMakeLists.txt
trunk/rosapps/applications/screensavers/starfield/resource.h
trunk/rosapps/applications/screensavers/starfield/screensaver.c
trunk/rosapps/applications/screensavers/starfield/starfield.rc
Modified: trunk/rosapps/applications/screensavers/starfield/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/rosapps/applications/screensavers/…
==============================================================================
--- trunk/rosapps/applications/screensavers/starfield/CMakeLists.txt [iso-8859-1]
(original)
+++ trunk/rosapps/applications/screensavers/starfield/CMakeLists.txt [iso-8859-1] Mon Apr
27 01:04:01 2015
@@ -2,5 +2,6 @@
add_executable(starfield screensaver.c starfield.rc)
set_module_type(starfield win32gui UNICODE)
set_target_properties(starfield PROPERTIES SUFFIX ".scr")
+target_link_libraries(starfield scrnsave)
add_importlibs(starfield user32 gdi32 msvcrt kernel32)
add_cd_file(TARGET starfield DESTINATION reactos/system32 FOR all)
Modified: trunk/rosapps/applications/screensavers/starfield/resource.h
URL:
http://svn.reactos.org/svn/reactos/trunk/rosapps/applications/screensavers/…
==============================================================================
--- trunk/rosapps/applications/screensavers/starfield/resource.h [iso-8859-1] (original)
+++ trunk/rosapps/applications/screensavers/starfield/resource.h [iso-8859-1] Mon Apr 27
01:04:01 2015
@@ -1,3 +1,4 @@
+#pragma once
#define IDS_DESCRIPTION 1
#define IDS_TITLE 2
Modified: trunk/rosapps/applications/screensavers/starfield/screensaver.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rosapps/applications/screensavers/…
==============================================================================
--- trunk/rosapps/applications/screensavers/starfield/screensaver.c [iso-8859-1]
(original)
+++ trunk/rosapps/applications/screensavers/starfield/screensaver.c [iso-8859-1] Mon Apr
27 01:04:01 2015
@@ -2,6 +2,7 @@
* Copyright 2003 J Brown
* Copyright 2006 Eric Kohl
* Copyright 2007 Marc Piulachs (marc.piulachs(a)codexchange.net)
+ * Copyright 2015 Daniel Reimer
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -20,6 +21,7 @@
#include <windows.h>
#include <tchar.h>
+#include <scrnsave.h>
#include "resource.h"
#define RANDOM( min, max ) ((rand() % (int)(((max)+1) - (min))) + (min))
@@ -27,359 +29,199 @@
#define MAX_LOADSTRING 100
#define MAX_STARS 1000
-#define APPNAME _T("Starfield")
-#define APP_TIMER 1
-#define APP_TIMER_INTERVAL 20
+#define APPNAME _T("Starfield")
+#define APP_TIMER 1
+#define APP_TIMER_INTERVAL 20
#define MAX_STARS 1000
// Details of each individual star
typedef struct star
{
- int m_nXPos, m_nYPos, m_nZPos;
- int m_nOldX, m_nOldY;
+ int m_nXPos, m_nYPos, m_nZPos;
+ int m_nOldX, m_nOldY;
} STAR;
-HINSTANCE hInstance;
-BOOL fullscreen = FALSE;
-
STAR *stars;
-int m_nTotStars;
-int m_nCenterX, m_nCenterY;
+int m_nTotStars;
+int m_nCenterX, m_nCenterY;
void DrawStarField (HDC pDC)
{
- int nX, nY;
- int i;
- for (i = 0; i < m_nTotStars; i++)
- {
- // Clear last position of this star
- SetPixel (
- pDC,
- stars[i].m_nOldX,
- stars[i].m_nOldY,
- RGB (0, 0, 0));
-
- nX = (int)((((long)stars[i].m_nXPos << 7) / (long)stars[i].m_nZPos) +
m_nCenterX);
- nY = (int)((((long)stars[i].m_nYPos << 7) / (long)stars[i].m_nZPos) +
m_nCenterY);
-
- // Draw star
- SetPixel (
- pDC,
- nX,
- nY,
- RGB (255, 255, 255));
-
- // Remember current position for clearing later
- stars[i].m_nOldX = nX;
- stars[i].m_nOldY = nY;
- }
+ int nX, nY;
+ int i;
+ for (i = 0; i < m_nTotStars; i++)
+ {
+ // Clear last position of this star
+ SetPixel (
+ pDC,
+ stars[i].m_nOldX,
+ stars[i].m_nOldY,
+ RGB (0, 0, 0));
+
+ nX = (int)((((long)stars[i].m_nXPos << 7) / (long)stars[i].m_nZPos) +
m_nCenterX);
+ nY = (int)((((long)stars[i].m_nYPos << 7) / (long)stars[i].m_nZPos) +
m_nCenterY);
+
+ // Draw star
+ SetPixel (
+ pDC,
+ nX,
+ nY,
+ RGB (255, 255, 255));
+
+ // Remember current position for clearing later
+ stars[i].m_nOldX = nX;
+ stars[i].m_nOldY = nY;
+ }
}
BOOL SetUpStars (int nNumStars)
{
- int i;
- if (nNumStars > MAX_STARS)
- {
- MessageBox (0,
- _T("Too many stars! Aborting!"),
- _T("Error"),
- MB_OK | MB_ICONWARNING);
- return FALSE;
- }
-
- if (stars)
- free (stars);
-
- m_nTotStars = nNumStars;
-
- stars = (STAR*)malloc(nNumStars * sizeof(STAR));
-
- if (!stars)
- {
- MessageBox (0,
- _T("Unable to allocate memory! Aborting!"),
- _T("Error"),
- MB_OK | MB_ICONWARNING);
- return FALSE;
- }
-
- for (i = 0; i < m_nTotStars; i++)
- {
- do
- {
- stars[i].m_nXPos = RANDOM (-320, 320);
- stars[i].m_nYPos = RANDOM (-200, 200);
- stars[i].m_nZPos = i+1;
- stars[i].m_nOldX = -1;
- stars[i].m_nOldY = -1;
- } while ((stars[i].m_nXPos == 0) || (stars[i].m_nYPos == 0));
- }
-
- return TRUE;
+ int i;
+ if (nNumStars > MAX_STARS)
+ {
+ MessageBox (0,
+ _T("Too many stars! Aborting!"),
+ _T("Error"),
+ MB_OK | MB_ICONWARNING);
+ return FALSE;
+ }
+
+ if (stars)
+ free (stars);
+
+ m_nTotStars = nNumStars;
+
+ stars = (STAR*)malloc(nNumStars * sizeof(STAR));
+
+ if (!stars)
+ {
+ MessageBox (0,
+ _T("Unable to allocate memory! Aborting!"),
+ _T("Error"),
+ MB_OK | MB_ICONWARNING);
+ return FALSE;
+ }
+
+ for (i = 0; i < m_nTotStars; i++)
+ {
+ do
+ {
+ stars[i].m_nXPos = RANDOM (-320, 320);
+ stars[i].m_nYPos = RANDOM (-200, 200);
+ stars[i].m_nZPos = i+1;
+ stars[i].m_nOldX = -1;
+ stars[i].m_nOldY = -1;
+ } while ((stars[i].m_nXPos == 0) || (stars[i].m_nYPos == 0));
+ }
+ return TRUE;
}
void MoveStarField (int nXofs, int nYofs, int nZofs)
{
- int i;
- for (i = 0; i < m_nTotStars; i++)
- {
- stars[i].m_nXPos += nXofs;
- stars[i].m_nYPos += nYofs;
- stars[i].m_nZPos += nZofs;
-
- if (stars[i].m_nZPos > m_nTotStars)
- stars[i].m_nZPos -= m_nTotStars;
- if (stars[i].m_nZPos < 1)
- stars[i].m_nZPos += m_nTotStars;
- }
+ int i;
+ for (i = 0; i < m_nTotStars; i++)
+ {
+ stars[i].m_nXPos += nXofs;
+ stars[i].m_nYPos += nYofs;
+ stars[i].m_nZPos += nZofs;
+
+ if (stars[i].m_nZPos > m_nTotStars)
+ stars[i].m_nZPos -= m_nTotStars;
+ if (stars[i].m_nZPos < 1)
+ stars[i].m_nZPos += m_nTotStars;
+ }
}
void SetDimensions (int nWidth, int nHeight)
{
- m_nCenterX = nWidth / 2;
- m_nCenterY = nHeight / 2;
-}
-
-LRESULT WINAPI WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
-{
- static POINT ptLast;
- static POINT ptCursor;
- static BOOL fFirstTime = TRUE;
- static HDC pDC;
-
- switch (msg)
- {
- case WM_CREATE :
- {
- SetTimer (
- hwnd,
- APP_TIMER,
- APP_TIMER_INTERVAL,
- NULL);
- }
- break;
- case WM_PAINT :
- {
- PAINTSTRUCT PtStr;
- HDC pDC = BeginPaint (hwnd, &PtStr);
- DrawStarField (pDC);
- EndPaint (hwnd, &PtStr);
- return (0);
- }
- break;
- case WM_TIMER :
- {
- if (wParam == APP_TIMER)
- {
- MoveStarField (0, 0, -3);
- pDC = GetDC(hwnd);
- DrawStarField (pDC);
- ReleaseDC(hwnd, pDC);
- }
- }
- break;
- case WM_SIZE :
- {
- // Change the center point of the starfield
- SetDimensions (
- LOWORD(lParam),
- HIWORD(lParam));
- }
- break;
- case WM_DESTROY :
- {
- KillTimer (hwnd, APP_TIMER);
- free(stars);
- ShowCursor(TRUE);
- PostQuitMessage (0);
- return 0;
- }
- break;
- // break out of screen-saver if any keyboard activity
- case WM_NOTIFY:
- case WM_SYSKEYDOWN:
- {
- PostMessage(hwnd, WM_CLOSE, 0, 0);
- break;
- }
- // break out of screen-saver if any mouse activity
- case WM_LBUTTONDOWN:
- case WM_LBUTTONUP:
- case WM_RBUTTONDOWN:
- case WM_RBUTTONUP:
- case WM_MBUTTONDOWN:
- case WM_MBUTTONUP:
- case WM_MOUSEMOVE:
- {
- // If we've got a parent then we must be a preview
- if(GetParent(hwnd) != 0)
- return 0;
-
- if(fFirstTime)
- {
- GetCursorPos(&ptLast);
- fFirstTime = FALSE;
- }
-
- GetCursorPos(&ptCursor);
-
- // if the mouse has moved more than 3 pixels then exit
- if( (abs(ptCursor.x - ptLast.x) >= 3) ||
- (abs(ptCursor.y - ptLast.y) >= 3))
- {
- PostMessage(hwnd, WM_CLOSE, 0, 0);
- }
-
- ptLast = ptCursor;
- return 0;
- }
- }
-
- return DefWindowProc(hwnd, msg, wParam, lParam);
-}
-
-
-void InitSaver(HWND hwndParent)
-{
- WNDCLASS wc;
- ZeroMemory(&wc, sizeof(wc));
- wc.style = CS_HREDRAW | CS_VREDRAW;
- wc.lpfnWndProc = WndProc;
- wc.lpszClassName = APPNAME;
- wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
- RegisterClass(&wc);
-
- if (hwndParent != 0)
- {
- RECT rect;
- GetClientRect(hwndParent, &rect);
- CreateWindow(APPNAME, APPNAME,
- WS_VISIBLE | WS_CHILD,
- 0, 0,
- rect.right,
- rect.bottom,
- hwndParent, 0,
- hInstance, NULL);
- fullscreen = FALSE;
- }
- else
- {
- HWND hwnd;
- hwnd = CreateWindowEx(WS_EX_TOPMOST,
- APPNAME,
- APPNAME,
- WS_VISIBLE | WS_POPUP,
- 0, 0,
- GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN),
- HWND_DESKTOP, 0,
- hInstance, NULL);
-
- SetWindowPos(hwnd,
- 0, 0, 0, 0, 0,
- SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOSIZE|SWP_SHOWWINDOW);
-
- ShowCursor(FALSE);
- fullscreen = TRUE;
- }
-
- SetUpStars(250);
-}
-
-//
-// Look for any options Windows has passed to us:
-//
-// -a <hwnd> (set password)
-// -s (screensave)
-// -p <hwnd> (preview)
-// -c <hwnd> (configure)
-//
-VOID ParseCommandLine(LPWSTR szCmdLine, UCHAR *chOption, HWND *hwndParent)
-{
- UCHAR ch = *szCmdLine++;
-
- if(ch == '-' || ch == '/')
- ch = *szCmdLine++;
-
- if(ch >= 'A' && ch <= 'Z')
- ch += 'a' - 'A'; //convert to lower case
-
- *chOption = ch;
- ch = *szCmdLine++;
-
- if(ch == ':')
- ch = *szCmdLine++;
-
- while(ch == ' ' || ch == '\t')
- ch = *szCmdLine++;
-
- if(isdigit(ch))
- {
- unsigned int i = _wtoi(szCmdLine - 1);
- *hwndParent = (HWND)i;
- }
- else
- *hwndParent = NULL;
-}
-
-void Configure(void)
-{
- TCHAR szTitle[256];
- TCHAR szText[256];
-
- LoadString(hInstance,
- IDS_TITLE,
- szTitle,
- 256);
-
- LoadString(hInstance,
- IDS_TEXT,
- szText,
- 256);
-
- MessageBox(0,
- szText,
- szTitle,
- MB_OK | MB_ICONWARNING);
-}
-
-int CALLBACK wWinMain (HINSTANCE hInst,
- HINSTANCE hPrev,
- LPWSTR lpCmdLine,
- int iCmdShow)
-{
- HWND hwndParent;
- UINT nPreviousState;
- UCHAR chOption;
- MSG Message;
-
- hInstance = hInst;
-
- ParseCommandLine(lpCmdLine, &chOption, &hwndParent);
-
- SystemParametersInfo(SPI_SETSCREENSAVERRUNNING, TRUE, &nPreviousState, 0);
-
- switch (chOption)
- {
- case 's':
- InitSaver(0);
- break;
-
- case 'p':
- InitSaver(hwndParent);
- break;
-
- case 'c':
- default:
- Configure();
- return 0;
- }
-
- while (GetMessage(&Message, 0, 0, 0))
- DispatchMessage(&Message);
-
- SystemParametersInfo(SPI_SETSCREENSAVERRUNNING, FALSE, &nPreviousState, 0);
-
- return Message.wParam;
-}
+ m_nCenterX = nWidth / 2;
+ m_nCenterY = nHeight / 2;
+}
+
+LRESULT WINAPI ScreenSaverProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
+{
+ static HDC pDC;
+
+ switch (msg)
+ {
+ case WM_CREATE:
+ {
+ SetTimer (
+ hwnd,
+ APP_TIMER,
+ APP_TIMER_INTERVAL,
+ NULL);
+ }
+ break;
+ case WM_PAINT:
+ {
+ PAINTSTRUCT PtStr;
+ HDC pDC = BeginPaint (hwnd, &PtStr);
+ DrawStarField (pDC);
+ EndPaint (hwnd, &PtStr);
+ SetUpStars(250);
+ return (0);
+ }
+ break;
+ case WM_TIMER:
+ {
+ if (wParam == APP_TIMER)
+ {
+ MoveStarField (0, 0, -3);
+ pDC = GetDC(hwnd);
+ DrawStarField (pDC);
+ ReleaseDC(hwnd, pDC);
+ }
+ }
+ break;
+ case WM_SIZE:
+ {
+ // Change the center point of the starfield
+ SetDimensions (
+ LOWORD(lParam),
+ HIWORD(lParam));
+ }
+ break;
+ case WM_DESTROY:
+ {
+ KillTimer (hwnd, APP_TIMER);
+ free(stars);
+ ShowCursor(TRUE);
+ PostQuitMessage (0);
+ return 0;
+ }
+ break;
+ default:
+ return DefScreenSaverProc(hwnd, msg, wParam, lParam);
+ }
+ return 0;
+}
+
+BOOL WINAPI ScreenSaverConfigureDialog(HWND hWnd, UINT message, WPARAM wparam, LPARAM
lparam)
+{
+ return FALSE;
+}
+
+BOOL WINAPI RegisterDialogClasses(HANDLE hmodule)
+{
+ TCHAR szTitle[256];
+ TCHAR szText[256];
+
+ LoadString(hmodule,
+ IDS_TITLE,
+ szTitle,
+ 256);
+
+ LoadString(hmodule,
+ IDS_TEXT,
+ szText,
+ 256);
+
+ MessageBox(0,
+ szText,
+ szTitle,
+ MB_OK | MB_ICONWARNING);
+ return FALSE;
+}
Modified: trunk/rosapps/applications/screensavers/starfield/starfield.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/rosapps/applications/screensavers/…
==============================================================================
--- trunk/rosapps/applications/screensavers/starfield/starfield.rc [iso-8859-1]
(original)
+++ trunk/rosapps/applications/screensavers/starfield/starfield.rc [iso-8859-1] Mon Apr 27
01:04:01 2015
@@ -1,4 +1,5 @@
#include <windows.h>
+#include <scrnsave.h>
#include "resource.h"
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
@@ -10,18 +11,44 @@
#include <reactos/version.rc>
+#include <reactos/manifest_exe.rc>
+
/* UTF-8 */
#pragma code_page(65001)
-#include "lang/bg-BG.rc"
-#include "lang/de-DE.rc"
-#include "lang/en-US.rc"
-#include "lang/es-ES.rc"
-#include "lang/fr-FR.rc"
-#include "lang/lt-LT.rc"
-#include "lang/nl-NL.rc"
-#include "lang/no-NO.rc"
-#include "lang/pl-PL.rc"
-#include "lang/ro-RO.rc"
-#include "lang/sk-SK.rc"
-#include "lang/uk-UA.rc"
+#ifdef LANGUAGE_BG_BG
+ #include "lang/bg-BG.rc"
+#endif
+#ifdef LANGUAGE_DE_DE
+ #include "lang/de-DE.rc"
+#endif
+#ifdef LANGUAGE_EN_US
+ #include "lang/en-US.rc"
+#endif
+#ifdef LANGUAGE_ES_ES
+ #include "lang/es-ES.rc"
+#endif
+#ifdef LANGUAGE_ES_ES
+ #include "lang/fr-FR.rc"
+#endif
+#ifdef LANGUAGE_LT_LT
+ #include "lang/lt-LT.rc"
+#endif
+#ifdef LANGUAGE_NL_NL
+ #include "lang/nl-NL.rc"
+#endif
+#ifdef LANGUAGE_NO_NO
+ #include "lang/no-NO.rc"
+#endif
+#ifdef LANGUAGE_PL_PL
+ #include "lang/pl-PL.rc"
+#endif
+#ifdef LANGUAGE_RO_RO
+ #include "lang/ro-RO.rc"
+#endif
+#ifdef LANGUAGE_SK_SK
+ #include "lang/sk-SK.rc"
+#endif
+#ifdef LANGUAGE_UK_UA
+ #include "lang/uk-UA.rc"
+#endif