MHEG5  18.9.0
MHEG5 Documentation
mh5dispBttnRT.c
Go to the documentation of this file.
1 /*******************************************************************************
2  * Copyright © 2014 The DTVKit Open Software Foundation Ltd (www.dtvkit.org)
3  * Copyright © 2012 Ocean Blue Software Ltd
4  *
5  * This file is part of a DTVKit Software Component
6  * You are permitted to copy, modify or distribute this file subject to the terms
7  * of the DTVKit 1.0 Licence which can be found in licence.txt or at www.dtvkit.org
8  *
9  * THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
10  * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES
11  * OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
12  *
13  * If you or your organisation is not a member of DTVKit then you have access
14  * to this source code outside of the terms of the licence agreement
15  * and you are expected to delete this and any associated files immediately.
16  * Further information on DTVKit, membership and terms can be found at www.dtvkit.org
17  *******************************************************************************/
25 /*---includes for this file--------------------------------------------------*/
26 #include <string.h>
27 
28 #include "mh5application.h"
29 #include "mh5base.h"
30 #include "mh5display.h"
31 #include "mh5classes.h"
32 #include "mh5queue.h"
33 #include "mh5object.h"
34 #include "mh5final.h"
35 #include "mh5drawtext.h"
36 #include "mg_api.h"
37 #include "mh5memory.h"
38 #include "mh5profile.h"
39 #include "mh5streamevent.h"
40 #include "mh5debug.h"
41 #include "mh5dvpos.h"
42 #include "tmcolor.h"
43 #include "mh5dispBttnRT.h"
44 
45 /*---constant definitions for this file--------------------------------------*/
46 
47 #define MAX(a, b) (((a) > (b)) ? (a) : (b))
48 #define MIN(a, b) (((a) < (b)) ? (a) : (b))
49 
50 
51 /*---local typedef structs for this file-------------------------------------*/
52 
53 /*---local (static) variable declarations for this file----------------------*/
54 #ifndef MHEG5PROFILE_UK1_06
55 
56 /* Flag to indicate whether an RTGraphics object is currently playing */
57 static MHEG5Bool rtgraphicsPlaying = MHEG5FALSE;
58 /* Flag to indicate whether the current RTGraphics object is frozen */
59 static MHEG5Bool rtgraphicsFreeze = MHEG5FALSE;
60 
61 /* Multiplex reference for the currently playing RTGraphics object, and a flag
62  * to indicate that this has been updated.
63  */
64 static S_DvbLocator rtgraphicsMultiplexReference;
65 static MHEG5Bool rtgraphicsMultiplexReferenceChanged;
66 
67 /*---local function definitions----------------------------------------------*/
68 
69 /*---global function definitions---------------------------------------------*/
70 
84 void OSDrtgraphicsPlay(S_DvbLocator *multiplexReference,
85  MHEG5Bool terminating)
86 {
87  INFO_PRINT(("OSDrtgraphicsPlay((0x%x 0x%x 0x%x 0x%x))\n", multiplexReference->originalNetworkId, multiplexReference->transportStreamId, multiplexReference->serviceId, multiplexReference->componentTag));
88 }
89 
96 {
97  INFO_PRINT(("OSDrtgraphicsFreeze()\n"));
98 }
99 
105 {
106  INFO_PRINT(("OSDrtgraphicsStop()\n"));
107 }
108 
121 static void OSDdisplayRectangle(int x,
122  int y,
123  int width,
124  int height,
125  int lineWidth,
126  int lineStyle,
127  OSDColor lineColour,
128  OSDColor fillColour)
129 {
130  const S_REGION overlap = {0, 0, 720, 576};
131  MG_OSDdisplayRectangle( &overlap, x, y, width, height, lineWidth, lineColour, fillColour);
132 }
133 
134 /*
135  Generic Display Part
136  */
137 
154 void MHEG5displayLineart(int x1, int y1, int boxX1, int boxY1, int boxX2, int boxY2,
155  MHEG5Bool bbbox, MHEG5Int lineWidth, MHEG5Int lineStyle,
156  MHEG5Colour *refLineColour, MHEG5Colour *refFillColour)
157 {
158  OSDColor lineColour, fillColour;
159 
160  lineColour = MHEG5displayColour(refLineColour);
161  fillColour = MHEG5displayColour(refFillColour);
162 
163  if (bbbox)
164  OSDdisplayRectangle(boxX1, boxY1, boxX2 - boxX1, boxY2 - boxY1, lineWidth, lineStyle, lineColour, fillColour);
165 /*
166  ToDo: What shall be displayed here ?
167  */
168 }
169 
180 void MHEG5displayHotspot(MHEG5Visible *visible, int x1, int y1, int x2, int y2)
181 {
182  MHEG5Colour backgroundColour;
183  MHEG5Colour *pBorderColour = NULL;
184 
185  if (((MHEG5Button *)visible)->selectionStatus)
186  {
187  if (((MHEG5Button *) visible)->buttonColour.type == MHEG5NONE)
188  {
189  pBorderColour = &(MHEG5getCurrentApplication()->buttonRefColour);
190  }
191  else
192  {
193  pBorderColour = &((MHEG5Button *) visible)->buttonColour;
194  }
195  }
196  else if (((MHEG5Button *)visible)->interactible.highlightStatus &&
197  ((MHEG5Button *)visible)->interactible.engineResp)
198  {
199  if (((MHEG5Button *) visible)->interactible.highlightRefColour.type == MHEG5NONE)
200  {
201  pBorderColour = &(MHEG5getCurrentApplication()->highlightRefColour);
202  }
203  else
204  {
205  pBorderColour = &((MHEG5Button *) visible)->interactible.highlightRefColour;
206  }
207  }
208 
209  if (pBorderColour)
210  {
211  MHEG5genericSet(&backgroundColour, FULLY_TRANSPARENT);
212 
213  MHEG5displayLineart(visible->position[0], visible->position[1], x1, y1, x2, y2,
214  MHEG5TRUE,
216  pBorderColour, &backgroundColour);
217  }
218 }
219 
230 void MHEG5displayPushbutton(MHEG5Visible *visible, int x1, int y1, int x2, int y2)
231 {
232  MHEG5Button *button = (MHEG5Button *)visible;
233  MHEG5Pushbutton *pushbutton = (MHEG5Pushbutton *)visible;
234  unsigned char black[4], white[4];
235  MHEG5Colour *pButtonColour;
236  MHEG5Colour *pHighlightRefColour;
237 
238  if (button->buttonColour.type == MHEG5NONE)
239  {
240  pButtonColour = &(MHEG5getCurrentApplication()->buttonRefColour);
241  }
242  else
243  {
244  pButtonColour = &button->buttonColour;
245  }
246 
248  {
249  pHighlightRefColour = &(MHEG5getCurrentApplication()->highlightRefColour);
250  }
251  else
252  {
253  pHighlightRefColour = &button->interactible.highlightRefColour;
254  }
255 
256  white[3] = black[3] = 0;
257  white[0] = white[1] = white[2] = 200;
258  black[0] = black[1] = black[2] = 50;
259 
260  /* Draw background of the button */
261  OSDdisplayRectangle(visible->position[0], visible->position[1],
262  visible->boxSize[0], visible->boxSize[1],
263  1, MHEG_LINE_STYLE_SOLID, MHEG5displayColour(pButtonColour),
264  MHEG5displayColour(pButtonColour));
265 
266  if (pushbutton->label.len > 0)
267  {
268  MHEG5Text *text;
269 
270  text = (MHEG5Text *)MHEG5getMem(sizeof(MHEG5Text));
271  if (text != 0)
272  {
273  memset(text, 0, sizeof(MHEG5Text));
274  ((MHEG5Root *))text->class = MHEG5TEXT;
275 
276  text->visible.boxSize[0] = visible->boxSize[0];
277  text->visible.boxSize[1] = visible->boxSize[1];
278  text->visible.position[0] = visible->position[0];
279  text->visible.position[1] = visible->position[1];
280 
281  text->fontAttributes = MHEG5stringCopyChr("plain.24.28.0");
284 
285  if (pushbutton->characterSet == 0)
286  {
288  if (pushbutton->characterSet == 0)
289  {
290  pushbutton->characterSet = 10;
291  }
292  }
293  text->characterSet = pushbutton->characterSet;
294 
295  MHEG5genericSet(&text->textColour, RGBT(0, 0, 0, 0));
297  MHEG5textContentAdapt(text, pushbutton->label.data, pushbutton->label.len);
298  MHEG5drawText((MHEG5Text *)visible);
299  MHEG5textDestruct(text);
300  MHEG5textFree(text);
301  MHEG5freeMem(text);
302  }
303  }
304 
305  if (((MHEG5Button *)visible)->selectionStatus)
306  {
307  OSDdisplayRectangle(visible->position[0], visible->position[1],
308  visible->boxSize[0], 3,
310  OSDgetColour((char *)black, 4), OSDgetColour((char *)black, 4));
311  OSDdisplayRectangle(visible->position[0], visible->position[1],
312  3, visible->boxSize[1],
314  OSDgetColour((char *)black, 4), OSDgetColour((char *)black, 4));
315  OSDdisplayRectangle(visible->position[0] + visible->boxSize[0] - 3, visible->position[1],
316  3, visible->boxSize[1],
318  OSDgetColour((char *)white, 4), OSDgetColour((char *)white, 4));
319  OSDdisplayRectangle(visible->position[0], visible->position[1] + visible->boxSize[1] - 3,
320  visible->boxSize[0], 3,
322  OSDgetColour((char *)white, 4), OSDgetColour((char *)white, 4));
323  return;
324  }
325  if (((MHEG5Button *)visible)->interactible.highlightStatus &&
326  ((MHEG5Button *)visible)->interactible.engineResp)
327  {
328  OSDdisplayRectangle(visible->position[0], visible->position[1],
329  visible->boxSize[0], 3,
331  MHEG5displayColour(pHighlightRefColour),
332  MHEG5displayColour(pHighlightRefColour));
333  OSDdisplayRectangle(visible->position[0], visible->position[1],
334  3, visible->boxSize[1],
336  MHEG5displayColour(pHighlightRefColour),
337  MHEG5displayColour(pHighlightRefColour));
338  OSDdisplayRectangle(visible->position[0] + visible->boxSize[0] - 3, visible->position[1],
339  3, visible->boxSize[1],
341  MHEG5displayColour(pHighlightRefColour),
342  MHEG5displayColour(pHighlightRefColour));
343  OSDdisplayRectangle(visible->position[0], visible->position[1] + visible->boxSize[1] - 3,
344  visible->boxSize[0], 3,
346  MHEG5displayColour(pHighlightRefColour),
347  MHEG5displayColour(pHighlightRefColour));
348  return;
349  }
350  OSDdisplayRectangle(visible->position[0], visible->position[1],
351  visible->boxSize[0], 3,
352  1, MHEG_LINE_STYLE_SOLID, OSDgetColour((char *)white, 4), OSDgetColour((char *)white, 4));
353  OSDdisplayRectangle(visible->position[0], visible->position[1],
354  3, visible->boxSize[1],
355  1, MHEG_LINE_STYLE_SOLID, OSDgetColour((char *)white, 4), OSDgetColour((char *)white, 4));
356  OSDdisplayRectangle(visible->position[0] + visible->boxSize[0] - 3, visible->position[1],
357  3, visible->boxSize[1],
358  1, MHEG_LINE_STYLE_SOLID, OSDgetColour((char *)black, 4), OSDgetColour((char *)black, 4));
359  OSDdisplayRectangle(visible->position[0], visible->position[1] + visible->boxSize[1] - 3,
360  visible->boxSize[0], 3,
361  1, MHEG_LINE_STYLE_SOLID, OSDgetColour((char *)black, 4), OSDgetColour((char *)black, 4));
362 }
363 
374 void MHEG5displaySwitchbutton(MHEG5Visible *visible, int x1, int y1, int x2, int y2)
375 {
376  MHEG5Switchbutton *switchbutton = (MHEG5Switchbutton *)visible;
377  MHEG5Text *text;
378  MHEG5Button *button = (MHEG5Button *)visible;
379  MHEG5Pushbutton *pushbutton = (MHEG5Pushbutton *)visible;
380  void *canvas;
381  int h = y2 - y1;
382  MHEG5Colour *pButtonColour;
383  MHEG5Colour *pHighlightRefColour;
384 
385  if (switchbutton->style == MHEG5PUSHBUTTONS)
386  {
387  MHEG5displayPushbutton(visible, x1, y1, x2, y2);
388  return;
389  }
390 
391  if (((MHEG5Button *) visible)->buttonColour.type == MHEG5NONE)
392  {
393  pButtonColour = &(MHEG5getCurrentApplication()->buttonRefColour);
394  }
395  else
396  {
397  pButtonColour = &((MHEG5Button *) visible)->buttonColour;
398  }
399 
401  {
402  pHighlightRefColour = &(MHEG5getCurrentApplication()->highlightRefColour);
403  }
404  else
405  {
406  pHighlightRefColour = &button->interactible.highlightRefColour;
407  }
408 
409  if (h < 0)
410  {
411  h = 0;
412  }
413 
414  /* Draw the button lable */
415  text = (MHEG5Text *)MHEG5getMem(sizeof(MHEG5Text));
416  if (text != 0)
417  {
418  memset(text, 0, sizeof(MHEG5Text));
419  ((MHEG5Root *))text->class = MHEG5TEXT;
420 
421  text->visible.boxSize[0] = visible->boxSize[0] - visible->boxSize[1];
422  text->visible.boxSize[1] = visible->boxSize[1];
423  text->visible.position[0] = visible->position[0] + visible->boxSize[1];
424  text->visible.position[1] = visible->position[1];
425 
426  text->fontAttributes = MHEG5stringCopyChr("plain.24.28.0");
429 
430  if (pushbutton->characterSet == 0)
431  {
433  if (pushbutton->characterSet == 0)
434  {
435  pushbutton->characterSet = 10;
436  }
437  }
438  text->characterSet = pushbutton->characterSet;
439 
440  MHEG5genericSet(&text->textColour, RGBT(0, 0, 0, 0));
441  MHEG5genericCopy(&text->backgroundColour, pButtonColour);
442  if (pushbutton->label.len > 0)
443  {
444  MHEG5textContentAdapt(text, pushbutton->label.data, pushbutton->label.len);
445  }
446  MHEG5drawText((MHEG5Text *)visible);
447  MHEG5textDestruct(text);
448  MHEG5textFree(text);
449  MHEG5freeMem(text);
450  }
451 
452  canvas = OSDinitDynamicLineart(h, h, 1, 0,
453  MHEG5displayColour(pHighlightRefColour),
454  MHEG5displayColour(pButtonColour));
455  if (!canvas)
456  return;
457  if (switchbutton->style == MHEG5RADIOBUTTON)
458  {
459  /* Draw the radio button outer circle, depending on the highlight status */
460  if (((MHEG5Button *)visible)->interactible.highlightStatus &&
461  ((MHEG5Button *)visible)->interactible.engineResp)
462  {
463  OSDdrawEllipse(canvas, 3, 3, h - 6, h - 6, 6,
464  MHEG5displayColour(pHighlightRefColour),
465  MHEG5displayColour(pButtonColour));
466  }
467  else
468  {
469  OSDdrawEllipse(canvas, 4, 4, h - 8, h - 8, 3,
470  MHEG5displayColour(pHighlightRefColour),
471  MHEG5displayColour(pButtonColour));
472  }
473 
474  /* If selected, draw a centre circle */
475  if (((MHEG5Button *)visible)->selectionStatus)
476  {
477  OSDdrawEllipse(canvas, 8, 8, h - 16, h - 16, 0,
478  MHEG5displayColour(pHighlightRefColour),
479  MHEG5displayColour(pHighlightRefColour));
480  }
481  }
482  else
483  {
484  if (((MHEG5Button *)visible)->interactible.highlightStatus &&
485  ((MHEG5Button *)visible)->interactible.engineResp)
486  {
487  OSDdrawRectangle(canvas, 4, 4, h - 4, h - 4, 6,
488  MHEG5displayColour(pHighlightRefColour),
489  MHEG5displayColour(pButtonColour));
490  }
491  else
492  {
493  OSDdrawRectangle(canvas, 4, 4, h - 4, h - 4, 3,
494  MHEG5displayColour(pHighlightRefColour),
495  MHEG5displayColour(pButtonColour));
496  }
497  if (((MHEG5Button *)visible)->selectionStatus)
498  {
499  OSDdrawDrawLine(canvas, 4, 4, h - 4, h - 4, 3,
500  MHEG5displayColour(pHighlightRefColour));
501  OSDdrawDrawLine(canvas, 4, h - 4, h - 4, 4, 3,
502  MHEG5displayColour(pHighlightRefColour));
503  }
504  }
505  OSDdisplayDynamicLineart(canvas, x1, y1);
506  OSDfreeDynamicLineart(canvas);
507 }
508 
509 void MHEG5displayRTGraphics(MHEG5RTGraphics *rtgraphics, int x1, int y1, int x2, int y2)
510 {
511  int rtX1, rtY1, rtX2, rtY2;
512 
513  /* Calculate the video window */
514  rtX1 = rtgraphics->visible.position[0];
515  rtY1 = rtgraphics->visible.position[1];
516  rtX2 = rtgraphics->visible.position[0] + rtgraphics->visible.boxSize[0];
517  rtY2 = rtgraphics->visible.position[1] + rtgraphics->visible.boxSize[1];
518 
519  /* Clip top left and bottom right to clipping rectangle */
520  rtX1 = MAX(x1, rtX1);
521  rtY1 = MAX(y1, rtY1);
522  rtX2 = MIN(x2, rtX2);
523  rtY2 = MIN(y2, rtY2);
524 
525  OSDdisplayVideo(rtX1, rtY1, rtX2 - rtX1, rtY2 - rtY1);
526 }
527 
534 {
535  assert(rtgraphics);
536 
537  rtgraphicsPlaying = MHEG5TRUE;
538 
539  if (rtgraphics->parent->speed[0] == 0)
540  {
541  rtgraphicsFreeze = MHEG5TRUE;
542  }
543  else
544  {
545  MHEG5Int componentTag = MHEG5streamGetComponentTag((MHEG5Ingredient *)rtgraphics);
546 
547  rtgraphicsFreeze = MHEG5FALSE;
548 
549  /* Extract the multiplex reference from the stream. The componentTag
550  * is extracted from the rtgraphics object to reference a specific
551  * component within the multiplex.
552  */
553  if ((rtgraphicsMultiplexReference.serviceId != rtgraphics->parent->multiplexRef.serviceId) ||
554  (rtgraphicsMultiplexReference.originalNetworkId != rtgraphics->parent->multiplexRef.originalNetworkId) ||
555  (rtgraphicsMultiplexReference.transportStreamId != rtgraphics->parent->multiplexRef.transportStreamId) ||
556  (rtgraphicsMultiplexReference.componentTag != componentTag))
557  {
558  rtgraphicsMultiplexReference.originalNetworkId = rtgraphics->parent->multiplexRef.originalNetworkId;
559  rtgraphicsMultiplexReference.transportStreamId = rtgraphics->parent->multiplexRef.transportStreamId;
560  rtgraphicsMultiplexReference.serviceId = rtgraphics->parent->multiplexRef.serviceId;
561  rtgraphicsMultiplexReference.componentTag = componentTag;
562 
563  /* Indicate that we have updated the rtgraphics multiplex reference */
565  &rtgraphicsMultiplexReference);
566  rtgraphicsMultiplexReferenceChanged = MHEG5TRUE;
567  }
568  }
569 }
570 
577 {
578  /* Switch subtitles on when MHEG-5 is not running */
579  rtgraphicsPlaying = MHEG5TRUE;
580  rtgraphicsFreeze = MHEG5FALSE;
581  memset(&rtgraphicsMultiplexReference, 0, sizeof(rtgraphicsMultiplexReference));
582 }
583 
588 void MHEG5displayRtGraphicsUpdate( MHEG5Bool terminating, MHEG5Bool fullScreen )
589 {
590  static MHEG5Bool lastRtgraphicsPlaying = MHEG5TRUE;
591  static MHEG5Bool lastRtgraphicsFreeze = MHEG5FALSE;
592  MHEG5Bool newRtgraphicsPlaying;
593 
594  /* RTGraphics playing state, freeze state, and selected stream */
595  newRtgraphicsPlaying = rtgraphicsPlaying;
596  if (!fullScreen)
597  {
598  /* Disable RTGraphics when we are scaled to 1/4 screen */
599  newRtgraphicsPlaying = MHEG5FALSE;
600  }
601 
602  if ((lastRtgraphicsPlaying != newRtgraphicsPlaying) ||
603  (lastRtgraphicsFreeze != rtgraphicsFreeze) ||
604  rtgraphicsMultiplexReferenceChanged)
605  {
606  if (newRtgraphicsPlaying)
607  {
608  if (rtgraphicsFreeze)
609  {
611  }
612  else
613  {
614  OSDrtgraphicsPlay(&rtgraphicsMultiplexReference, terminating);
615  }
616  }
617  else
618  {
620  }
621 
622  lastRtgraphicsPlaying = newRtgraphicsPlaying;
623  lastRtgraphicsFreeze = rtgraphicsFreeze;
624  rtgraphicsMultiplexReferenceChanged = MHEG5FALSE;
625  }
626 }
627 
635 {
636  rtgraphicsPlaying = MHEG5FALSE;
637 
638  if (immediate)
639  {
641  }
642 }
643 
644 #endif /* !MHEG5PROFILE_UK1_06 */
645 
646 
void MHEG5displayHotspot(MHEG5Visible *visible, int x1, int y1, int x2, int y2)
Draw a Hotspot.
void MHEG5displayRtgraphicsStop(MHEG5Bool immediate)
Stops playback of the RTGraphics (subtitle) media decoder.
MHEG5Visible visible
Definition: mh5text.h:62
Basis MHEG5 data types.
MHEG5Int boxSize[2]
Definition: mh5visible.h:58
Distributor for Prepare, Destruct, Activate, Deactivate and Clone calls. Distribute the +Prepare +Des...
#define RGBT(r, g, b, t)
Definition: tmcolor.h:48
void MHEG5displayRTGraphics(MHEG5RTGraphics *rtgraphics, int x1, int y1, int x2, int y2)
void * OSDinitDynamicLineart(int x, int y, int w, int h, int lineWidth, int bordered, OSDColor lineColour, OSDColor fillColour)
On screen display - initialise dynamic line art.
Definition: mg_dla.c:311
void MHEG5displayPushbutton(MHEG5Visible *visible, int x1, int y1, int x2, int y2)
Draw a Pushbutton.
MHEG5Int verticalJustification
Definition: mh5text.h:71
#define HJUSTIFICATION_START
Definition: mh5text.h:39
MHEG5Int horizontalJustification
Definition: mh5text.h:70
#define INFO_PRINT(x)
Definition: mh5debug.h:69
U16BIT type
Definition: mh5base.h:151
void MHEG5genericSet(MHEG5Generic *item, MHEG5Int initialValue)
Set a MHEG5Generic to the MHEG5Int value.
Definition: mh5base.c:978
U32BIT OSDColor
Definition: osdtypes.h:41
void MHEG5textDestruct(MHEG5Text *text)
Destruct a text object.
Definition: mh5text.c:365
void MHEG5displaySwitchbutton(MHEG5Visible *visible, int x1, int y1, int x2, int y2)
Draw a Switchbutton.
#define MHEG5getMem
Definition: glue_memory.h:93
MHEG5Stream * parent
Definition: mh5rtgraphics.h:59
MHEG5Colour buttonColour
Definition: mh5button.h:54
Stream event subscription management.
void OSDrtgraphicsFreeze(void)
Freeze playback of the currently playing RTGraphics stream after the next screen update.
Definition: mh5dispBttnRT.c:95
void OSDfreeDynamicLineart(void *data)
On screen display - free resources dla.
Definition: mg_dla.c:452
void MHEG5genericCopy(MHEG5Generic *dest, MHEG5Generic *src)
Copy a MHEG5Generic.
Definition: mh5base.c:861
#define FULLY_TRANSPARENT
Definition: tmcolor.h:69
MHEG5Int characterSet
Definition: mh5text.h:69
MHEG5String label
Definition: mh5pushbutton.h:46
OSDColor MHEG5displayColour(MHEG5Colour *colour)
Convert Generic Colour value to OSD specific value. If the generic colour is encoded as a string it i...
Definition: mh5display.c:256
MHEG5PushbuttonStyle style
MHEG5Colour textColour
Definition: mh5text.h:90
#define VJUSTIFICATION_CENTRE
Definition: mh5text.h:46
MHEG5String fontAttributes
Definition: mh5text.h:89
void MHEG5displayLineart(int x1, int y1, int boxX1, int boxY1, int boxX2, int boxY2, MHEG5Bool bbbox, MHEG5Int lineWidth, MHEG5Int lineStyle, MHEG5Colour *refLineColour, MHEG5Colour *refFillColour)
Draw a Lineart Object.
void MHEG5displayRtGraphicsUpdate(MHEG5Bool terminating, MHEG5Bool fullScreen)
MHEG5Colour highlightRefColour
long MHEG5Int
Definition: mh5base.h:73
OSDColor OSDgetColour(const char *colour, int len)
Converts an MHEG5 colour value to an OSDColor type.
Definition: tmcolor.c:53
MHEG5Int speed[2]
Definition: mh5stream.h:74
void OSDrtgraphicsStop(void)
Stop displaying RTGraphics.
void MHEG5displayRtGraphicsReset(void)
Reset all media decoders to default values. This is used when the MHEG-5 engine is terminated...
#define HJUSTIFICATION_CENTRE
Definition: mh5text.h:41
MHEG5Colour backgroundColour
Definition: mh5text.h:91
#define MHEG5freeMem
Definition: glue_memory.h:94
void OSDdrawRectangle(void *data, int x1, int y1, int x2, int y2, int lineWidth, OSDColor lineColour, OSDColor fillColour)
Add a draw rectangle action to the action list.
Definition: mg_dla.c:974
This file defines the profile for the MHEG engine.
MHEG5Visible visible
Definition: mh5rtgraphics.h:50
MHEG5Int characterSet
Definition: mh5pushbutton.h:43
void MHEG5displayRtgraphicsPlay(MHEG5RTGraphics *rtgraphics)
Begin playback of the specified RTGraphics object.
short MHEG5Bool
Definition: mh5base.h:71
Event handling. Implementation of a combined queue for events and actions. This is the eventsystem wh...
#define MAX(a, b)
Definition: mh5dispBttnRT.c:47
MHEG5Byte * data
Definition: mh5base.h:85
#define MHEG5TRUE
Definition: mh5base.h:49
MHEG5Int characterSet
Implement functions to retrieve MHEG5objects by GroupID and ID.
Implementation of the MHEG5 Application Class Defines a set of Ingredient objects, which are shared within an application scope. Base class: Group Subclasses: None Status: Concrete class.
Mheg5 logging and debug printing.
void OSDdrawDrawLine(void *data, int x1, int y1, int x2, int y2, int lineWidth, OSDColor lineColour)
Add a draw line action to the action list.
Definition: mg_dla.c:741
void MG_OSDdisplayRectangle(S_REGION *overlap, int x, int y, int width, int height, int lineWidth, OSDColor lineColour, OSDColor fillColour)
Draw rectangle.
Definition: mg_osd.c:566
MHEG5Interactible interactible
Definition: mh5button.h:51
MHEG class interface to graphics text render.
void OSDdrawEllipse(void *data, int x, int y, int w, int h, int lineWidth, OSDColor lineColour, OSDColor fillColour)
Add a draw ellipse action to the action list.
Definition: mg_dla.c:579
MHEG5String MHEG5stringCopyChr(const char *source)
Copy the C-String source to a MHEG5String.
Definition: mh5base.c:612
redirection include
void OSDrtgraphicsPlay(S_DvbLocator *multiplexReference, MHEG5Bool terminating)
<Function description>="">
Definition: mh5dispBttnRT.c:84
void MHEG5streamSetCurrentService(MHEG5Ingredient *item, S_DvbComponent *service)
Set the current service.
Definition: mh5stream.c:1233
MHEG5Int MHEG5streamGetComponentTag(MHEG5Ingredient *item)
Get component tag for ingredient. This depends on the stream&#39;s content and the component tag of the i...
Definition: mh5stream.c:1293
MHEG5Int len
Definition: mh5base.h:84
Definition of colour type for MHEG5 - settings and conversions.
Include all classes.
void MHEG5textFree(MHEG5Text *text)
Free off all memory associated with the specified object, including any exchanged attributes and inte...
Definition: mh5text.c:204
#define MIN(a, b)
Definition: mh5dispBttnRT.c:48
Implement generic MHEG5-display functions - independent from the OSD These are generic functions used...
MHEG5Colour buttonRefColour
MHEG5Int position[2]
Definition: mh5visible.h:59
#define MHEG5FALSE
Definition: mh5base.h:48
void MHEG5drawText(MHEG5Text *txt)
Definition: mh5drawtext.c:485
#define MHEG_LINE_STYLE_SOLID
Definition: mh5lineart.h:39
MHEG5Colour highlightRefColour
MHEG5Application * MHEG5getCurrentApplication(void)
<Function description>="">