13 static const char *
DESCRIPTION =
"Demo of arbitrary OSD setup";
27 virtual void Show(
void);
47 tArea Area = { 0, 0, 99, 199, 4 };
59 case kUp:
if (
y > 0)
y--;
break;
60 case kDown:
if (
y < 196)
y++;
break;
61 case kLeft:
if (
x > 0)
x--;
break;
68 default:
return state;
92 virtual void Show(
void);
112 const int h = Font->
Height(s);
113 int w = Font->
Width(s);
139 int ScrollWaitTime = 1000;
140 int ScrollLineTime = 200;
141 int ScrollTotalTime = 8000;
143 uint64_t ScrollStartTime = 0;
144 int ScrollLineNumber = 0;
145 cPoint MoveStart, MoveEnd;
146 cPoint TileStart, TileEnd;
147 cPoint ScrollStart, ScrollEnd;
149 int StartLine = Line;
154 bool Animated =
false;
157 double t =
min(
double(Now - Start) / FadeTime, 1.0);
165 double t =
min(
double(Now - Start) / FadeTime, 1.0);
169 FadeOutPixmap = NULL;
173 double t =
min(
double(Now - Start) / MoveTime, 1.0);
174 int x = MoveStart.
X() + t * (MoveEnd.
X() - MoveStart.
X());
175 int y = MoveStart.
Y() + t * (MoveEnd.
Y() - MoveStart.
Y());
184 double t =
min(
double(Now - Start) / TileTime, 1.0);
185 int x = TileStart.
X() + t * (TileEnd.
X() - TileStart.
X());
186 int y = TileStart.
Y() + t * (TileEnd.
Y() - TileStart.
Y());
195 if (
int(Now - Start) > ScrollWaitTime) {
196 if (ScrollStartTime) {
197 double t =
min(
double(Now - ScrollStartTime) / ScrollLineTime, 1.0);
198 int x = ScrollStart.
X() + t * (ScrollEnd.
X() - ScrollStart.
X());
199 int y = ScrollStart.
Y() + t * (ScrollEnd.
Y() - ScrollStart.
Y());
202 if (
int(Now - Start) < ScrollTotalTime) {
209 ScrollStartTime = Now;
212 FadeOutPixmap = ScrollPixmap;
219 ScrollStartTime = Now;
263 FadeInPixmap = NextPixmap;
276 for (
int y = 0; y < h; y++) {
277 for (
int x = 0; x < w; x++)
281 Pixmap->DrawImage(
cPoint(0, 0), Image);
289 MovePixmap = NextPixmap;
305 MovePixmap = TilePixmap;
314 const char *Text =
"Scrolling Pixmaps";
315 int w = OsdFont->
Width(Text);
316 int h = OsdFont->
Height();
322 ScrollPixmap = Pixmap;
323 ScrollStart.
Set(0, 0);
324 ScrollEnd.
Set(0, -h);
331 const char *Text =
"Animation";
332 const int Size = SmlFont->
Width(Text) + 10;
333 const int NumDots = 12;
334 const int AnimFrames = NumDots;
340 const int Diameter = Size / 5;
341 int xc = Size / 2 - Diameter / 2;
342 for (
int Frame = 0; Frame < AnimFrames; Frame++) {
344 int yc = Frame * Size + Size / 2 - Diameter / 2;
346 int Delta = Color / NumDots / 3;
347 for (
int a = 0; a < NumDots; a++) {
348 double t = 2 * M_PI * (Frame + a) / NumDots;
349 int x = xc + ((Size - Diameter) / 2 - 5) * cos(t);
350 int y = yc + ((Size - Diameter) / 2 - 5) * sin(t);
357 FadeInPixmap = AnimPixmap;
371 if (
cursor != OldCursor) {
372 MovePixmap = AnimPixmap;
374 MoveEnd = OldCursor =
cursor;
385 if (Delta < FrameTime)
427 default:
return state;
446 virtual bool Start(
void);