FireBirdLib - Topfield TMS PVR TAP Programming Library
OSDCopy.c
Go to the documentation of this file.
1#include "libFireBird.h"
2
3void OSDCopy(word rgn, dword x, dword y, dword w, dword h, word items, eCopyDirection direction)
4{
6
7 word n;
8 dword nw, nh;
9 dword dx, dy;
10 dword rw, rh;
11 dword xw, xh;
12
13 nw = w;
14 nh = h;
15 items++;
16
17 // copy by doubling
18 rw = GetOSDRegionWidth(rgn);
19 rh = GetOSDRegionHeight(rgn);
20
21 for(n = 1; n <= items >> 1; n <<= 1)
22 {
23 dx = (direction == X ? x + nw : x);
24 dy = (direction == X ? y : y + nh);
25
26 if((dx + nw) <= rw) xw = nw;
27 else xw = rw - dx;
28
29 if((dy + nh) <= rh) xh = nh;
30 else xh = rh - dy;
31
32 TAP_Osd_Copy_Chk("OSDCopy A", rgn, rgn, x, y, xw, xh, dx, dy, TRUE);
33
34 if(direction == X) nw <<= 1;
35 else nh <<= 1;
36 }
37
38 n = items - n;
39
40 //copy remaining part
41 if(n)
42 {
43 if(direction == X) w = n * w;
44 else h = n * h;
45
46 dx = (direction == X ? x + nw : x);
47 dy = (direction == X ? y : y + nh);
48
49 if((dx + w) <= rw) xw = w;
50 else xw = rw - dx;
51
52 if((dy + h) <= rh) xh = h;
53 else xh = rh - dy;
54
55 TAP_Osd_Copy_Chk("OSDCopy B", rgn, rgn, x, y, xw, xh, dx, dy, TRUE);
56 }
57
58 TRACEEXIT();
59}
word GetOSDRegionHeight(word Region)
word GetOSDRegionWidth(word Region)
void OSDCopy(word rgn, dword x, dword y, dword w, dword h, word items, eCopyDirection direction)
Definition: OSDCopy.c:3
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)
#define TRACEEXIT()
Definition: libFireBird.h:1244
eCopyDirection
Definition: libFireBird.h:289
@ X
Definition: libFireBird.h:290
#define TRACEENTER()
Definition: libFireBird.h:1243