FireBirdLib - Topfield TMS PVR TAP Programming Library
OSDMenuDrawCursor.c
Go to the documentation of this file.
1#include "FBLib_TMSOSDMenu.h"
2
3void OSDMenuDrawCursor(dword x, dword y, dword w, dword h)
4{
5 TYPE_GrData *OSDMenuLightBlueCursorGd, *OSDMenuDarkBlueCursorGd;
6 word chunks, remainder, cx;
7 dword Color;
8
10
11 if (MenuCursorType == CT_Hide) return;
12
14 {
15 Color = RGB(90, 205, 236);
16 TAP_Osd_FillBox(OSDRgn, x, y, w, 2, Color);
17 TAP_Osd_FillBox(OSDRgn, x + w - 2, y, 2, h, Color);
18 TAP_Osd_FillBox(OSDRgn, x, y + h - 2, w, 2, Color);
19 TAP_Osd_FillBox(OSDRgn, x, y, 2, h, Color);
20 }
21 else
22 {
23 switch (h)
24 {
25 case 19:
26 OSDMenuLightBlueCursorGd = &_Cursor_Blue_Tiny_Gd;
27 OSDMenuDarkBlueCursorGd = &_Cursor_Dark_Tiny_Gd;
28 break;
29
30 case 23:
31 OSDMenuLightBlueCursorGd = &_Cursor_Blue_Small_Gd;
32 OSDMenuDarkBlueCursorGd = &_Cursor_Dark_Small_Gd;
33 break;
34
35 default:
36 OSDMenuLightBlueCursorGd = &_Cursor_Blue_Normal_Gd;
37 OSDMenuDarkBlueCursorGd = &_Cursor_Dark_Normal_Gd;
38 break;
39 }
40
41 //Cursor-Stück in eine Memory-Region kopieren
43 {
45 OSDMenuSelectionBarRgn = TAP_Osd_Create(0, 0, OSDMenuLightBlueCursorGd->width, OSDMenuLightBlueCursorGd->height, 0, OSD_Flag_MemRgn);
46 TAP_Osd_PutGd(OSDMenuSelectionBarRgn, 0, 0, OSDMenuLightBlueCursorGd, FALSE);
48 }
49
50 chunks = w / OSDMenuLightBlueCursorGd->width;
51 remainder = w % OSDMenuLightBlueCursorGd->width;
52 cx = x;
53
54 //Stücke
55 for (; chunks > 0; chunks--)
56 {
57 TAP_Osd_Copy(OSDMenuSelectionBarRgn, OSDRgn, 0, 0, OSDMenuLightBlueCursorGd->width, h, cx, y, FALSE);
58 cx += OSDMenuLightBlueCursorGd->width;
59 }
60
61 //Restliche Länge
62 if (remainder) TAP_Osd_Copy(OSDMenuSelectionBarRgn, OSDRgn, 0, 0, remainder, h, cx, y, FALSE);
63
65 {
66 //Falls via OSDMenuSetCursor ausgewählt, dann den dunklen Cursor drübermalen
67 //Cursor-Stück in eine Memory-Region kopieren
69 {
71 OSDMenuSelectionBarRgn = TAP_Osd_Create(0, 0, OSDMenuDarkBlueCursorGd->width, OSDMenuDarkBlueCursorGd->height, 0, OSD_Flag_MemRgn);
72 TAP_Osd_PutGd(OSDMenuSelectionBarRgn, 0, 0, OSDMenuDarkBlueCursorGd, FALSE);
74 }
75
76 chunks = (w - 4) / OSDMenuDarkBlueCursorGd->width;
77 remainder = (w - 4) % OSDMenuDarkBlueCursorGd->width;
78 cx = x + 2;
79
80 //Stücke
81 for (; chunks > 0; chunks--)
82 {
83 TAP_Osd_Copy(OSDMenuSelectionBarRgn, OSDRgn, 0, 0, OSDMenuDarkBlueCursorGd->width, h, cx, y, FALSE);
84 cx += OSDMenuDarkBlueCursorGd->width;
85 }
86
87 //Restliche Länge
88 if (remainder) TAP_Osd_Copy(OSDMenuSelectionBarRgn, OSDRgn, 0, 0, remainder, h, cx, y, FALSE);
89 }
90 }
91
92 TRACEEXIT();
93}
tOSDMenuLastCursorType OSDMenuLastCursor
Definition: OSDMenuInit.c:10
TYPE_GrData _Cursor_Dark_Normal_Gd
TYPE_GrData _Cursor_Blue_Tiny_Gd
TYPE_GrData _Cursor_Dark_Tiny_Gd
TYPE_GrData _Cursor_Dark_Small_Gd
TYPE_GrData _Cursor_Blue_Small_Gd
@ LCT_Blue
@ LCT_BlueDark
TYPE_GrData _Cursor_Blue_Normal_Gd
word OSDRgn
Definition: OSDMenuInit.c:4
word OSDMenuSelectionBarRgn
Definition: OSDMenuInit.c:4
tCursorType MenuCursorType
Definition: OSDMenuInit.c:9
void OSDMenuDrawCursor(dword x, dword y, dword w, dword h)
#define TRACEEXIT()
Definition: libFireBird.h:1244
#define TRACEENTER()
Definition: libFireBird.h:1243
@ CT_Dark
Definition: libFireBird.h:2749
@ CT_Hide
Definition: libFireBird.h:2751
@ CT_Box
Definition: libFireBird.h:2750