#include #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; }