2019-07-11 11:07:13 +02:00
|
|
|
#include <vdr/osd.h>
|
|
|
|
|
|
|
|
#include "config.h"
|
|
|
|
#include "geometrymanager.h"
|
|
|
|
|
|
|
|
cGeometryManager::cGeometryManager() {
|
|
|
|
osdWidth = 0;
|
|
|
|
osdHeight = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
cGeometryManager::~cGeometryManager() {
|
|
|
|
}
|
|
|
|
|
|
|
|
bool cGeometryManager::SetGeometry(int osdWidth, int osdHeight, bool force) {
|
2019-11-10 14:30:59 +01:00
|
|
|
if (!force && (this->osdWidth == osdWidth) && (this->osdHeight == osdHeight)) {
|
|
|
|
esyslog("tvgudie: GeoManager SetGeometry nothing to change");
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
this->osdWidth = osdWidth;
|
|
|
|
this->osdHeight = osdHeight;
|
|
|
|
esyslog("tvguide: Set OSD to %d x %d px", osdWidth, osdHeight);
|
2019-07-11 11:07:13 +02:00
|
|
|
|
2019-11-10 14:30:59 +01:00
|
|
|
statusHeaderHeight = (config.displayStatusHeader) ? (config.headerHeightPercent * osdHeight / 100) : 0;
|
2019-07-11 11:07:13 +02:00
|
|
|
tvFrameWidth = statusHeaderHeight * 16 / 9;
|
2019-07-11 11:28:11 +02:00
|
|
|
headerContentWidth = (config.scaleVideo) ? (osdWidth - tvFrameWidth):osdWidth;
|
2019-11-10 14:30:59 +01:00
|
|
|
channelGroupsWidth = (config.displayChannelGroups) ? (config.channelGroupsPercent * osdWidth / 100) : 0;
|
|
|
|
channelGroupsHeight = (config.displayChannelGroups) ? (config.channelGroupsPercent * osdHeight / 100) : 0;
|
2019-07-11 11:28:11 +02:00
|
|
|
channelHeaderWidth = config.channelHeaderWidthPercent * osdWidth / 100;
|
|
|
|
channelHeaderHeight = config.channelHeaderHeightPercent * osdHeight / 100;
|
|
|
|
timeLineWidth = config.timeLineWidthPercent * osdWidth / 100;
|
|
|
|
timeLineHeight = config.timeLineHeightPercent * osdHeight / 100;
|
|
|
|
footerHeight = config.footerHeightPercent * osdHeight / 100;
|
2019-07-11 11:07:13 +02:00
|
|
|
footerY = osdHeight - footerHeight;
|
|
|
|
|
2019-07-11 11:28:11 +02:00
|
|
|
if (config.displayMode == eVertical) {
|
|
|
|
colWidth = (osdWidth - timeLineWidth) / config.channelCols;
|
2019-07-11 11:07:13 +02:00
|
|
|
rowHeight = 0;
|
2020-01-06 14:09:56 +01:00
|
|
|
minutePixel = (double)(osdHeight - statusHeaderHeight - channelGroupsHeight - channelHeaderHeight - footerHeight) / (double)config.displayTime;
|
2019-07-11 11:07:13 +02:00
|
|
|
channelLogoWidth = colWidth;
|
|
|
|
channelLogoHeight = channelHeaderHeight;
|
2019-07-11 11:28:11 +02:00
|
|
|
logoWidth = channelLogoWidth / 2 - 15;
|
|
|
|
logoHeight = logoWidth * config.logoHeightRatio / config.logoWidthRatio;
|
2019-07-11 11:07:13 +02:00
|
|
|
timeLineGridWidth = timeLineWidth;
|
|
|
|
timeLineGridHeight = minutePixel * 30;
|
|
|
|
dateVieverWidth = timeLineWidth;
|
|
|
|
dateVieverHeight = (channelHeaderHeight + channelGroupsHeight) * 2 / 3;
|
|
|
|
clockWidth = dateVieverWidth;
|
|
|
|
clockHeight = (channelHeaderHeight + channelGroupsHeight) - dateVieverHeight;
|
2019-07-11 11:28:11 +02:00
|
|
|
} else if (config.displayMode == eHorizontal) {
|
2019-07-11 11:07:13 +02:00
|
|
|
colWidth = 0;
|
2019-07-11 11:28:11 +02:00
|
|
|
rowHeight = (osdHeight - statusHeaderHeight - timeLineHeight - footerHeight) / config.channelRows;
|
2020-01-06 14:09:56 +01:00
|
|
|
minutePixel = (double)(osdWidth - channelHeaderWidth - channelGroupsWidth) / (double)config.displayHorizontalTime;
|
2019-07-11 11:07:13 +02:00
|
|
|
channelLogoWidth = channelHeaderWidth;
|
|
|
|
channelLogoHeight = rowHeight;
|
2019-07-11 11:28:11 +02:00
|
|
|
logoWidth = channelLogoHeight * config.logoWidthRatio / config.logoHeightRatio;
|
2019-07-11 11:07:13 +02:00
|
|
|
logoHeight = channelLogoHeight;
|
|
|
|
timeLineGridWidth = geoManager.minutePixel * 30;
|
|
|
|
timeLineGridHeight = geoManager.timeLineHeight;
|
|
|
|
dateVieverWidth = (channelHeaderWidth + channelGroupsWidth) * 3 / 5;
|
|
|
|
dateVieverHeight = timeLineHeight;
|
|
|
|
clockWidth = (channelHeaderWidth + channelGroupsWidth) - dateVieverWidth;
|
|
|
|
clockHeight = timeLineHeight;
|
|
|
|
}
|
|
|
|
buttonBorder = footerHeight / 6;
|
|
|
|
buttonWidth = osdWidth / 4 - 2 * buttonBorder;
|
|
|
|
buttonHeight = footerHeight - 3 * buttonBorder;
|
|
|
|
|
2019-07-11 11:28:11 +02:00
|
|
|
epgViewHeaderHeight = config.headerHeightPercent * osdHeight / 100;
|
2019-07-11 11:07:13 +02:00
|
|
|
|
|
|
|
borderRecMenus = 10;
|
|
|
|
|
|
|
|
channelJumpWidth = osdWidth * 30 / 100;
|
|
|
|
channelJumpHeight = osdHeight * 20 / 100;
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|