1 ////////////////////////////////////////////////////////////////////////////////
3 static void tDrawFatalBox (K8Term
*term
, const char *msg
) {
5 static const char *title
= " GURU MEDITAION ";
6 static const char *clr
= "\x1b[0;1;33;41m";
7 static const char *clrdef
= "\x1b[0m";
8 int mlen
, tlen
= strlen(title
), wdt
= tlen
+4;
10 if (msg
== NULL
) msg
= "";
11 if ((mlen
= strlen(msg
))+4 > wdt
) wdt
= mlen
+4;
13 k8t_ttyPutStr(term
, clr
);
15 if (term
->col
<= mlen
+4) {
16 k8t_ttyPutStr(term
, msg
);
20 term
->charset
= K8T_MODE_GFX1
;
21 term
->mode
&= ~K8T_MODE_GFX0
;
22 term
->mode
|= K8T_MODE_GFX1
;
23 //term->c.attr.attr |= K8T_ATTR_REVERSE;
26 int left
= (wdt
-2-mlen
)/2, cnt
= left
+1+mlen
;
28 k8t_ttyPutStr(term
, "lq");
29 k8t_ttyPutStr(term
, "\x1b[37m");
30 k8t_ttyPutStr(term
, title
);
31 k8t_ttyPutStr(term
, "\x1b[33m");
32 k8t_ttyPutStr(term
, "qk");
34 k8t_ttyPutStr(term
, clrdef
);
35 k8t_ttyPutStr(term
, "\r\n");
36 k8t_ttyPutStr(term
, clr
);
38 k8t_tmPutC(term
, "x");
39 while (left
-- > 0) k8t_tmPutC(term
, " ");
40 term
->charset
= K8T_MODE_GFX0
;
41 k8t_ttyPutStr(term
, msg
);
42 term
->charset
= K8T_MODE_GFX1
;
43 while (cnt
++ < wdt
-1) k8t_tmPutC(term
, " ");
44 k8t_ttyPutStr(term
, "x");
46 k8t_ttyPutStr(term
, clrdef
);
47 k8t_ttyPutStr(term
, "\r\n");
48 k8t_ttyPutStr(term
, clr
);
50 k8t_tmPutC(term
, "m");
51 for (int f
= 2; f
< wdt
; ++f
) k8t_tmPutC(term
, "q");
52 k8t_tmPutC(term
, "j");
54 int left
= (wdt
-2-tlen
)/2, cnt
= left
+1+tlen
;
56 k8t_tmPutC(term
, "l");
57 while (left
-- > 0) k8t_tmPutC(term
, "q");
58 k8t_ttyPutStr(term
, "\x1b[37m");
59 k8t_ttyPutStr(term
, title
);
60 k8t_ttyPutStr(term
, "\x1b[33m");
61 while (cnt
++ < wdt
-1) k8t_tmPutC(term
, "q");
62 k8t_tmPutC(term
, "k");
64 k8t_ttyPutStr(term
, clrdef
);
65 k8t_ttyPutStr(term
, "\r\n");
66 k8t_ttyPutStr(term
, clr
);
68 k8t_ttyPutStr(term
, "x ");
69 term
->charset
= K8T_MODE_GFX0
;
70 k8t_ttyPutStr(term
, msg
);
71 term
->charset
= K8T_MODE_GFX1
;
72 k8t_ttyPutStr(term
, " x");
74 k8t_ttyPutStr(term
, clrdef
);
75 k8t_ttyPutStr(term
, "\r\n");
76 k8t_ttyPutStr(term
, clr
);
78 k8t_tmPutC(term
, "m");
79 for (int f
= 2; f
< wdt
; ++f
) k8t_tmPutC(term
, "q");
80 k8t_tmPutC(term
, "j");
83 term
->charset
= K8T_MODE_GFX0
;
84 //term->c.attr.attr &= ~K8T_ATTR_REVERSE;
88 k8t_ttyPutStr(term
, "\x1b[0m");
92 static void tdrawfatalmsg (K8Term
*term
, const char *msg
) {
93 if (term
!= NULL
&& msg
!= NULL
) {
94 k8t_tmResetMode(term
);
95 term
->c
.state
|= K8T_CURSOR_HIDE
;
96 //k8t_tmMoveTo(0, term->c.y);
97 if (term
->c
.x
!= 0) k8t_ttyPutStr(term
, "\x1b[0m\r\n");
99 tDrawFatalBox(term
, msg
);
101 k8t_tmWantRedraw(term
, 1);
102 k8t_tmFullDirty(term
);