diff --git a/reactos/base/applications/screensavers/matrix/matrix.rbuild b/reactos/base/applications/screensavers/matrix/matrix.rbuild deleted file mode 100644 index e0bd98fe51a..00000000000 --- a/reactos/base/applications/screensavers/matrix/matrix.rbuild +++ /dev/null @@ -1,34 +0,0 @@ - - - - . - - -lstdc++ - - 0x0501 - 0x0501 - - - kernel32 - user32 - gdi32 - winspool - comctl32 - comdlg32 - advapi32 - shell32 - ole32 - oleaut32 - uuid - - config.c - matrix.c - message.c - password.c - screensave.c - settings.c - matrix.rc - - - - diff --git a/reactos/base/applications/screensavers/matrix/matrix/Permission.txt b/reactos/base/applications/screensavers/matrix/matrix/Permission.txt deleted file mode 100644 index 791f759cb8c..00000000000 --- a/reactos/base/applications/screensavers/matrix/matrix/Permission.txt +++ /dev/null @@ -1,17 +0,0 @@ -Matrrix2 screensaver for ReactOS - -/***************************************** - -Freeware -Copyright J Brown 2003 - -Updates at http://www.catch22.net - -******************************************/ - -The author has given permission to use these sources -under Public Domain. Do what thou will but please give -credit where credit is due. - - --Magnus Olsen (aka GreatLord) / Aleasky (aka Fireball) diff --git a/reactos/base/applications/screensavers/matrix/matrix/ReadMe.txt b/reactos/base/applications/screensavers/matrix/matrix/ReadMe.txt deleted file mode 100644 index 32607f4a60c..00000000000 --- a/reactos/base/applications/screensavers/matrix/matrix/ReadMe.txt +++ /dev/null @@ -1,32 +0,0 @@ -Matrix ScreenSaver 2.0 -www.catch22.ork.uk - -Freeware written by J Brown 2003 ------------------------------------- - -The Matrix ScreenSaver is a small, fast and elegant Windows -version of the green "Matrix" cypher-code seen in the films. - -With this version you can even add messages which are -decoded displayed in realtime. - -Features ------------------------------------- - -+ Small and FAST (50Kb!) -+ All 32bit versions of Windows (Win95,98,ME,NT,2000,XP,NET) -+ Multimonitor support (new in version 2) -+ Custom matrix messages -+ Highly configurable -+ Full sourcecode available! - -Installation and use ------------------------------------- -Simply copy "matrix.scr" to your windows directory, -or right-click this file in explorer and click "Install". - -Other than that, it's just a standard Windows screensaver so it -works just like any other screensaver - - - diff --git a/reactos/base/applications/screensavers/matrix/matrix/config.c b/reactos/base/applications/screensavers/matrix/matrix/config.c deleted file mode 100644 index 83ba743cd4a..00000000000 --- a/reactos/base/applications/screensavers/matrix/matrix/config.c +++ /dev/null @@ -1,310 +0,0 @@ -// -// config.c -// -// Screensaver Configuration dialog -// -#include -#include -#include "resource.h" -#include "globals.h" -#include "message.h" -#include "matrix.h" - -// needed for slider-controls -#pragma comment(lib, "comctl32.lib") - -// -// Called once for every font - add to list -// -int CALLBACK EnumFontProc(ENUMLOGFONT *lpelfe, NEWTEXTMETRIC *lpntme, int FontType, LPARAM lParam) -{ - SendMessage((HWND)lParam, CB_ADDSTRING, 0, (LPARAM)lpelfe->elfLogFont.lfFaceName); - return 1; -} - -// -// Add every fontname into specified combobox -// -void AddFonts(HWND hwndCombo) -{ - HDC hdc; - LOGFONT lf; - - lf.lfCharSet = ANSI_CHARSET; - lf.lfPitchAndFamily = 0; - lf.lfFaceName[0] = '\0'; - - hdc = GetDC(0); - EnumFontFamiliesEx(hdc, &lf, (FONTENUMPROC)EnumFontProc, (LONG)hwndCombo, 0); - ReleaseDC(0, hdc); -} - -// -// Redraw preview control with current font/fontsize -// -void UpdatePreview(HWND hwnd) -{ - g_nFontSize = SendDlgItemMessage(hwnd, IDC_SLIDER4, TBM_GETPOS,0, 0); - SetMessageFont(hwnd, g_szFontName, g_nFontSize, g_fFontBold); - InvalidateRect(GetDlgItem(hwnd, IDC_PREVIEW), 0, 0); -} - -// -// Dialogbox procedure for Configuration window -// -BOOL CALLBACK ConfigDlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) -{ - static char buf[256]; - HWND hwndCombo, hwndCtrl; - int index, items, val; - RECT rect; - static int prevwidth, prevheight; - - switch(uMsg) - { - case WM_INITDIALOG: - - prevwidth = GetSystemMetrics(SM_CXSCREEN) / GLYPH_WIDTH; - prevheight = GetSystemMetrics(SM_CYSCREEN) / GLYPH_HEIGHT + 1; - - //Add any saved messages to the combo box - for(index = 0; index < g_nNumMessages; index++) - { - if(lstrlen(g_szMessages[index]) > 0) - SendDlgItemMessage(hwnd, IDC_COMBO1, CB_ADDSTRING, 0, (LPARAM)g_szMessages[index]); - } - - //select the first message, and preview it - SendDlgItemMessage(hwnd, IDC_COMBO1, CB_SETCURSEL, 0, 0); - - SendDlgItemMessage(hwnd, IDC_SLIDER1, TBM_SETRANGE, 0, MAKELONG(SPEED_MIN, SPEED_MAX)); - SendDlgItemMessage(hwnd, IDC_SLIDER2, TBM_SETRANGE, 0, MAKELONG(DENSITY_MIN, DENSITY_MAX)); - SendDlgItemMessage(hwnd, IDC_SLIDER3, TBM_SETRANGE, 0, MAKELONG(MSGSPEED_MIN, MSGSPEED_MAX)); - SendDlgItemMessage(hwnd, IDC_SLIDER4, TBM_SETRANGE, 0, MAKELONG(FONT_MIN, FONT_MAX)); - - //SendDlgItemMessage(hwnd, IDC_SLIDER1, TBM_SETTICFREQ, 5, 0); - SendDlgItemMessage(hwnd, IDC_SLIDER2, TBM_SETTICFREQ, 5, 0); - SendDlgItemMessage(hwnd, IDC_SLIDER3, TBM_SETTICFREQ, 50, 0); - SendDlgItemMessage(hwnd, IDC_SLIDER4, TBM_SETTICFREQ, 2, 0); - - SendDlgItemMessage(hwnd, IDC_SLIDER1, TBM_SETPOS, TRUE, g_nMatrixSpeed); - SendDlgItemMessage(hwnd, IDC_SLIDER2, TBM_SETPOS, TRUE, g_nDensity); - SendDlgItemMessage(hwnd, IDC_SLIDER3, TBM_SETPOS, TRUE, g_nMessageSpeed); - SendDlgItemMessage(hwnd, IDC_SLIDER4, TBM_SETPOS, TRUE, g_nFontSize); - - CheckDlgButton(hwnd, IDC_RANDOM, g_fRandomizeMessages); - CheckDlgButton(hwnd, IDC_BOLD, g_fFontBold); - - AddFonts(GetDlgItem(hwnd, IDC_COMBO2)); - index = SendDlgItemMessage(hwnd, IDC_COMBO2, CB_FINDSTRING, 0, (LPARAM)g_szFontName); - SendDlgItemMessage(hwnd, IDC_COMBO2, CB_SETCURSEL, index, 0); - UpdatePreview(hwnd); - return 0; - - case WM_DESTROY: - //DeInitMessage(); - return 0; - - case WM_CTLCOLORSTATIC: - - if(GetDlgCtrlID((HWND)lParam) == IDC_ABOUT) - { - SetTextColor((HDC)wParam, RGB(0,80,0)); - SetBkColor((HDC)wParam, GetSysColor(COLOR_3DFACE)); - return (BOOL)GetSysColorBrush(COLOR_3DFACE); - } - else if(GetDlgCtrlID((HWND)lParam) == IDC_PREVIEW) - { - HDC hdc = (HDC)wParam; - RECT clip; - - GetDlgItemText(hwnd, IDC_COMBO1, buf, 256); - - GetClientRect((HWND)lParam, &rect); - - if(prevwidth < rect.right) - { - rect.left = (rect.right-prevwidth) / 2; - rect.right = rect.left + prevwidth; - } - else - { - rect.left = 0; - rect.right = prevwidth; - } - - if(prevheight < rect.bottom) - { - rect.top = (rect.bottom-prevheight) / 2; - rect.bottom = rect.top + prevheight; - } - else - { - rect.top = 0; - rect.bottom = prevheight; - } - - SetTextColor(hdc, RGB(128,255,128)); - SetBkColor(hdc, 0); - - //SetRect(&rect, 0, 0, PrevMessage->width, MAXMSG_HEIGHT); - CopyRect(&clip, &rect); - FillRect(hdc, &rect, GetStockObject(BLACK_BRUSH)); - - SelectObject(hdc, g_hFont); - - InflateRect(&clip, 2, 2); - - FrameRect(hdc, &clip, GetSysColorBrush(COLOR_3DSHADOW)); - IntersectClipRect(hdc, rect.left, rect.top, rect.right, rect.bottom); - - // figure out where the bounding rectangle should be - DrawText(hdc, buf, -1, &rect, DT_CENTER|DT_VCENTER|DT_WORDBREAK|DT_CALCRECT); - OffsetRect(&rect, (prevwidth-(rect.right-rect.left))/2, (prevheight-(rect.bottom-rect.top))/2); - - // now draw it! - DrawText(hdc, buf, -1, &rect, DT_CENTER|DT_VCENTER|DT_WORDBREAK); - - - return (BOOL)GetStockObject(NULL_BRUSH); - } - else - { - break; - } - - case WM_HSCROLL: - - if((HWND)lParam == GetDlgItem(hwnd, IDC_SLIDER4)) - { - // one of the sliders changed..update - UpdatePreview(hwnd); - } - - return 0; - - case WM_COMMAND: - - switch(HIWORD(wParam)) - { - case CBN_EDITCHANGE: - case CBN_SELCHANGE: - - //fall through to Preview: - index = SendDlgItemMessage(hwnd, IDC_COMBO2, CB_GETCURSEL, 0, 0); - SendDlgItemMessage(hwnd, IDC_COMBO2, CB_GETLBTEXT, index, (LPARAM)g_szFontName); - //SetMessageFont(hwnd, g_szFontName, g_nFontSize, TRUE); - - UpdatePreview(hwnd); - return 0; - } - - switch(LOWORD(wParam)) - { - case IDC_RANDOM: - g_fRandomizeMessages = IsDlgButtonChecked(hwnd, IDC_RANDOM); - break; - - case IDC_BOLD: - g_fFontBold = IsDlgButtonChecked(hwnd, IDC_BOLD); - UpdatePreview(hwnd); - break; - - case IDOK: - - hwndCtrl = GetDlgItem(hwnd, IDC_COMBO1); - - items = min(MAX_MESSAGES, SendMessage(hwndCtrl, CB_GETCOUNT, 0, 0)); - - for(index = 0; index < items; index++) - { - SendMessage(hwndCtrl, CB_GETLBTEXT, index, (LPARAM)g_szMessages[index]); - } - - g_nNumMessages = items; - - //matrix speed - val = SendDlgItemMessage(hwnd, IDC_SLIDER1, TBM_GETPOS, 0, 0); - if(val >= SPEED_MIN && val <= SPEED_MAX) - g_nMatrixSpeed = val; - - //density - val = SendDlgItemMessage(hwnd, IDC_SLIDER2, TBM_GETPOS, 0, 0); - if(val >= DENSITY_MIN && val <= DENSITY_MAX) - g_nDensity = val; - - //message speed - val = SendDlgItemMessage(hwnd, IDC_SLIDER3, TBM_GETPOS, 0, 0); - if(val >= MSGSPEED_MIN && val <= MSGSPEED_MAX) - g_nMessageSpeed = val; - - //font size - val = SendDlgItemMessage(hwnd, IDC_SLIDER4, TBM_GETPOS, 0, 0); - if(val >= FONT_MIN && val <= FONT_MAX) - g_nFontSize = val; - - SaveSettings(); - EndDialog(hwnd, 0); - return 0; - - case IDCANCEL: - EndDialog(hwnd, 0); - return TRUE; - - case IDC_ADD: - - hwndCombo = GetDlgItem(hwnd, IDC_COMBO1); - - if(GetWindowText(hwndCombo, buf, 256)) - { - SendMessage(hwndCombo, CB_ADDSTRING, 0, (LPARAM)buf); - } - - UpdatePreview(hwnd); - - return 0; - - case IDC_REMOVE: - hwndCombo = GetDlgItem(hwnd, IDC_COMBO1); - GetWindowText(hwndCombo, buf, 256); - - index = SendMessage(hwndCombo, CB_GETCURSEL, 0, 0); - SendMessage(hwndCombo, CB_DELETESTRING, index, 0); - - SendMessage(hwndCombo, CB_SETCURSEL, 0, 0); - UpdatePreview(hwnd); - return 0; - } - return 0; - - case WM_CLOSE: - EndDialog(hwnd, 0); - return 0; - } - return 0; -} - -// -// Display the configuration dialog -// -int Configure(HWND hwndParent) -{ - INITCOMMONCONTROLSEX icc; - - icc.dwICC = ICC_UPDOWN_CLASS | ICC_BAR_CLASSES; - icc.dwSize = sizeof(icc); - - InitCommonControlsEx(&icc); - -#ifdef _DEBUG - if(hwndParent == NULL) - hwndParent = 0; -#else - if(hwndParent == NULL) - hwndParent = GetForegroundWindow(); -#endif - - DialogBox(GetModuleHandle(0), MAKEINTRESOURCE(IDD_CONFIG), hwndParent, ConfigDlgProc); - - return 0; -} diff --git a/reactos/base/applications/screensavers/matrix/matrix/cursor1.cur b/reactos/base/applications/screensavers/matrix/matrix/cursor1.cur deleted file mode 100644 index 048f06b4aef..00000000000 Binary files a/reactos/base/applications/screensavers/matrix/matrix/cursor1.cur and /dev/null differ diff --git a/reactos/base/applications/screensavers/matrix/matrix/globals.h b/reactos/base/applications/screensavers/matrix/matrix/globals.h deleted file mode 100644 index 34c76ab6ed1..00000000000 --- a/reactos/base/applications/screensavers/matrix/matrix/globals.h +++ /dev/null @@ -1,63 +0,0 @@ -#ifndef GLOBALS_INCLUDED -#define GLOBALS_INCLUDED - -#ifdef __cplusplus -extern "C" { -#endif - -#define APPNAME "MATRIX ScreenSaver 2.0" - -#define DENSITY 24 -#define DENSITY_MAX 50 -#define DENSITY_MIN 5 - -// constants inferred from matrix.bmp -#define MAX_INTENSITY 5 // number of intensity levels -#define NUM_GLYPHS 26 // number of "glyphs" in each level -#define GLYPH_WIDTH 14 // width of each glyph (pixels) -#define GLYPH_HEIGHT 14 // height of each glyph (pixels) - -#define SPEED_MAX 10 -#define SPEED_MIN 1 - -#define MAXMSG_WIDTH 0x100 -#define MAXMSG_HEIGHT 0x100 -#define MAXMSG_LENGTH 64 - -#define MSGSPEED_MAX 500 -#define MSGSPEED_MIN 50 - -#define MAX_MESSAGES 16 - -#define FONT_MIN 8 -#define FONT_MAX 30 - -extern char g_szMessages[MAX_MESSAGES][MAXMSG_LENGTH]; -extern int g_nFontSize; -extern char g_szFontName[]; -extern BOOL g_fFontBold; -extern int g_nNumMessages; -extern int g_nCurrentMessage; -extern int g_nMessageSpeed; -extern int g_nMatrixSpeed; -extern int g_nDensity; -extern BOOL g_fRandomizeMessages; -extern HFONT g_hFont; -extern BOOL g_fScreenSaving; - -void LoadSettings(); -void SaveSettings(); - -BOOL ChangePassword(HWND hwnd); -BOOL VerifyPassword(HWND hwnd); - -BOOL Configure(HWND hwndParent); -BOOL ScreenSaver(HWND hwndParent); - -int crc_rand(); - -#ifdef __cplusplus -} -#endif - -#endif \ No newline at end of file diff --git a/reactos/base/applications/screensavers/matrix/matrix/icon1.ico b/reactos/base/applications/screensavers/matrix/matrix/icon1.ico deleted file mode 100644 index 8c268f3b341..00000000000 Binary files a/reactos/base/applications/screensavers/matrix/matrix/icon1.ico and /dev/null differ diff --git a/reactos/base/applications/screensavers/matrix/matrix/matrix.bmp b/reactos/base/applications/screensavers/matrix/matrix/matrix.bmp deleted file mode 100644 index 403e66ce90b..00000000000 Binary files a/reactos/base/applications/screensavers/matrix/matrix/matrix.bmp and /dev/null differ diff --git a/reactos/base/applications/screensavers/matrix/matrix/matrix.c b/reactos/base/applications/screensavers/matrix/matrix/matrix.c deleted file mode 100644 index 56685a9dfa4..00000000000 --- a/reactos/base/applications/screensavers/matrix/matrix/matrix.c +++ /dev/null @@ -1,445 +0,0 @@ -// -// matrix.c -// -// Matrix-window implementation -// -#include -#include -#include "globals.h" -#include "message.h" -#include "matrix.h" -#include "resource.h" - -void DoMatrixMessage(HDC hdc, MATRIX *matrix); - -// pseudo-random number generator, based on 16bit CRC algorithm -static WORD _crc_reg = 0; -int crc_rand() -{ - const WORD mask = 0xb400; - - if(_crc_reg & 1) - _crc_reg = (_crc_reg >> 1) ^ mask; - else - _crc_reg = (_crc_reg >> 1); - - return _crc_reg; -} - -int GlyphIntensity(GLYPH glyph) -{ - return (int)((glyph & 0x7f00) >> 8); -} - -GLYPH DarkenGlyph(GLYPH glyph) -{ - int intensity = GlyphIntensity(glyph); - - if(intensity > 0) - return GLYPH_REDRAW | ((intensity - 1) << 8) | (glyph & 0x00FF); - else - return glyph; -} - -GLYPH RandomGlyph(int intensity) -{ - return GLYPH_REDRAW | (intensity << 8) | (crc_rand() % NUM_GLYPHS); -} - -void RedrawBlip(GLYPH *glypharr, int blippos) -{ - glypharr[blippos+0] |= GLYPH_REDRAW; - glypharr[blippos+1] |= GLYPH_REDRAW; - glypharr[blippos+8] |= GLYPH_REDRAW; - glypharr[blippos+9] |= GLYPH_REDRAW; -} - -void ScrollMatrixColumn(MATRIX_COLUMN *col) -{ - int y; - GLYPH lastglyph = 0; - GLYPH thisglyph; - - // wait until we are allowed to scroll - if(col->started == FALSE) - { - if(--col->countdown <= 0) - col->started = TRUE; - - return; - } - - // "seed" the glyph-run - lastglyph = col->state ? (GLYPH)0 : (GLYPH)(MAX_INTENSITY << 8); - - // - // loop over the entire length of the column, looking for changes - // in intensity/darkness. This change signifies the start/end - // of a run of glyphs. - // - for(y = 0; y < col->length; y++) - { - thisglyph = col->glyph[y]; - - // bottom-most part of "run". Insert a new character (glyph) - // at the end to lengthen the run down the screen..gives the - // impression that the run is "falling" down the screen - if(GlyphIntensity(thisglyph) < GlyphIntensity(lastglyph) && - GlyphIntensity(thisglyph) == 0) - { - col->glyph[y] = RandomGlyph(MAX_INTENSITY - 1); - y++; - } - // top-most part of "run". Delete a character off the top by - // darkening the glyph until it eventually disappears (turns black). - // this gives the effect that the run as dropped downwards - else if(GlyphIntensity(thisglyph) > GlyphIntensity(lastglyph)) - { - col->glyph[y] = DarkenGlyph(thisglyph); - - // if we've just darkened the last bit, skip on so - // the whole run doesn't go dark - if(GlyphIntensity(thisglyph) == MAX_INTENSITY - 1) - y++; - } - - lastglyph = col->glyph[y]; - } - - // change state from blanks <-> runs when the current run as expired - if(--col->runlen <= 0) - { - if(col->state ^= 1) - col->runlen = crc_rand() % (3 * DENSITY/2) + DENSITY_MIN; - else - col->runlen = crc_rand() % (DENSITY_MAX+1-DENSITY) + (DENSITY_MIN*2); - } - - // - // make a "blip" run down this column at double-speed - // - - // mark current blip as redraw so it gets "erased" - if(col->blippos >= 0 && col->blippos < col->length) - RedrawBlip(col->glyph, col->blippos); - - // advance down screen at double-speed - col->blippos += 2; - - // if the blip gets to the end of a run, start it again (for a random - // length so that the blips never get synched together) - if(col->blippos >= col->bliplen) - { - col->bliplen = col->length + crc_rand() % 50; - col->blippos = 0; - } - - // now redraw blip at new position - if(col->blippos >= 0 && col->blippos < col->length) - RedrawBlip(col->glyph, col->blippos); - -} - -// -// randomly change a small collection glyphs in a column -// -void RandomMatrixColumn(MATRIX_COLUMN *col) -{ - int i, y; - - for(i = 1, y = 0; i < 16; i++) - { - // find a run - while(GlyphIntensity(col->glyph[y]) < MAX_INTENSITY-1 && y < col->length) - y++; - - if(y >= col->length) - break; - - col->glyph[y] = (col->glyph[y] & 0xff00) | (crc_rand() % NUM_GLYPHS); - col->glyph[y] |= GLYPH_REDRAW; - - y += crc_rand() % 10; - } -} - -void DrawGlyph(MATRIX *matrix, HDC hdc, int xpos, int ypos, GLYPH glyph) -{ - int intensity = GlyphIntensity(glyph); - int glyphidx = glyph & 0xff; - - BitBlt(hdc, xpos, ypos, GLYPH_WIDTH, GLYPH_HEIGHT, matrix->hdcBitmap, - glyphidx * GLYPH_WIDTH, intensity * GLYPH_HEIGHT, SRCCOPY); -} - -void RedrawMatrixColumn(MATRIX_COLUMN *col, MATRIX *matrix, HDC hdc, int xpos) -{ - int y; - - // loop down the length of the column redrawing only what needs doing - for(y = 0; y < col->length; y++) - { - GLYPH glyph = col->glyph[y]; - - // does this glyph (character) need to be redrawn? - if(glyph & GLYPH_REDRAW) - { - if((y == col->blippos+0 || y == col->blippos+1 || - y == col->blippos+8 || y == col->blippos+9) && - GlyphIntensity(glyph) >= MAX_INTENSITY-1) - glyph |= MAX_INTENSITY << 8; - - DrawGlyph(matrix, hdc, xpos, y * GLYPH_HEIGHT, glyph); - - // clear redraw state - col->glyph[y] &= ~GLYPH_REDRAW; - } - } -} - -void DecodeMatrix(HWND hwnd, MATRIX *matrix) -{ - int x; - HDC hdc = GetDC(hwnd); - - for(x = 0; x < matrix->numcols; x++) - { - RandomMatrixColumn(&matrix->column[x]); - ScrollMatrixColumn(&matrix->column[x]); - RedrawMatrixColumn(&matrix->column[x], matrix, hdc, x * GLYPH_WIDTH); - } - - if(matrix->message) - DoMatrixMessage(hdc, matrix); - - ReleaseDC(hwnd, hdc); -} - -// -// Allocate matrix structures -// -MATRIX *CreateMatrix(HWND hwnd, int width, int height) -{ - MATRIX *matrix; - HDC hdc; - int x, y; - - int rows = height / GLYPH_HEIGHT + 1; - int cols = width / GLYPH_WIDTH + 1; - - // allocate matrix! - if((matrix = malloc(sizeof(MATRIX) + sizeof(MATRIX_COLUMN) * cols)) == 0) - return 0; - - matrix->numcols = cols; - matrix->numrows = rows; - matrix->width = width; - matrix->height = height; - - for(x = 0; x < cols; x++) - { - matrix->column[x].length = rows; - matrix->column[x].started = FALSE; - matrix->column[x].countdown = crc_rand() % 100; - matrix->column[x].state = crc_rand() % 2; - matrix->column[x].runlen = crc_rand() % 20 + 3; - - matrix->column[x].glyph = malloc(sizeof(GLYPH) * (rows+16)); - - for(y = 0; y < rows; y++) - matrix->column[x].glyph[y] = 0;//; - } - - // Load bitmap!! - hdc = GetDC(NULL); - matrix->hbmBitmap = LoadBitmap(GetModuleHandle(0), MAKEINTRESOURCE(IDB_BITMAP1)); - matrix->hdcBitmap = CreateCompatibleDC(hdc); - SelectObject(matrix->hdcBitmap, matrix->hbmBitmap); - ReleaseDC(NULL, hdc); - - // Create a message for this window...only if we are - // screen-saving (not if in preview mode) - if(GetParent(hwnd) == 0) - matrix->message = InitMatrixMessage(hwnd, matrix->numcols, matrix->numrows); - else - matrix->message = 0; - - return matrix; -} - -// -// Free up matrix structures -// -void DestroyMatrix(MATRIX *matrix) -{ - int x; - - // free the matrix columns - for(x = 0; x < matrix->numcols; x++) - free(matrix->column[x].glyph); - - DeleteDC(matrix->hdcBitmap); - DeleteObject(matrix->hbmBitmap); - - // now delete the matrix! - free(matrix); -} - -MATRIX *GetMatrix(HWND hwnd) -{ - return (MATRIX *)GetWindowLong(hwnd, 0); -} - -void SetMatrix(HWND hwnd, MATRIX *matrix) -{ - SetWindowLong(hwnd, 0, (LONG)matrix); -} - -// -// Window procedure for one matrix (1 per screen) -// -LRESULT WINAPI MatrixWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) -{ - static POINT ptLast; - static POINT ptCursor; - static BOOL fFirstTime = TRUE; - - MATRIX *matrix = GetMatrix(hwnd); - - switch(msg) - { - // window creation - case WM_NCCREATE: - - // create the matrix based on how big this window is - matrix = CreateMatrix(hwnd, ((CREATESTRUCT *)lParam)->cx, ((CREATESTRUCT *)lParam)->cy); - - // failed to allocate? stop window creation! - if(matrix == 0) - return FALSE; - - SetMatrix(hwnd, matrix); - - // start off an animation timer - SetTimer(hwnd, 0xdeadbeef, ((SPEED_MAX - g_nMatrixSpeed) + SPEED_MIN) * 10, 0); - - return TRUE; - - // window being destroyed, cleanup - case WM_NCDESTROY: - DestroyMatrix(matrix); - PostQuitMessage(0); - return 0; - - // animation timer has gone off, redraw the matrix! - case WM_TIMER: - DecodeMatrix(hwnd, matrix); - return 0; - - // break out of screen-saver if any keyboard activity - case WM_KEYDOWN: - case WM_SYSKEYDOWN: - PostMessage(hwnd, WM_CLOSE, 0, 0); - return 0; - - // 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; - - // someone wants to close us...see if it's ok - case WM_CLOSE: - - if(VerifyPassword(hwnd)) - { - KillTimer(hwnd, 0xdeadbeef); - DestroyWindow(hwnd); - } - - return 0; - } - - return DefWindowProc(hwnd, msg, wParam, lParam); -} - -HWND CreateScreenSaveWnd(HWND hwndParent, RECT *rect) -{ - DWORD dwStyle = hwndParent ? WS_CHILD : WS_POPUP; - -#ifdef _DEBUG - DWORD dwStyleEx = 0; -#else - DWORD dwStyleEx = WS_EX_TOPMOST; -#endif - - if(hwndParent) - GetClientRect(hwndParent, rect); - - return CreateWindowEx( dwStyleEx, - APPNAME, - 0, - WS_VISIBLE | dwStyle, - rect->left, - rect->top, - rect->right - rect->left, - rect->bottom - rect->top, - hwndParent, - 0, - GetModuleHandle(0), - 0 - ); -} - -// -// Initialize class for matrix window -// -void InitScreenSaveClass(BOOL fPreview) -{ - WNDCLASSEX wcx; - - wcx.cbSize = sizeof(WNDCLASSEX); - wcx.style = 0; - wcx.lpfnWndProc = MatrixWndProc; - wcx.cbClsExtra = 0; - wcx.cbWndExtra = sizeof(MATRIX *); - wcx.hInstance = GetModuleHandle(0); - wcx.hIcon = 0; - wcx.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); - wcx.lpszMenuName = 0; - wcx.lpszClassName = APPNAME; - wcx.hIconSm = 0; - - if(fPreview) - wcx.hCursor = LoadCursor(0, IDC_ARROW); - else - wcx.hCursor = LoadCursor(wcx.hInstance, MAKEINTRESOURCE(IDC_BLANKCURSOR)); - - // initialize the crc register used for "random" number generation - _crc_reg = (WORD)GetTickCount(); - - RegisterClassEx(&wcx); -} diff --git a/reactos/base/applications/screensavers/matrix/matrix/matrix.dsp b/reactos/base/applications/screensavers/matrix/matrix/matrix.dsp deleted file mode 100644 index 78af313cd31..00000000000 --- a/reactos/base/applications/screensavers/matrix/matrix/matrix.dsp +++ /dev/null @@ -1,158 +0,0 @@ -# Microsoft Developer Studio Project File - Name="matrix" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Application" 0x0101 - -CFG=matrix - 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 "matrix.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 "matrix.mak" CFG="matrix - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "matrix - Win32 Release" (based on "Win32 (x86) Application") -!MESSAGE "matrix - 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)" == "matrix - 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- /Zi /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x809 /d "NDEBUG" -# ADD RSC /l 0x809 /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 libctiny.lib 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 /map /debug /machine:I386 - -!ELSEIF "$(CFG)" == "matrix - 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 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 "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x809 /d "_DEBUG" -# ADD RSC /l 0x809 /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 /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "matrix - Win32 Release" -# Name "matrix - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\config.c -# End Source File -# Begin Source File - -SOURCE=.\matrix.c -# End Source File -# Begin Source File - -SOURCE=.\matrix.rc -# End Source File -# Begin Source File - -SOURCE=.\message.c -# End Source File -# Begin Source File - -SOURCE=.\password.c -# End Source File -# Begin Source File - -SOURCE=.\screensave.c -# End Source File -# Begin Source File - -SOURCE=.\settings.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=.\globals.h -# End Source File -# Begin Source File - -SOURCE=.\matrix.h -# End Source File -# Begin Source File - -SOURCE=.\message.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" -# Begin Source File - -SOURCE=.\cursor1.cur -# End Source File -# Begin Source File - -SOURCE=.\icon1.ico -# End Source File -# Begin Source File - -SOURCE=.\matrix.bmp -# End Source File -# Begin Source File - -SOURCE=.\matrix2.bmp -# End Source File -# End Group -# End Target -# End Project diff --git a/reactos/base/applications/screensavers/matrix/matrix/matrix.h b/reactos/base/applications/screensavers/matrix/matrix/matrix.h deleted file mode 100644 index 8e2a8576fdf..00000000000 --- a/reactos/base/applications/screensavers/matrix/matrix/matrix.h +++ /dev/null @@ -1,70 +0,0 @@ -#ifndef MATRIX_INCLUDED -#define MATRIX_INCLUDED - -#ifdef __cplusplus -extern "C" { -#endif - -// -// Top BYTE of each glyph is used as flags -// (redraw state, intensity etc) -// -// Bottom BYTE of each glyph is the character value -// -// Bit: 15 14 13-8 | 7-0 -// -// [Redraw][Blank][Intensity] [Glyph] -// -typedef unsigned short GLYPH; - -#define GLYPH_REDRAW 0x8000 -#define GLYPH_BLANK 0x4000 - -// -// The "matrix" is basically an array of these -// column structures, positioned side-by-side -// -typedef struct -{ - BOOL state; - int countdown; - - BOOL started; - int runlen; - - int blippos; - int bliplen; - - int length; - GLYPH *glyph; - -} MATRIX_COLUMN; - -typedef struct -{ - int width; - int height; - int numcols; - int numrows; - - // bitmap containing glyphs. - HDC hdcBitmap; - HBITMAP hbmBitmap; - - MATRIX_MESSAGE *message; - - MATRIX_COLUMN column[1]; - -} MATRIX; - -GLYPH RandomGlyph(int intensity); -void DrawGlyph(MATRIX *matrix, HDC hdc, int xpos, int ypos, GLYPH glyph); - -HWND CreateScreenSaveWnd(HWND hwndParent, RECT *rect); -void InitScreenSaveClass(); - -#ifdef __cplusplus -} -#endif - -#endif \ No newline at end of file diff --git a/reactos/base/applications/screensavers/matrix/matrix/matrix.rbuild b/reactos/base/applications/screensavers/matrix/matrix/matrix.rbuild deleted file mode 100644 index e0bd98fe51a..00000000000 --- a/reactos/base/applications/screensavers/matrix/matrix/matrix.rbuild +++ /dev/null @@ -1,34 +0,0 @@ - - - - . - - -lstdc++ - - 0x0501 - 0x0501 - - - kernel32 - user32 - gdi32 - winspool - comctl32 - comdlg32 - advapi32 - shell32 - ole32 - oleaut32 - uuid - - config.c - matrix.c - message.c - password.c - screensave.c - settings.c - matrix.rc - - - - diff --git a/reactos/base/applications/screensavers/matrix/matrix/matrix.rc b/reactos/base/applications/screensavers/matrix/matrix/matrix.rc deleted file mode 100644 index 4a8992054dc..00000000000 --- a/reactos/base/applications/screensavers/matrix/matrix/matrix.rc +++ /dev/null @@ -1,167 +0,0 @@ -//Microsoft Developer Studio generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (U.K.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENG) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK -#pragma code_page(1252) -#endif //_WIN32 - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_CONFIG DIALOG DISCARDABLE 0, 0, 340, 183 -STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Matrix ScreenSaver Configuration" -FONT 8, "MS Sans Serif" -BEGIN - GROUPBOX "Decode &Speed",IDC_STATIC,7,7,128,36 - LTEXT "Slower",IDC_STATIC,13,24,22,8 - CONTROL "Slider1",IDC_SLIDER1,"msctls_trackbar32",TBS_AUTOTICKS | - TBS_BOTH | WS_TABSTOP,38,17,62,22 - LTEXT "Faster",IDC_STATIC,104,24,20,8 - GROUPBOX "Cypher &Density",IDC_STATIC,7,50,128,36 - LTEXT "Less",IDC_STATIC,13,67,19,8 - CONTROL "Slider1",IDC_SLIDER2,"msctls_trackbar32",TBS_AUTOTICKS | - TBS_BOTH | WS_TABSTOP,38,60,62,22 - LTEXT "More",IDC_STATIC,104,67,23,8 - GROUPBOX "&Message Display Speed",IDC_MSGSPEEDGRP,7,93,127,36 - LTEXT "Slower",IDC_STATIC,13,110,22,8 - CONTROL "Slider3",IDC_SLIDER3,"msctls_trackbar32",TBS_AUTOTICKS | - TBS_BOTH | WS_TABSTOP,38,103,62,22 - LTEXT "Faster",IDC_STATIC,104,110,22,8 - GROUPBOX "&Font Size",IDC_STATIC,7,137,127,36 - LTEXT "Smaller",IDC_STATIC,13,153,24,8 - CONTROL "Slider3",IDC_SLIDER4,"msctls_trackbar32",TBS_AUTOTICKS | - TBS_BOTH | WS_TABSTOP,38,146,62,22 - LTEXT "Bigger",IDC_STATIC,104,153,25,8 - GROUPBOX "Coded Messages",IDC_STATIC,145,7,188,142 - COMBOBOX IDC_COMBO1,153,22,172,62,CBS_DROPDOWN | WS_VSCROLL | - WS_TABSTOP - CONTROL "",IDC_PREVIEW,"Static",SS_LEFTNOWORDWRAP | - SS_CENTERIMAGE | WS_GROUP,154,39,116,72 - PUSHBUTTON "&Add",IDC_ADD,280,41,44,18 - PUSHBUTTON "&Remove",IDC_REMOVE,280,66,44,18 - CONTROL "Randomize Messages",IDC_RANDOM,"Button",BS_AUTOCHECKBOX | - WS_TABSTOP,151,134,85,10 - DEFPUSHBUTTON "OK",IDOK,222,162,50,14 - PUSHBUTTON "Cancel",IDCANCEL,283,162,50,14 - COMBOBOX IDC_COMBO2,195,116,130,71,CBS_DROPDOWNLIST | CBS_SORT | - WS_VSCROLL | WS_TABSTOP - LTEXT "&Font Name:",IDC_STATIC,151,118,38,8 - CONTROL "&Bold Font",IDC_BOLD,"Button",BS_AUTOCHECKBOX | - BS_MULTILINE | WS_TABSTOP,247,134,46,10 - CTEXT "Matrix ScreenSaver www.catch22.org.uk",IDC_ABOUT,140, - 158,75,18 -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO DISCARDABLE -BEGIN - IDD_CONFIG, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 333 - TOPMARGIN, 7 - BOTTOMMARGIN, 176 - END -END -#endif // APSTUDIO_INVOKED - - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE DISCARDABLE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE DISCARDABLE -BEGIN - "#include ""afxres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE DISCARDABLE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Bitmap -// - -IDB_BITMAP1 BITMAP DISCARDABLE "matrix.bmp" - -///////////////////////////////////////////////////////////////////////////// -// -// Cursor -// - -IDC_BLANKCURSOR CURSOR DISCARDABLE "cursor1.cur" - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDI_ICON1 ICON DISCARDABLE "icon1.ico" - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE DISCARDABLE -BEGIN - IDS_DESCRIPTION "Matrix ScreenSaver" -END - -#endif // English (U.K.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/reactos/base/applications/screensavers/matrix/matrix/message.c b/reactos/base/applications/screensavers/matrix/matrix/message.c deleted file mode 100644 index 7c33e7ce16b..00000000000 --- a/reactos/base/applications/screensavers/matrix/matrix/message.c +++ /dev/null @@ -1,250 +0,0 @@ -// -// message.c -// -// Dissolve in/out messages into the "matrix" -// -// -// -#include -#include "globals.h" -#include "message.h" -#include "matrix.h" - -// -// this isn't really a random-number generator. It's based on -// a 16bit CRC algorithm. With the right mask (0xb400) it is possible -// to call this function 65536 times and get a unique result every time -// with *NO* repeats. The results look random but they're not - if we -// call this function another 65536 times we get exactly the same results -// in the same order. This is necessary for fading in messages because -// we need to be guaranteed that all cells...it's completely uniform in -// operation but looks random enough to be very effective -// -WORD crc_msgrand(WORD reg) -{ - const WORD mask = 0xb400; - - if(reg & 1) - reg = (reg >> 1) ^ mask; - else - reg = (reg >> 1); - - return reg; -} - -// -// Set a new message based on font and text -// -void SetMatrixMessage(MATRIX_MESSAGE *msg, HFONT hFont, char *text) -{ - HDC hdc; - RECT rect; - int x, y; - - HDC hdcMessage; - HBITMAP hbmMessage; - - HANDLE hOldFont, hOldBmp; - - // - // Create a monochrome off-screen buffer - // - hdc = GetDC(NULL); - - hdcMessage = CreateCompatibleDC(hdc); - hbmMessage = CreateBitmap(MAXMSG_WIDTH, MAXMSG_HEIGHT, 1, 1, 0); - hOldBmp = SelectObject(hdcMessage, hbmMessage); - - ReleaseDC(NULL, hdc); - - // - // Draw text into bitmap - // - SetRect(&rect, 0, 0, msg->width, MAXMSG_HEIGHT); - FillRect(hdcMessage, &rect, GetStockObject(WHITE_BRUSH)); - - hOldFont = SelectObject(hdcMessage, g_hFont); - DrawText(hdcMessage, text, -1, &rect, DT_CENTER|DT_VCENTER|DT_WORDBREAK|DT_CALCRECT); - - OffsetRect(&rect, (msg->width-(rect.right-rect.left))/2, (msg->height-(rect.bottom-rect.top))/2); - DrawText(hdcMessage, text, -1, &rect, DT_CENTER|DT_VCENTER|DT_WORDBREAK); - - // - // Convert bitmap into an array of cells for easy drawing - // - for(y = 0; y < msg->height; y++) - { - for(x = 0; x < msg->width; x++) - { - msg->message[x][y] = GetPixel(hdcMessage, x, y) ? 0 : 1; - } - } - - // - // Cleanup - // - SelectObject(hdcMessage, hOldFont); - SelectObject(hdcMessage, hOldBmp); - - DeleteDC(hdcMessage); - DeleteObject(hbmMessage); -} - -// -// Draw any part of the message that is visible. Make the -// message "shimmer" by using a random glyph each time -// -void DrawMatrixMessage(MATRIX *matrix, MATRIX_MESSAGE *msg, HDC hdc) -{ - int x, y; - - for(x = 0; x < msg->width; x++) - for(y = 0; y < msg->height; y++) - if((msg->message[x][y] & 0x8000) && - (msg->message[x][y] & 0x00FF)) - { - DrawGlyph(matrix, hdc, x * GLYPH_WIDTH, y * GLYPH_HEIGHT, RandomGlyph(MAX_INTENSITY)); - } -} - -// -// Reveal specified amount of message -// -void RevealMatrixMessage(MATRIX_MESSAGE *msg, int amount) -{ - while(amount--) - { - int pos; - - msg->random_reg1 = crc_msgrand(msg->random_reg1); - pos = msg->random_reg1 & 0xffff; - - msg->message[pos / 256][pos % 256] |= GLYPH_REDRAW; - } -} - -// -// Reset (hide) the message -// -void ClearMatrixMessage(MATRIX_MESSAGE *msg) -{ - int x, y; - - for(x = 0; x < msg->width; x++) - for(y = 0; y < msg->height; y++) - msg->message[x][y] = 0; -} - -// -// convert from 50-500 (fast-slow) to slow(50) - fast(500) -// -int MessageSpeed() -{ - return (MSGSPEED_MAX-MSGSPEED_MIN) - (g_nMessageSpeed-MSGSPEED_MIN) + MSGSPEED_MIN; -} - -// -// Called once for each iteration of the matrix -// -void DoMatrixMessage(HDC hdc, MATRIX *matrix) -{ - MATRIX_MESSAGE *msg = matrix->message; - - int RealSpeed = MessageSpeed(); - - if(g_nNumMessages > 0) - { - // nothing to do yet.. - if(msg->counter++ < 0) - return; - - // has counter reached limit..clear the message - if(msg->counter++ == RealSpeed / 2 + (RealSpeed/4)) - ClearMatrixMessage(msg); - - // reset counter + display a new message - if(msg->counter >= RealSpeed) - { - // mark all message-cells as being "invisible" so the - // message gets cleared by the matrix decoding naturally - - if(g_fRandomizeMessages) - msg->msgindex = crc_rand() % g_nNumMessages; - else - msg->msgindex = (msg->msgindex + 1) % g_nNumMessages; - - // make a new message..initially invisible - SetMatrixMessage(msg, 0, g_szMessages[msg->msgindex]); - - msg->counter = -(int)(crc_rand() % MSGSPEED_MAX); - } - // reveal the next part of the message - else if(msg->counter < RealSpeed / 2) - { - int w = (g_nMessageSpeed - MSGSPEED_MIN); - w = (1 << 16) + ((w<<16) / MSGSPEED_MAX); - w = (w * 3 * g_nMessageSpeed) >> 16; - - RevealMatrixMessage(msg, w + 100); - } - - // - // draw whatever part of the message is visible at this time - // - DrawMatrixMessage(matrix, msg, hdc); - } -} - -// -// Set current font used for messages -// -void SetMessageFont(HWND hwnd, char *szFontName, int nPointSize, BOOL fBold) -{ - int lfHeight; - HDC hdc; - HFONT hFont; - - hdc = GetDC(hwnd); - - lfHeight = -MulDiv(nPointSize, GetDeviceCaps(hdc, LOGPIXELSY), 72); - - ReleaseDC(hwnd, hdc); - - hFont = CreateFont(lfHeight, 0, 0, 0, fBold ? FW_BOLD: FW_NORMAL, 0, 0, 0, - ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, - ANTIALIASED_QUALITY, DEFAULT_PITCH, szFontName); - - if(hFont != 0) - { - if(g_hFont != 0) - DeleteObject(g_hFont); - - g_hFont = hFont; - } -} - -// -// Create a message! -// -MATRIX_MESSAGE *InitMatrixMessage(HWND hwnd, int width, int height) -{ - MATRIX_MESSAGE *msg; - - if((msg = malloc(sizeof(MATRIX_MESSAGE))) == 0) - return 0; - - ClearMatrixMessage(msg); - - msg->msgindex = 0; - msg->width = min(width, MAXMSG_WIDTH); - msg->height = min(height, MAXMSG_HEIGHT); - msg->counter = -(int)(crc_rand() % MSGSPEED_MIN + MSGSPEED_MIN); - - msg->random_reg1 = (WORD)GetTickCount(); - - SetMessageFont(hwnd, g_szFontName, g_nFontSize, g_fFontBold); - - SetMatrixMessage(msg, 0, g_szMessages[0]); - - return msg; -} diff --git a/reactos/base/applications/screensavers/matrix/matrix/message.h b/reactos/base/applications/screensavers/matrix/matrix/message.h deleted file mode 100644 index c8f3843b04a..00000000000 --- a/reactos/base/applications/screensavers/matrix/matrix/message.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef MESSAGE_INCLUDED -#define MESSAGE_INCLUDED - -#ifdef __cplusplus -extern "C" { -#endif - -// -// counter starts off negative (rand() < 0)..when it gets -// to zero the message starts to display -// -typedef struct -{ - WORD message[MAXMSG_WIDTH][MAXMSG_HEIGHT]; - - int msgindex; - - int counter; - WORD random_reg1; - - int width, height; - -} MATRIX_MESSAGE; - -void SetMessageFont(HWND hwnd, char *szFontName, int nPointSize, BOOL fBold); -MATRIX_MESSAGE *InitMatrixMessage(HWND hwnd, int width, int height); - -#ifdef __cplusplus -} -#endif - -#endif \ No newline at end of file diff --git a/reactos/base/applications/screensavers/matrix/matrix/password.c b/reactos/base/applications/screensavers/matrix/matrix/password.c deleted file mode 100644 index 719ed2663d9..00000000000 --- a/reactos/base/applications/screensavers/matrix/matrix/password.c +++ /dev/null @@ -1,68 +0,0 @@ -// -// password.c -// -// Password support for Win9x -// -#include - -typedef BOOL (WINAPI *VERIFYSCREENSAVEPWD)(HWND hwnd); -typedef VOID (WINAPI *PWDCHANGEPASSWORD)(LPCSTR lpcRegkeyname, HWND hwnd,UINT uiReserved1,UINT uiReserved2); - -BOOL VerifyPassword(HWND hwnd) -{ - // Under NT, we return TRUE immediately. This lets the saver quit, - // and the system manages passwords. Under '95, we call VerifyScreenSavePwd. - // This checks the appropriate registry key and, if necessary, - // pops up a verify dialog - - HINSTANCE hpwdcpl; - VERIFYSCREENSAVEPWD VerifyScreenSavePwd; - BOOL fResult; - - if(GetVersion() < 0x80000000) - return TRUE; - - hpwdcpl = LoadLibrary("PASSWORD.CPL"); - - if(hpwdcpl == NULL) - { - return FALSE; - } - - - VerifyScreenSavePwd = (VERIFYSCREENSAVEPWD)GetProcAddress(hpwdcpl, "VerifyScreenSavePwd"); - - if(VerifyScreenSavePwd == NULL) - { - FreeLibrary(hpwdcpl); - return FALSE; - } - - fResult = VerifyScreenSavePwd(hwnd); - FreeLibrary(hpwdcpl); - - return fResult; -} - -BOOL ChangePassword(HWND hwnd) -{ - // This only ever gets called under '95, when started with the /a option. - HINSTANCE hmpr = LoadLibrary("MPR.DLL"); - PWDCHANGEPASSWORD PwdChangePassword; - - if(hmpr == NULL) - return FALSE; - - PwdChangePassword = (PWDCHANGEPASSWORD)GetProcAddress(hmpr, "PwdChangePasswordA"); - - if(PwdChangePassword == NULL) - { - FreeLibrary(hmpr); - return FALSE; - } - - PwdChangePassword("SCRSAVE", hwnd, 0, 0); - FreeLibrary(hmpr); - - return TRUE; -} diff --git a/reactos/base/applications/screensavers/matrix/matrix/resource.h b/reactos/base/applications/screensavers/matrix/matrix/resource.h deleted file mode 100644 index 612de0917fd..00000000000 --- a/reactos/base/applications/screensavers/matrix/matrix/resource.h +++ /dev/null @@ -1,35 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Developer Studio generated include file. -// Used by matrix.rc -// -#define IDS_DESCRIPTION 1 -#define IDD_CONFIG 101 -#define IDB_BITMAP1 104 -#define IDC_BLANKCURSOR 105 -#define IDI_ICON1 106 -#define IDC_COMBO1 1003 -#define IDC_REMOVE 1004 -#define IDC_ADD 1005 -#define IDC_PREVIEW 1008 -#define IDC_PREV 1009 -#define IDC_ENABLEPREV 1013 -#define IDC_RANDOM 1014 -#define IDC_SLIDER1 1015 -#define IDC_SLIDER2 1016 -#define IDC_SLIDER3 1017 -#define IDC_SLIDER4 1018 -#define IDC_BOLD 1019 -#define IDC_COMBO2 1020 -#define IDC_MSGSPEEDGRP 1021 -#define IDC_ABOUT 1022 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 109 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1023 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/reactos/base/applications/screensavers/matrix/matrix/screensave.c b/reactos/base/applications/screensavers/matrix/matrix/screensave.c deleted file mode 100644 index 044931d636f..00000000000 --- a/reactos/base/applications/screensavers/matrix/matrix/screensave.c +++ /dev/null @@ -1,161 +0,0 @@ -// -// screensave.c -// -// Entrypoint for a win32 screensaver -// -// NOTES: Screen savers don't like being UPX'd (compressed). Don't -// know why, it just is. C-runtime has been stripped with -// "libctiny.lib". -// -// v1.0 1/12/2003 J Brown -// -#include -#include -#include "globals.h" -#include "message.h" -#include "matrix.h" -#include "resource.h" - -#pragma comment(lib, "libctiny.lib") -#pragma comment(linker, "/OPT:NOWIN98") - -// -// Added: Multimonitor support!! -// -HMONITOR (WINAPI * pfnEnumDisplayMonitors)(HDC, LPCRECT, MONITORENUMPROC, LPARAM); -BOOL (WINAPI * pfnGetMonitorInfo)(HMONITOR, LPMONITORINFO); - -// -// Callback function for EnumDisplayMonitors API. Use this function -// to kickstart a screen-saver window for each monitor in the system -// -BOOL CALLBACK MonitorEnumProc(HMONITOR hMonitor, HDC hdcMonitor, RECT *rcMonitor, LPARAM Param) -{ - HWND hwnd; - - // Create a screensaver on this monitor! - hwnd = CreateScreenSaveWnd((HWND)Param, rcMonitor); - - // For some reason windows always places this window at 0,0... - // position it ourselves - SetWindowPos(hwnd, 0, rcMonitor->left, rcMonitor->top, 0, 0, - SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOSIZE|SWP_SHOWWINDOW); - - return TRUE; -} - -// -// Start screen saver! -// -BOOL ScreenSaver(HWND hwndParent) -{ - HMODULE hUser32; - UINT nPreviousState; - MSG msg; - - InitScreenSaveClass(hwndParent); - - SystemParametersInfo(SPI_SETSCREENSAVERRUNNING, TRUE, &nPreviousState, 0); - - // Dynamically locate API call from USER32 - not present in all versions - hUser32 = GetModuleHandle("USER32.DLL"); - pfnEnumDisplayMonitors = (PVOID)GetProcAddress(hUser32, "EnumDisplayMonitors"); - - // If we're running Win2k+ then the API is available...so call it! - if(pfnEnumDisplayMonitors && hwndParent == 0) - { - pfnEnumDisplayMonitors(NULL, NULL, MonitorEnumProc, 0); - } - // Otherwise simulate by calling enum-proc manually - else - { - RECT rect; - - rect.left = 0; - rect.right = GetSystemMetrics(SM_CXSCREEN); - rect.top = 0; - rect.bottom = GetSystemMetrics(SM_CYSCREEN); - - MonitorEnumProc(NULL, NULL, &rect, (LPARAM)hwndParent); - } - - // run message loop to handle all screen-saver windows - while(GetMessage(&msg, NULL,0,0)) - { - TranslateMessage(&msg); - DispatchMessage(&msg); - } - - SystemParametersInfo(SPI_SETSCREENSAVERRUNNING, FALSE, &nPreviousState, 0); - - return TRUE; -} - -// -// Look for any options Windows has passed to us: -// -// -a (set password) -// -s (screensave) -// -p (preview) -// -c (configure) -// -BOOL ParseCommandLine(PSTR szCmdLine, int *chOption, HWND *hwndParent) -{ - int 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 = atoi(szCmdLine - 1); - *hwndParent = (HWND)i; - } - else - *hwndParent = NULL; - - return TRUE; -} - -// -// Entrypoint for screen-saver: it's just a normal win32 app! -// -int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmdLine, int iCmdShow) -{ - HWND hwndParent; - int chOption; - - // Make sure that only 1 instance runs at a time - - // Win98 seems to want us to restart every 5 seconds!! - if(FindWindowEx(NULL, NULL, APPNAME, APPNAME)) - { - return 0; - } - - LoadSettings(); - - ParseCommandLine(lpCmdLine, &chOption, &hwndParent); - - switch(chOption) - { - case 's': return ScreenSaver(NULL); // screen save - case 'p': return ScreenSaver(hwndParent); // preview in small window - case 'a': return ChangePassword(hwndParent); // ask for password - case 'c': return Configure(hwndParent); // configuration dialog - default: return Configure(hwndParent); // configuration dialog - } - - return 0; -} diff --git a/reactos/base/applications/screensavers/matrix/matrix/settings.c b/reactos/base/applications/screensavers/matrix/matrix/settings.c deleted file mode 100644 index 052796102c7..00000000000 --- a/reactos/base/applications/screensavers/matrix/matrix/settings.c +++ /dev/null @@ -1,158 +0,0 @@ -// -// settings.c -// -// Load/Save settings from registry -// -#include -#include "globals.h" -#include "message.h" -#include "matrix.h" - -char g_szMessages[MAX_MESSAGES][MAXMSG_LENGTH]; -int g_nNumMessages = 0; -int g_nMessageSpeed = 5; -char g_szFontName[512] = "Arial"; - -int g_nMatrixSpeed = 150; -int g_nDensity = 32; -int g_nFontSize = 12; -BOOL g_fRandomizeMessages = FALSE; -BOOL g_fFontBold = TRUE; -BOOL g_fScreenSaving = FALSE; - -HFONT g_hFont; - -void LoadSettings() -{ - HKEY hkey; - LONG value; - ULONG len; - char *hugechar = malloc(4096); - char *hptr = hugechar; - - if(hugechar == 0) - return; - - hugechar[0] = '\0'; - - RegCreateKeyEx(HKEY_CURRENT_USER, "Software\\Catch22\\Matrix Screen Saver", 0, - "", 0, KEY_READ, NULL, &hkey, NULL); - - len = sizeof value; - if(ERROR_SUCCESS == RegQueryValueEx(hkey, "MessageSpeed", 0, 0, (BYTE *)&value, &len)) - { - if(value >= MSGSPEED_MIN && value <= MSGSPEED_MAX) - g_nMessageSpeed = value; - } - - if(ERROR_SUCCESS == RegQueryValueEx(hkey, "MatrixSpeed", 0, 0, (BYTE *)&value, &len)) - { - if(value >= SPEED_MIN && value <= SPEED_MAX) - g_nMatrixSpeed = value; - } - - if(ERROR_SUCCESS == RegQueryValueEx(hkey, "Density", 0, 0, (BYTE *)&value, &len)) - { - if(value >= DENSITY_MIN && value <= DENSITY_MAX) - g_nDensity = value; - } - - if(ERROR_SUCCESS == RegQueryValueEx(hkey, "FontSize", 0, 0, (BYTE *)&value, &len)) - { - if(value >= FONT_MIN && value <= FONT_MAX) - g_nFontSize = value; - } - - if(ERROR_SUCCESS == RegQueryValueEx(hkey, "FontBold", 0, 0, (BYTE *)&value, &len)) - g_fFontBold = (value == 0 ? FALSE : TRUE); - - if(ERROR_SUCCESS == RegQueryValueEx(hkey, "Randomize", 0, 0, (BYTE *)&value, &len)) - g_fRandomizeMessages = (value == 0 ? FALSE : TRUE); - - len = 4096; - if(ERROR_SUCCESS == RegQueryValueEx(hkey, "FontName", 0, 0, (BYTE *)hugechar, &len)) - { - if(len > 0) - lstrcpy(g_szFontName, hugechar); - else - lstrcpy(g_szFontName, "Arial"); - - } - - len = 4096; - - if(ERROR_SUCCESS == RegQueryValueEx(hkey, "Messages", 0, 0 , (BYTE *)hugechar, &len)) - { - while(len > 0 && *hptr && isascii(*hptr)) - { - if(lstrlen(hptr) > 0) - { - lstrcpyn(g_szMessages[g_nNumMessages], hptr, MAXMSG_LENGTH); - ++g_nNumMessages; - hptr += lstrlen(hptr) + 1; - } - } - } - - RegCloseKey(hkey); - free(hugechar); -} - -void SaveSettings() -{ - HKEY hkey; - char *hugechar = malloc(4096); - char *msgptr = hugechar; - int totallen = 0; - int i,len; - LONG value; - - if(hugechar == 0) - return; - - hugechar[0] = '\0'; - msgptr = hugechar; - - RegCreateKeyEx(HKEY_CURRENT_USER, "Software\\Catch22\\Matrix Screen Saver", 0, - "", 0, KEY_WRITE, NULL, &hkey, NULL); - - value = g_nMessageSpeed; - RegSetValueEx(hkey, "MessageSpeed", 0, REG_DWORD, (BYTE *)&value, sizeof value); - - value = g_nMatrixSpeed; - RegSetValueEx(hkey, "MatrixSpeed", 0, REG_DWORD, (BYTE *)&value, sizeof value); - - value = g_nDensity; - RegSetValueEx(hkey, "Density", 0, REG_DWORD, (BYTE *)&value, sizeof value); - - value = g_nFontSize; - RegSetValueEx(hkey, "FontSize", 0, REG_DWORD, (BYTE *)&value, sizeof value); - - value = g_fRandomizeMessages; - RegSetValueEx(hkey, "Randomize", 0, REG_DWORD, (BYTE *)&value, sizeof value); - - value = g_fFontBold; - RegSetValueEx(hkey, "FontBold", 0, REG_DWORD, (BYTE *)&value, sizeof value); - - RegSetValueEx(hkey, "FontName", 0, REG_SZ, (BYTE *)g_szFontName, lstrlen(g_szFontName)); - - for(i = 0; i < g_nNumMessages; i++) - { - len = lstrlen(g_szMessages[i]); - - if(len > 0 && totallen+len < 4096) - { - lstrcpyn(msgptr, g_szMessages[i], 4096-totallen); - totallen += len + 1; - msgptr += len + 1; - } - } - - *msgptr = '\0'; - totallen++; - - RegSetValueEx(hkey, "Messages", 0, REG_MULTI_SZ, (BYTE *)hugechar, totallen); - RegCloseKey(hkey); - - free(hugechar); -} \ No newline at end of file