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) {
|
|
|
|
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);
|
|
|
|
|
|
|
|
statusHeaderHeight = (tvguideConfig.displayStatusHeader)?(tvguideConfig.headerHeightPercent * osdHeight / 100):0;
|
|
|
|
tvFrameWidth = statusHeaderHeight * 16 / 9;
|
|
|
|
headerContentWidth = (tvguideConfig.scaleVideo)?(osdWidth - tvFrameWidth):osdWidth;
|
|
|
|
channelGroupsWidth = (tvguideConfig.displayChannelGroups)?(tvguideConfig.channelGroupsPercent * osdWidth / 100):0;
|
|
|
|
channelGroupsHeight = (tvguideConfig.displayChannelGroups)?(tvguideConfig.channelGroupsPercent * osdHeight / 100):0;
|
|
|
|
channelHeaderWidth = tvguideConfig.channelHeaderWidthPercent * osdWidth / 100;
|
|
|
|
channelHeaderHeight = tvguideConfig.channelHeaderHeightPercent * osdHeight / 100;
|
|
|
|
timeLineWidth = tvguideConfig.timeLineWidthPercent * osdWidth / 100;
|
|
|
|
timeLineHeight = tvguideConfig.timeLineHeightPercent * osdHeight / 100;
|
|
|
|
footerHeight = tvguideConfig.footerHeightPercent * osdHeight / 100;
|
|
|
|
footerY = osdHeight - footerHeight;
|
|
|
|
|
|
|
|
if (tvguideConfig.displayMode == eVertical) {
|
|
|
|
colWidth = (osdWidth - timeLineWidth) / tvguideConfig.channelCols;
|
|
|
|
rowHeight = 0;
|
|
|
|
minutePixel = (osdHeight - statusHeaderHeight - channelGroupsHeight - channelHeaderHeight - footerHeight) / tvguideConfig.displayTime;
|
|
|
|
channelLogoWidth = colWidth;
|
|
|
|
channelLogoHeight = channelHeaderHeight;
|
|
|
|
logoWidth = channelLogoWidth/2 - 15;
|
|
|
|
logoHeight = logoWidth * tvguideConfig.logoHeightRatio / tvguideConfig.logoWidthRatio;
|
|
|
|
timeLineGridWidth = timeLineWidth;
|
|
|
|
timeLineGridHeight = minutePixel * 30;
|
|
|
|
dateVieverWidth = timeLineWidth;
|
|
|
|
dateVieverHeight = (channelHeaderHeight + channelGroupsHeight) * 2 / 3;
|
|
|
|
clockWidth = dateVieverWidth;
|
|
|
|
clockHeight = (channelHeaderHeight + channelGroupsHeight) - dateVieverHeight;
|
|
|
|
} else if (tvguideConfig.displayMode == eHorizontal) {
|
|
|
|
colWidth = 0;
|
|
|
|
rowHeight = (osdHeight - statusHeaderHeight - timeLineHeight - footerHeight) / tvguideConfig.channelRows;
|
|
|
|
minutePixel = (osdWidth - channelHeaderWidth - channelGroupsWidth) / tvguideConfig.displayHorizontalTime;
|
|
|
|
channelLogoWidth = channelHeaderWidth;
|
|
|
|
channelLogoHeight = rowHeight;
|
|
|
|
logoWidth = channelLogoHeight * tvguideConfig.logoWidthRatio / tvguideConfig.logoHeightRatio;
|
|
|
|
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;
|
|
|
|
|
|
|
|
epgViewHeaderHeight = tvguideConfig.headerHeightPercent * osdHeight / 100;
|
|
|
|
|
|
|
|
borderRecMenus = 10;
|
|
|
|
|
|
|
|
channelJumpWidth = osdWidth * 30 / 100;
|
|
|
|
channelJumpHeight = osdHeight * 20 / 100;
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|