ZealOS/src/System/ZSplash.ZC
2023-03-22 22:35:11 -04:00

134 lines
3.8 KiB
HolyC
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

$SP,"<1>",BI=1$
#define STRING_CENTER_X_OFFSET 1
#define STRING_CENTER_Y_OFFSET 80
#define DISPLAY_RECT_HEIGHT 8
#define WIN_TOP TEXT_ROWS / 3 // each 1 represents
#define WIN_LEFT TEXT_COLS / 3 // 8 pixels.
DefineListLoad("ST_MOTTOS", "Divine Intellect Inside\0"
"Modern Innovation\0"
"Programming Enlightenment\0"
"LoseThos Resurrected\0"
"Unrestricted Potential\0"
"Ring-0 64-Bit Operating System\0"
"Simplicity Perfected\0");
Sleep((Now + counts.timer) & 0x7F); // increase entropy of motto selection
U8* display_string = MStrPrint("%S", "DD_OS_NAME_VERSION");
U8* motto_string = MStrPrint("%Z", RandU8 % DefineCount("ST_MOTTOS"), "ST_MOTTOS");
I64 display_string_offset = StrLen(display_string) / 2 * 8 - STRING_CENTER_X_OFFSET;
I64 motto_string_offset = StrLen(motto_string) / 2 * 8;
I64 splash_r[4][4];
U0 DrawIt(CTask *,CDC *dc)
{
I64 *old_r = dc->r;
I64 screen_center_x_pix = GR_WIDTH / 2; // each 1 represents
I64 screen_center_y_pix = (GR_HEIGHT / 2); // single pixels.
dc->x = screen_center_x_pix - (WIN_LEFT * 8); // to plot in the center, we put dc at the screen center in pixels,
dc->y = screen_center_y_pix - (WIN_TOP * 8); // minus the window position (times 8 since win row/col variables are 1:8 ratio.)
dc->z = GR_Z_ALL; // the result is the position in the current window that aligns to center of screen.
dc->flags |= DCF_TRANSFORMATION;
DCDepthBufAlloc(dc);
DCMat4x4Set(dc, splash_r); //This assigns to dc->r and sets r_norm.
DCDepthBufReset(dc);
Sprite3(dc, 0, 0, 0, $IB,"<1>",BI=1$); // plot the sprite directly at the position of dc.
dc->color = LTGRAY;
GrRect(dc, dc->x - display_string_offset, dc->y - STRING_CENTER_Y_OFFSET, StrLen(display_string) * 8, DISPLAY_RECT_HEIGHT);
dc->color = BLACK;
GrPrint(dc, dc->x - display_string_offset, dc->y - STRING_CENTER_Y_OFFSET, display_string);
dc->color = LTGRAY;
GrRect(dc, dc->x - motto_string_offset, dc->y + STRING_CENTER_Y_OFFSET, StrLen(motto_string) * 8, DISPLAY_RECT_HEIGHT);
dc->color = BLACK;
GrPrint(dc, dc->x - motto_string_offset, dc->y + STRING_CENTER_Y_OFFSET, motto_string);
dc->r = old_r;
}
U0 DrawNoMouse(CDC *dc,I64 x,I64 y)
{
no_warn dc, x, y;
}
U0 ZSplash()
{
F64 <EFBFBD> = 0.3, <EFBFBD> = 0;
CTask *bg_task = User;
WinToTop(bg_task);
WinBorder(, bg_task);
WinMax(bg_task);
DocClear(bg_task->put_doc);
Bts(&bg_task->put_doc->flags, DOCf_HIDE_CURSOR);
AutoComplete(OFF);
WinToTop;
Fs->win_top = WIN_TOP;
Fs->win_left = WIN_LEFT;
Fs->win_right = WIN_LEFT * 2;
Fs->win_bottom = WIN_TOP * 2;
Fs->draw_it = &DrawIt;
DocClear(Fs->border_doc, TRUE);
StrCopy(Fs->task_title, display_string);
gr.fp_draw_mouse = &DrawNoMouse;
Bts(&Fs->put_doc->flags, DOCf_HIDE_CURSOR);
MouseHardEnable(FALSE);
while (!CharScan)
{
Mat4x4IdentEqu(splash_r);
Mat4x4RotY(splash_r, <EFBFBD>);
Mat4x4RotX(splash_r, <EFBFBD>);
Sleep(20);
<EFBFBD> += .03;
WinToTop;
}
gr.fp_draw_mouse = &DrawStdMouse;
MouseHardEnable(TRUE);
FlushMessages;
Spawn(&MouseHardDriverInstall);
Kill(bg_task);
AutoComplete(ON);
}
ZSplash;*#<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EFBFBD><EFBFBD>22<EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2222<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0
 0
0
0 0  0  0 0 00 0 000 0 0 0
 000 0 0 0 000000
0
0
0
0
0
0