FireBirdLib - Topfield TMS PVR TAP Programming Library
ShowMessageWindow.c
Go to the documentation of this file.
1#include "libFireBird.h"
2
3dword fbl_rgn = 0;
4
5void ShowMessageWindow(char **content, dword pos_x, dword pos_y, byte fntSize, byte align, dword bdcolor, dword titlecolor, dword msgcolor, dword bgcolor, dword delay)
6{
8
9 dword extra_x, h_y, w = 0, h = 0, w1, i, j, extra, rahmen, y;
10 dword extra_y = 10;
11 word fbl_memrgn;
12
13 if(content[0] == NULL && content[1] == NULL) content[0] = "";
14
15 if(fntSize > FNT_Size_1926) fntSize = FNT_Size_1926;
16
17 if(fntSize == FNT_Size_1419)
18 {
19 extra_x = 14;
20 h_y = 19;
21 }
22 else if(fntSize == FNT_Size_1622)
23 {
24 extra_x = 16;
25 h_y = 22;
26 }
27 else
28 {
29 extra_x = 20;
30 h_y = 26;
31 }
32
33 h = extra_y;
34
35 if(content[0])
36 {
37 w = TAP_Osd_GetW(content[0], 0, fntSize) + extra_x;
38 h += h_y;
39 }
40
41 for(i = 1; (pos_y >= 576 ? 0 : pos_y) + h + h_y < 576 && content[i] != NULL; i++)
42 {
43 w1 = TAP_Osd_GetW(content[i], 0, fntSize) + extra_x;
44 h += h_y;
45 if(w1 > w) w = w1;
46 }
47
48 if(w > 720 - (pos_x >= 720 ? 0 : pos_x)) w = 720 - (pos_x >= 720 ? 0 : pos_x);
49
50 if(pos_x >= 720) pos_x = (720 - w) / 2;
51 if(pos_y >= 576) pos_y = (576 - h) / 2;
52
53 extra = extra_x / (align == ALIGN_CENTER ? 4 : 2);
54 rahmen = extra_x / 4;
55 y = 0;
56
57 fbl_memrgn = TAP_Osd_Create_Chk("ShowMessageWindow A", pos_x, pos_y, w, h, 0, OSD_Flag_MemRgn);
58
59 // draw border box
60 TAP_Osd_FillBox_Chk("ShowMessageWindow A", fbl_memrgn, 0, 0, w, h, bdcolor);
61
62 // draw background box
63 TAP_Osd_FillBox_Chk("ShowMessageWindow B", fbl_memrgn, rahmen, rahmen, w - rahmen * 2, h - rahmen * 2, bgcolor);
64
65 // show title
66 if(content[0])
67 {
68 TAP_Osd_PutS(fbl_memrgn, extra_x / 4, y + extra_y / 2, w - extra_x / 4, content[0], titlecolor, bgcolor, 0, fntSize, (byte) FALSE, ALIGN_CENTER);
69 y += h_y;
70 }
71
72 // show message lines
73 for(j = 1; j < i; j++)
74 {
75 TAP_Osd_PutS(fbl_memrgn, extra, y + extra_y / 2, w - extra, content[j], msgcolor, bgcolor, 0, fntSize, (byte) FALSE, align);
76 y += h_y;
77 }
78
79 if(fbl_rgn) TAP_Osd_Delete(fbl_rgn);
80 fbl_rgn = TAP_Osd_Create_Chk("ShowMessageWindow B", pos_x, pos_y, w, h, 0, 0);
81 TAP_Osd_Copy_Chk("ShowMessageWindow A", fbl_memrgn, fbl_rgn, 0, 0, w, h, 0, 0, FALSE);
82 TAP_Osd_Delete(fbl_memrgn);
83 TAP_Osd_Sync();
84
85 if(delay)
86 {
87 TAP_Delay(delay);
88 EndMessageWin(); // release rgn handle
89 }
90
91 TRACEEXIT();
92}
void EndMessageWin(void)
Definition: EndMessageWin.c:4
dword fbl_rgn
void ShowMessageWindow(char **content, dword pos_x, dword pos_y, byte fntSize, byte align, dword bdcolor, dword titlecolor, dword msgcolor, dword bgcolor, dword delay)
int TAP_Osd_Copy_Chk(char *Comment, word srcRgnNum, word dstRgnNum, dword srcX, dword srcY, dword w, dword h, dword dstX, dword dstY, bool sprite)
int TAP_Osd_Create_Chk(char *Comment, dword x, dword y, dword w, dword h, byte lutIdx, int flag)
int TAP_Osd_FillBox_Chk(char *Comment, word rgn, dword x, dword y, dword w, dword h, dword color)
#define TRACEEXIT()
Definition: libFireBird.h:1244
#define TRACEENTER()
Definition: libFireBird.h:1243