/*-------------------------------------------------------------------- / / 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;A1177A1146[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= A1168[A1177].A1129) A1168[A1177].A1128 *= -1; } for(A1177=0;A1177 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;A11770) 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= 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 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); }