From 86331561cd91c82c39fa7e44680be6cd3b4cf2e1 Mon Sep 17 00:00:00 2001 From: Marc Piulachs Date: Sun, 4 May 2008 21:10:36 +0000 Subject: [PATCH] - simple but colorful new GDI screensaver svn path=/trunk/; revision=33282 --- .../screensavers/circles/circles.c | 120 ++++++++++++++++++ .../screensavers/circles/circles.rbuild | 16 +++ .../screensavers/circles/circles.rc | 14 ++ .../screensavers/circles/circles.spec | 2 + .../screensavers/circles/lang/en-US.rc | 7 + .../screensavers/circles/resource.h | 3 + .../screensavers/screensavers.rbuild | 3 + 7 files changed, 165 insertions(+) create mode 100644 rosapps/applications/screensavers/circles/circles.c create mode 100644 rosapps/applications/screensavers/circles/circles.rbuild create mode 100644 rosapps/applications/screensavers/circles/circles.rc create mode 100644 rosapps/applications/screensavers/circles/circles.spec create mode 100644 rosapps/applications/screensavers/circles/lang/en-US.rc create mode 100644 rosapps/applications/screensavers/circles/resource.h diff --git a/rosapps/applications/screensavers/circles/circles.c b/rosapps/applications/screensavers/circles/circles.c new file mode 100644 index 00000000000..3bbd0d2aa1b --- /dev/null +++ b/rosapps/applications/screensavers/circles/circles.c @@ -0,0 +1,120 @@ +/* + * Copyright 2008 Marc Piulachs (marc.piulachs@codexchange.net) + * + * 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 + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include +#include +#include +#include "resource.h" + +#define RANDOM_COLOR (rand () % 256) + +#define APPNAME _T("Circles") +#define APP_TIMER 1 +#define APP_TIMER_INTERVAL 100 +#define MAX_CIRCLES 50 + +int circlesCount; +int width, x, y; + +LRESULT WINAPI ScreenSaverProc (HWND hwnd, UINT iMsg, WPARAM wparam, + LPARAM lparam) +{ + HDC hdc; + RECT rect; + HBRUSH hbrush, hbrushOld; + + switch (iMsg) + { + case WM_CREATE: + { + SetTimer ( + hwnd, + APP_TIMER, + APP_TIMER_INTERVAL, + NULL); + } + break; + case WM_DESTROY: + { + KillTimer (hwnd, APP_TIMER); + PostQuitMessage (0); + return 0; + } + break; + case WM_TIMER: + { + hdc = GetDC (hwnd); + GetClientRect (hwnd, &rect); + hbrush = CreateSolidBrush (RGB (RANDOM_COLOR, RANDOM_COLOR, RANDOM_COLOR)); + hbrushOld = SelectObject (hdc, hbrush); + + x = rand () % rect.right; + y = rand () % rect.bottom; + + /* the circle will be 10% of total screen */ + width = rect.right / 10; + if (rect.bottom / 10 < width) + width = rect.bottom / 10; + + /* Draw circle on screen */ + Ellipse ( + hdc, + x, + y, + x + width, + y + width); + + //Track the number of painted circles on scren + circlesCount++; + if (circlesCount == MAX_CIRCLES) + { + InvalidateRect (hwnd, NULL, TRUE); + circlesCount = 0; + } + + SelectObject (hdc, hbrushOld); + DeleteObject (hbrush); + ReleaseDC (hwnd, hdc); + + return 0; + } + } + + return DefScreenSaverProc (hwnd, iMsg, wparam, lparam); +} + + +BOOL WINAPI ScreenSaverConfigureDialog(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) +{ + return FALSE; +} + +// This function is only called one time before opening the configuration dialog. +// Use it to show a message that no configuration is necesssary and return FALSE to indicate that no configuration dialog shall be opened. +BOOL WINAPI RegisterDialogClasses(HANDLE hInst) +{ + TCHAR szMessage[256]; + TCHAR szTitle[25]; + + LoadString(hInst, IDS_TEXT, szMessage, sizeof(szMessage) / sizeof(TCHAR)); + LoadString(hInst, IDS_DESCRIPTION, szTitle, sizeof(szTitle) / sizeof(TCHAR)); + + MessageBox(NULL, szMessage, szTitle, MB_OK | MB_ICONEXCLAMATION); + + return FALSE; +} diff --git a/rosapps/applications/screensavers/circles/circles.rbuild b/rosapps/applications/screensavers/circles/circles.rbuild new file mode 100644 index 00000000000..f697b9266fe --- /dev/null +++ b/rosapps/applications/screensavers/circles/circles.rbuild @@ -0,0 +1,16 @@ + + + + + . + scrnsave + kernel32 + user32 + gdi32 + + + + circles.c + circles.rc + circles.spec + diff --git a/rosapps/applications/screensavers/circles/circles.rc b/rosapps/applications/screensavers/circles/circles.rc new file mode 100644 index 00000000000..eab4aca86c7 --- /dev/null +++ b/rosapps/applications/screensavers/circles/circles.rc @@ -0,0 +1,14 @@ +#include +#include +#include "resource.h" + +LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL + +#define REACTOS_VERSION_DLL +#define REACTOS_STR_FILE_DESCRIPTION "Circles ScreenSaver\0" +#define REACTOS_STR_INTERNAL_NAME "circles\0" +#define REACTOS_STR_ORIGINAL_FILENAME "circles.scr\0" + +#include + +#include "lang/en-US.rc" diff --git a/rosapps/applications/screensavers/circles/circles.spec b/rosapps/applications/screensavers/circles/circles.spec new file mode 100644 index 00000000000..ac72010d393 --- /dev/null +++ b/rosapps/applications/screensavers/circles/circles.spec @@ -0,0 +1,2 @@ +@ stdcall ScreenSaverProc(ptr long ptr ptr) +@ stdcall ScreenSaverConfigureDialog(ptr long ptr ptr) diff --git a/rosapps/applications/screensavers/circles/lang/en-US.rc b/rosapps/applications/screensavers/circles/lang/en-US.rc new file mode 100644 index 00000000000..231497fd03c --- /dev/null +++ b/rosapps/applications/screensavers/circles/lang/en-US.rc @@ -0,0 +1,7 @@ +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +STRINGTABLE DISCARDABLE +BEGIN + IDS_DESCRIPTION "Circles" + IDS_TEXT "No options need to be set." +END diff --git a/rosapps/applications/screensavers/circles/resource.h b/rosapps/applications/screensavers/circles/resource.h new file mode 100644 index 00000000000..bc82e80e9e9 --- /dev/null +++ b/rosapps/applications/screensavers/circles/resource.h @@ -0,0 +1,3 @@ +#define IDS_TEXT 3 +#define IDB_WORKSTATION 0x100 +#define IDB_SERVER 0x200 diff --git a/rosapps/applications/screensavers/screensavers.rbuild b/rosapps/applications/screensavers/screensavers.rbuild index d5237d7b55d..0ff863eaeb6 100644 --- a/rosapps/applications/screensavers/screensavers.rbuild +++ b/rosapps/applications/screensavers/screensavers.rbuild @@ -1,6 +1,9 @@ + + + -- 2.17.1