1 #ifndef MATRIX_INCLUDED 2 #define MATRIX_INCLUDED 3 4 #ifdef __cplusplus 5 extern "C" { 6 #endif 7 8 // 9 // Top BYTE of each glyph is used as flags 10 // (redraw state, intensity etc) 11 // 12 // Bottom BYTE of each glyph is the character value 13 // 14 // Bit: 15 14 13-8 | 7-0 15 // 16 // [Redraw][Blank][Intensity] [Glyph] 17 // 18 typedef unsigned short GLYPH; 19 20 #define GLYPH_REDRAW 0x8000 21 #define GLYPH_BLANK 0x4000 22 23 // 24 // The "matrix" is basically an array of these 25 // column structures, positioned side-by-side 26 // 27 typedef struct 28 { 29 BOOL state; 30 int countdown; 31 32 BOOL started; 33 int runlen; 34 35 int blippos; 36 int bliplen; 37 38 int length; 39 GLYPH *glyph; 40 41 } MATRIX_COLUMN; 42 43 typedef struct 44 { 45 int width; 46 int height; 47 int numcols; 48 int numrows; 49 50 // bitmap containing glyphs. 51 HDC hdcBitmap; 52 HBITMAP hbmBitmap; 53 54 MATRIX_MESSAGE *message; 55 56 MATRIX_COLUMN column[1]; 57 58 } MATRIX; 59 60 GLYPH RandomGlyph(int intensity); 61 void DrawGlyph(MATRIX *matrix, HDC hdc, int xpos, int ypos, GLYPH glyph); 62 63 HWND CreateScreenSaveWnd(HWND hwndParent, RECT *rect); 64 void InitScreenSaveClass(); 65 66 #ifdef __cplusplus 67 } 68 #endif 69 70 #endif 71