Hallo zusammen,
ich möchte das TVonscreen Plugin an die aktuelle VDR Entwicklerversion
anpassen um die Anzeige entsprechend der OSD-Auflösung anzupassen.
hierzu habe ich, im ersten Schritt, folgende Funktionen zusammengehackt:
int getTimelineWidth()
{
int Width;
int Height;
int tWidth;
double Aspect;
cDevice::PrimaryDevice()->GetOsdSize(Width, Height, Aspect);
tWidth = floor((((Width * 90) / 100) * 7) / 100);
return tWidth;
}
int getScheduleWidth()
{
int Width;
int Height;
int sWidth;
double Aspect;
cDevice::PrimaryDevice()->GetOsdSize(Width, Height, Aspect);
sWidth = floor((((Width * 90) / 100) * 31) / 100);
return sWidth;
}
Meine Idee war es, im folgenden Orginal-Code die Werte "45" durch
getTimelineWidth() und die Werte "184" durch getScheduleWidth()
zu ersetzen:
static tArea Areas[NUMBER_OF_AREAS] =
{
#ifndef MULTINAMES
{ 8+45, 0, 8+45 + 188*2+184 - 1, 0 + 48/*20*/ - 1, 8 }, // NAMES_AREA
#else
{ 8+45, 0, 8+45 + 184 - 1, 0 + 48/*20*/ - 1, 4 }, // NAME1_AREA
{ 8+45+188, 0, 8+45+188 + 184 - 1, 0 + 48/*20*/ - 1, 4 }, // NAME2_AREA
{ 8+45+188*2, 0, 8+45+188*2 + 184 - 1, 0 + 48/*20*/ - 1, 4 }, // NAME3_AREA
#endif
{ 0, 0, 0 + 8+40 - 1, TL_YSTART + 384 - 1, 2 }, // TIMELINE_AREA
{ 8+45, TL_YSTART, 8+45 + 184 - 1, TL_YSTART + 384 - 1, 2 }, // SCHED1_AREA
{ 8+45+188, TL_YSTART, 8+45+188 + 184 - 1, TL_YSTART + 384 - 1, 2 }, // SCHED2_AREA
{ 8+45+188*2, TL_YSTART, 8+45+188*2 + 184 - 1, TL_YSTART + 384 - 1, 2 }, // SCHED3_AREA
{ 50, 384+TL_YSTART+8, 50 + 8+45+188*2+184-101 - 1, 384+TL_YSTART+8 + 20 - 1, 2 }, // CONTROL_AREA
};
Die Funktionen geben die gewünschten Werte zurück aber leider führt die
Ändereung im obigen code zu einem Segfault
Ersetze ich die Werte durch fix-Werte, die einer OSD-Größe von
1152x648 (90% 1280x720) entsprechen, so funktioniert das ganze
einwandfrei.
Da ich so gut wie keine Ahnung von C-Programmierung habe benötige ich
ein Tip von Euch
Wäre klasse, wenn mir jemand weiterhelfen könnte.
bis denn
Andreas