|
|
/*--------------------------------------------------------------------
/ / Screen.c / / (c) Vikram Madan, 8/26/96 / / *** DO NOT REMOVE THIS CODE FROM THE WAB!!!! *** / /---------------------------------------------------------------------*/
// Star == A1111
// MAX_STARS == A1112
// color == A1113
// acc_time == A1114
// acc_count == A1115
// x == A1116
// y == A1117
// oldx == A1118
// oldy == A1119
// xv == A1120
// yv == A1121
// xa == A1122
// ya == A1123
// fnCredit == A1124
// _Star == A1125
// _NameInfo == A1126
// width == A1127
// delx == A1128
// maxx == A1129
// minx == A1130
// tempx == A1131
// cspace == A1132
// delspace == A1133
// clr == A1134
// lpsz == A1135
// len == A1136
// THENAME_INFO == A1137
// LPTHENAME_INFO == A1138
// _credits == A1139
// lpstar == A1140
// nWidth == A1141
// nHeight == A1142
// hdc == A1143
// hdcTemp == A1144
// hWndPic == A1145
// Names == A1146
// rc == A1147
// hbrBlack == A1148
// hbm == A1149
// hbmOld == A1150
// CREDITS == A1151
// LPCREDITS == A1152
// Reset == A1153
// MoveStars == A1154
// InitStars == A1155
// lpcr == A1156
// InitStar == A1157
// ReInitStar == A1158
// InitNames == A1159
// srandom == A1160
// seed == A1161
// random == A1162
// ID_TIMER == A1163
// TIME_OUT == A1164
// cr_hWnd == A1165
// cr_hdc == A1166
// cr_hdcTemp == A1167
// cr_Names == A1168
// cr_rc == A1169
// cr_hbrBlack == A1170
// cr_hbm == A1171
// cr_hbmOld == A1172
// cr_star == A1173
// nCycle == A1174
// hPen == A1175
// hOldPen == A1176
// i == A1177
// count == A1178
// nlen == A1179
// j == A1180
// k == A1181
// lp == A1182
// size == A1183
// OldY == A1184
// R == A1185
// G == A1186
// B == A1187
// xStart == A1188
// yStart == A1189
// quadrant == A1190
// divisor == A1191
// table == A1192
// t == A1193
#include "_apipch.h"
INT_PTR CALLBACK A1124( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
typedef struct A1125 { int A1116,A1117; int A1118,A1119; int A1120,A1121; int A1122,A1123; COLORREF A1113; int A1114; int A1115; } A1111, * LPA1111;
#define A1112 100
#define NAMES_MAX 43
typedef struct A1126 { int A1116; int A1117; int A1127; int A1128; int A1129; int A1130; int A1131; int A1132; int A1133; COLORREF A1134; LPSTR A1135; int A1136; } A1137, * A1138;
typedef struct A1139 { LPA1111 A1140; int A1141,A1142; HDC A1143; HDC A1144; HWND A1145; A1137 * A1146; RECT A1147; HBRUSH A1148; HBITMAP A1149; HBITMAP A1150; } A1151, *A1152;
void A1153(HWND hWnd, HDC A1143, A1138 A1146); void A1154(A1152 A1156); void A1155(A1152 A1156); void A1157(LPA1111 A1140); void A1158(LPA1111 A1140); void A1159(A1138 A1146); void A1160(unsigned int A1161); int A1162(void);
#define A1163 999
#define A1164 25
int A1141,A1142;
void SCS(HWND hwndParent) { A1152 A1156 = LocalAlloc(LMEM_ZEROINIT, sizeof(A1151));
if(A1156) { if(!(A1156->A1140 = LocalAlloc(LMEM_ZEROINIT, sizeof(A1111)*A1112))) return; if(!(A1156->A1146 = LocalAlloc(LMEM_ZEROINIT, sizeof(A1137)*NAMES_MAX))) return;
A1160 ((UINT) GetTickCount());
DialogBoxParamA( hinstMapiX, (LPCSTR) MAKEINTRESOURCE(IDD_FORMVIEW), hwndParent, A1124, (LPARAM) A1156);
{ int A1177; for(A1177=0;A1177<NAMES_MAX;A1177++) { if(A1156->A1146[A1177].A1135) LocalFree(A1156->A1146[A1177].A1135); }
} if(A1156->A1146) LocalFree(A1156->A1146); if(A1156->A1140) LocalFree(A1156->A1140); LocalFree(A1156); } return; }
#define A1165 A1156->A1145
#define A1166 A1156->A1143
#define A1167 A1156->A1144
#define A1168 (A1156->A1146)
#define A1169 (A1156->A1147)
#define A1170 A1156->A1148
#define A1171 A1156->A1149
#define A1172 A1156->A1150
#define A1173 A1156->A1140
INT_PTR CALLBACK A1124(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) {
int A1177;
A1152 A1156 = (A1152) GetWindowLongPtr(hDlg, DWLP_USER);
switch(message) { case WM_INITDIALOG: A1156 = (A1152) lParam; SetWindowLongPtrA(hDlg, DWLP_USER, lParam); A1165 = GetDlgItem(hDlg,IDC_PIC); GetClientRect(A1165, &A1169); A1141 = A1169.right; A1142 = A1169.bottom; A1166 = GetDC(A1165); A1167 = CreateCompatibleDC(A1166); A1171 = CreateCompatibleBitmap(A1166, A1141, A1142); A1172 = SelectObject(A1167, A1171); SetBkColor(A1167, RGB(0,0,0)); SetTextColor(A1167, RGB(255,255,0)); SetBkMode(A1167, TRANSPARENT); A1170 = GetStockObject(BLACK_BRUSH); SetTimer(hDlg, A1163, A1164, NULL); A1155(A1156); A1159(A1168); A1153(A1165, A1167, A1168); break;
case WM_TIMER: { static int A1174 = 0; IF_WIN32(if (hDlg != GetForegroundWindow())) IF_WIN16(if (hDlg != GetFocus())) SendMessage (hDlg, WM_COMMAND, (WPARAM) IDCANCEL, 0); A1174++; if(A1174 > 4) A1174 = 0; FillRect(A1167, &A1169, A1170); A1154(A1156); for(A1177=0;A1177<A1112;A1177++) { HPEN A1175 = CreatePen(PS_SOLID,0,(A1173[A1177]).A1113); HPEN A1176 = SelectObject(A1167, A1175);
MoveToEx(A1167, A1173[A1177].A1118,A1173[A1177].A1119,NULL); LineTo(A1167, A1173[A1177].A1116, A1173[A1177].A1117);
SelectObject(A1167, A1176); DeleteObject(A1175);
} A1168[0].A1117--; for(A1177=1;A1177<NAMES_MAX;A1177++) { A1168[A1177].A1117--; if(A1174 == 1) { A1168[A1177].A1132 += A1168[A1177].A1133; if(A1168[A1177].A1132 == 0 || A1168[A1177].A1132 == 3) A1168[A1177].A1133 *= -1; } A1168[A1177].A1131 += A1168[A1177].A1128; if(A1168[A1177].A1131 <= A1168[A1177].A1130 || A1168[A1177].A1131 >= A1168[A1177].A1129) A1168[A1177].A1128 *= -1; }
for(A1177=0;A1177<NAMES_MAX;A1177++) { if (A1168[A1177].A1117 < 0) continue; if (A1168[A1177].A1117 > A1142) break; SetTextColor(A1167, A1168[A1177].A1134); SetTextCharacterExtra(A1167, A1168[A1177].A1132); TextOutA(A1167, (A1177==0) ? A1168[A1177].A1116 :A1168[A1177].A1131 - ((A1168[A1177].A1136-1)*A1168[A1177].A1132)/2, A1168[A1177].A1117, A1168[A1177].A1135, A1168[A1177].A1136); } BitBlt(A1166, 0, 0, A1141, A1142, A1167, 0, 0, SRCCOPY); if(A1168[NAMES_MAX-1].A1117 < 0) { A1153(A1165, A1167, A1168); } } break;
case WM_COMMAND: switch (GET_WM_COMMAND_ID(wParam, lParam)) { case IDCANCEL: KillTimer(hDlg, A1163); if(A1166) { ReleaseDC(A1165, A1166); A1166 = NULL; } if(A1171) { SelectObject(A1167, A1172); DeleteObject(A1171); A1171 = NULL; } if(A1167) { DeleteDC(A1167); A1167 = NULL; } EndDialog(hDlg, 1); break; } break;
case WM_CLOSE: case WM_KEYDOWN: case WM_SYSKEYDOWN: case WM_CHAR: case WM_KILLFOCUS: case WM_LBUTTONDOWN: case WM_RBUTTONDOWN: case WM_MBUTTONDOWN: case WM_LBUTTONUP: case WM_RBUTTONUP: case WM_MBUTTONUP: SendMessage (hDlg, WM_COMMAND, (WPARAM) IDCANCEL, 0); break;
default: return FALSE; break; }
return TRUE;
}
// very simple name encryption
//
// If you work on the WAB, you are welcome to add your name to the list below.. however, do not ever ever ever
// remove any name from this list.
// Each line that will be displayed on the screen should be represented as a seperate line in the array below.
// The first number in each line is the count of all characters that will be in that line.
// The encryption is simple with an 'a' subtracted from each character of the name. A key is provided for your
// convenience.
// When you have added a name to the WAB, you should then increment the NAMES_MAX constant by the number of lines
// you have added to the array below. Include all blank and 1 character lines in the count.
// The list below is in approximate chronological order order so please maintain that by adding
// additional names to the bottom
// ... and oh, you need to increase the NAMES_MAX structure by the added number of lines..
//
// Steps to trigger the credit screen:
// 1. Open WAB Main Window
// 2. Make sure you have atleast 1 entry in the List View
// 3. Select View Menu > Large Icon
// 4. Select View Menu > Sort By > Last Name
// 5. Make sure atleast 1 entry is selected in the List View
// 6. Press Ctrl Key + Alt Key + Shift Key all together and keep them pressed
// 7. Select File Menu > Properties
// 8. voila!
//
// The Key (for adding more names is)
// A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
// -32 -31 -30 -29 -28 -27 -26 -25 -24 -23 -22 -21 -20 -19 -18 -17 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7
//
// a b c d e f g h i j k l m n o p q r s t u v w x y z
// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21> 22 23 24 25
//
//
//
static const signed char nm[] = { // // W i n d o w s A d d r e s s B o o k
20,-10,8,13,3,14,22,18,-65,-32,3,3,17,4,18,18,-65,-31,14,14,10, 1,-65, 1,-65, // B r u c e K e l l e y
12,-31,17,20,2,4,-65,-22,4,11,11,4,24, 1,-65, // V i k r a m M a d a n
12,-11,8,10,17,0,12,-65,-20,0,3,0,13, 1,-65, // Y o r a m Y a a c o v i
13,-8,14,17,0,12,-65,-8,0,0,2,14,21,8, 1,-65, // J e a n K a i s e r
11,-23,4,0,13,-65,-22,0,8,18,4,17, 1,-65, // M e a d H i m e l s t e i n
15,-20,4,0,3,-65,-25,8,12,4,11,18,19,4,8,13, 1,-65, // T e o m a n S m i t h
12,-13,4,14,12,0,13,-65,-14,12,8,19,7, 1,-65, // M a r k D u r l e y
11,-20,0,17,10,-65,-29,20,17,11,4,24, 1,-65, // W i l l i a m L a i
11,-10,8,11,11,8,0,12,-65,-21,0,8, 1,-65, // E r i c B e r m a n
11,-28,17,8,2,-65,-31,4,17,12,0,13, 1,-65, // S u s a n H i g g s
11,-14,20,18,0,13,-65,-25,8,6,6,18, 1,-65, // G e o r g e H a t o u n
13, -26, 4, 14, 17, 6, 4, -65, -25, 0, 19, 14, 20, 13, 1, -65, // J o h n T a f o y a
11,-23,14,7,13,-65,-13,0,5,14,24,0, 1,-65, // G o r d o n M c E l r o y
14,-26,14,17,3,14,13,-65,-20,2,-28,11,17,14,24, 1,-65, // L a u r e n A n t o n o f f
15,-21,0,20,17,4,13,-65,-32,13,19,14,13,14,5,5, 1,-65, // D e b r a W e i s s m a n
14,-29,4,1,17,0,-65,-10,4,8,18,18,12,0,13, 1,-65, // N e i l B r e n c h
11,-19,4,8,11,-65,-31,17,4,13,2,7, 1,-65, // C h r i s E v a n s
11,-30,7,17,8,18,-65,-28,21,0,13,18, 1,-65, // J a s o n S t a j i c h
13,-23,0,18,14,13,-65,-14,19,0,9,8,2,7, 1,-65, // C h r i s D r e h e r
12,-30,7,17,8,18,-65,-29,17,4, 7,4, 17, 1,-65, // W e i B i n g Z h a n
12, -10, 4, 8, -31, 8, 13, 6, -65, -7, 7, 0, 13, 1, -65, };
void A1159(A1138 A1146) { int A1177; int A1178 = 0; for(A1177=0;A1177<NAMES_MAX;A1177++) { int A1179 = nm[A1178++]; int A1180; LPSTR A1182 = LocalAlloc(LMEM_ZEROINIT, A1179+1); A1146[A1177].A1135 = NULL;; if(!A1182) { DebugTrace(TEXT("InitStar LocalAlloc failed allocating %d bytes - error = %d\n"), (A1179+1), GetLastError()); for(A1180=0;A1180<A1179;A1180++) A1178++; continue; } for(A1180=0;A1180<A1179;A1180++) A1182[A1180] = nm[A1178++] + 'a'; A1182[A1179]='\0'; A1146[A1177].A1135 = A1182; A1146[A1177].A1136 = A1179; } return; }
void A1153(HWND hWnd, HDC A1143, A1138 A1146) {
RECT A1147; SIZE A1183; int A1184 = 0; int A1177,A1180; GetClientRect(hWnd, &A1147); A1146[0].A1117 = A1147.bottom; for(A1177=0;A1177<NAMES_MAX;A1177++) { GetTextExtentPoint32A(A1143,(LPSTR) A1146[A1177].A1135,A1146[A1177].A1136,&A1183); A1146[A1177].A1127 = A1183.cx; A1146[A1177].A1131 = A1146[A1177].A1116 = (A1147.right-A1183.cx)/2; A1146[A1177].A1129 = A1146[A1177].A1116 * 2 - 10; A1146[A1177].A1130 = 10; A1146[A1177].A1128 = A1162()%2 ? -1 : 1; A1146[A1177].A1134 = RGB(A1162()%128+128,A1162()%128+128,A1162()%192+64); A1146[A1177].A1133 = A1162()%2 ? -1 : 1; A1146[A1177].A1132 = 2; if(A1177>0) A1146[A1177].A1117 = A1146[A1177-1].A1117+A1184+1; A1184 = A1183.cy; }
A1146[0].A1134 = RGB(255,255,0); A1146[0].A1128 = 0; A1146[0].A1133 = 0; A1146[0].A1132 = 0;
for(A1177=1;A1177<NAMES_MAX;A1177++) { for(A1180=0;A1180<A1177;A1180++) { A1146[A1177].A1131 += A1146[A1177].A1128; if(A1146[A1177].A1131 <= A1146[A1177].A1130 || A1146[A1177].A1131 >= A1146[A1177].A1129) A1146[A1177].A1128 *= -1; } } return; }
void A1157(LPA1111 A1140) { int A1185 = A1162()%256; int A1186 = A1162()%256; int A1187 = A1162()%256; A1140->A1113 = RGB(A1185,A1186,A1187); A1158(A1140); A1140->A1114 = 1 + A1162()%3;
return; }
void A1158(LPA1111 A1140) { int A1188 = A1141/4; int A1189 = A1142/4; int A1190 = ((int)A1162()%4); int A1191 = 1 + (A1162()%3); switch(A1190) { case 0: A1140->A1116 = 2*A1188 + A1162()%(A1188); A1140->A1117 = A1189 + A1162()%(A1189); A1140->A1120 = 1+(A1162()%3); A1140->A1121 = -1-(A1162()%3); break; case 1: A1140->A1116 = 2*A1188 + A1162()%(A1188); A1140->A1117 = 2*A1189 + A1162()%(A1189); A1140->A1120 = 1+(A1162()%3); A1140->A1121 = 1+(A1162()%3); break; case 2: A1140->A1116 = A1188 + A1162()%(A1188); A1140->A1117 = 2*A1189 + A1162()%(A1189); A1140->A1120 = -1-(A1162()%3); A1140->A1121 = 1+(A1162()%3); break; case 3: A1140->A1116 = A1188 + A1162()%(A1188); A1140->A1117 = A1189 + A1162()%(A1189); A1140->A1120 = -1-(A1162()%3); A1140->A1121 = -1-(A1162()%3); break; } A1140->A1118 = A1140->A1116 - A1140->A1120; A1140->A1119 = A1140->A1117 - A1140->A1121; A1140->A1122 = A1140->A1120/A1191; A1140->A1123 = A1140->A1121/A1191; A1140->A1115 = 0; return; }
void A1155(A1152 A1156) { int A1177; for(A1177=0;A1177<A1112;A1177++) { A1157(&(A1173[A1177])); } return; }
void A1154(A1152 A1156) { int A1177; for(A1177=0;A1177<A1112;A1177++) { A1173[A1177].A1118 = A1173[A1177].A1116; A1173[A1177].A1119 = A1173[A1177].A1117; A1173[A1177].A1116 += A1173[A1177].A1120; A1173[A1177].A1117 += A1173[A1177].A1121;
if( (A1173[A1177].A1116 < 0) || (A1173[A1177].A1117 < 0) || (A1173[A1177].A1116 > A1141) || (A1173[A1177].A1117 > A1142)) A1158(&A1173[A1177]);
if (++A1173[A1177].A1115 == A1173[A1177].A1114) { A1173[A1177].A1115 = 0; A1173[A1177].A1120 += A1173[A1177].A1122; A1173[A1177].A1121 += A1173[A1177].A1123; } } return; }
static int A1192[55]; static int A1180, A1181;
void A1160(unsigned int A1161) { int A1177;
A1192[0] = A1161; for ( A1177 = 1 ; A1177 < 55 ; A1177++ ) { A1192[A1177] = A1192[A1177-1] * 3; A1192[A1177] += 715827883; } A1180 = 22; A1181 = 54; }
int A1162(void) { unsigned int A1193;
if (A1180 < 0) { A1160(0x8091A2B3); } A1193 = A1192[A1180] + A1192[A1181]; // overflow is ok.
A1192[A1181] = A1193;
A1180 = ( A1180 ) ? (A1180 - 1) : 54; A1181 = ( A1181 ) ? (A1181 - 1) : 54;
return (int)(A1193 >> 1); }
|