From f31166fa5ce3b9240cbd03d2b9bc39cf38adcf73 Mon Sep 17 00:00:00 2001 From: Magnus Olsen Date: Mon, 17 Apr 2006 10:54:14 +0000 Subject: [PATCH] delete matrix I did someting wrong with the import svn path=/trunk/; revision=21628 --- .../screensavers/matrix/matrix.rbuild | 34 -- .../screensavers/matrix/matrix/Permission.txt | 17 - .../screensavers/matrix/matrix/ReadMe.txt | 32 -- .../screensavers/matrix/matrix/config.c | 310 ------------ .../screensavers/matrix/matrix/cursor1.cur | Bin 326 -> 0 bytes .../screensavers/matrix/matrix/globals.h | 63 --- .../screensavers/matrix/matrix/icon1.ico | Bin 4398 -> 0 bytes .../screensavers/matrix/matrix/matrix.bmp | Bin 31656 -> 0 bytes .../screensavers/matrix/matrix/matrix.c | 445 ------------------ .../screensavers/matrix/matrix/matrix.dsp | 158 ------- .../screensavers/matrix/matrix/matrix.h | 70 --- .../screensavers/matrix/matrix/matrix.rbuild | 34 -- .../screensavers/matrix/matrix/matrix.rc | 167 ------- .../screensavers/matrix/matrix/message.c | 250 ---------- .../screensavers/matrix/matrix/message.h | 32 -- .../screensavers/matrix/matrix/password.c | 68 --- .../screensavers/matrix/matrix/resource.h | 35 -- .../screensavers/matrix/matrix/screensave.c | 161 ------- .../screensavers/matrix/matrix/settings.c | 158 ------- 19 files changed, 2034 deletions(-) delete mode 100644 reactos/base/applications/screensavers/matrix/matrix.rbuild delete mode 100644 reactos/base/applications/screensavers/matrix/matrix/Permission.txt delete mode 100644 reactos/base/applications/screensavers/matrix/matrix/ReadMe.txt delete mode 100644 reactos/base/applications/screensavers/matrix/matrix/config.c delete mode 100644 reactos/base/applications/screensavers/matrix/matrix/cursor1.cur delete mode 100644 reactos/base/applications/screensavers/matrix/matrix/globals.h delete mode 100644 reactos/base/applications/screensavers/matrix/matrix/icon1.ico delete mode 100644 reactos/base/applications/screensavers/matrix/matrix/matrix.bmp delete mode 100644 reactos/base/applications/screensavers/matrix/matrix/matrix.c delete mode 100644 reactos/base/applications/screensavers/matrix/matrix/matrix.dsp delete mode 100644 reactos/base/applications/screensavers/matrix/matrix/matrix.h delete mode 100644 reactos/base/applications/screensavers/matrix/matrix/matrix.rbuild delete mode 100644 reactos/base/applications/screensavers/matrix/matrix/matrix.rc delete mode 100644 reactos/base/applications/screensavers/matrix/matrix/message.c delete mode 100644 reactos/base/applications/screensavers/matrix/matrix/message.h delete mode 100644 reactos/base/applications/screensavers/matrix/matrix/password.c delete mode 100644 reactos/base/applications/screensavers/matrix/matrix/resource.h delete mode 100644 reactos/base/applications/screensavers/matrix/matrix/screensave.c delete mode 100644 reactos/base/applications/screensavers/matrix/matrix/settings.c 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 048f06b4aefde54e0ff825ccb5a5db4d7001d513..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 326 zcmZQzU}9ioP*7k10|Q0|1~DK@1BexX*a3(cfe;L!6oi8y|NsAw;0zE8=!O9W0CiJ? AlK=n! 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 8c268f3b341272df470e615d8e56860f4e79c7f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4398 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 ULf|U|zCz$D1inJx{}TxOKQSU2SpWb4 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