void MythRect::CalculateArea(const MythRect & parentArea) { QRect area = parentArea.toQRect(); if ((m_parentArea == area && !m_needsUpdate) || !parentArea.isValid()) return; m_parentArea = area; int w = width(); int h = height(); int X = x(); int Y = y(); if (m_percentX > 0.0) X = (int) (m_percentX * (float)m_parentArea.width()) + m_offsetX; if (m_percentY > 0.0) Y = (int) (m_percentY * (float)m_parentArea.height()) + m_offsetY; if (m_percentWidth > 0.0) w = (int) (m_percentWidth * (float)(m_parentArea.width() - X)) + m_offsetWidth; else if (m_offsetWidth != 0) w = m_parentArea.width() - X + m_offsetWidth; if (m_percentHeight > 0.0) h = (int) (m_percentHeight * (float)(m_parentArea.height() - Y)) + m_offsetHeight; else if (m_offsetHeight != 0) h = m_parentArea.height() - Y + m_offsetHeight; QRect::setRect(X,Y,w,h); m_needsUpdate = false; }
void MythUITextEdit::SetInitialStates() { if (m_initialized) return; m_initialized = true; m_Text = dynamic_cast<MythUIText*>(GetChild("text")); m_cursorImage = dynamic_cast<MythUIImage*>(GetChild("cursor")); m_backgroundState = dynamic_cast<MythUIStateType*>(GetChild("background")); if (!m_Text) VERBOSE(VB_IMPORTANT, LOC_ERR + "Missing text element."); if (!m_cursorImage) VERBOSE(VB_IMPORTANT, LOC_ERR + "Missing cursor element."); if (!m_backgroundState) VERBOSE(VB_IMPORTANT, LOC_WARN + "Missing background element."); if (!m_Text || !m_cursorImage) { m_Text = NULL; m_cursorImage = NULL; m_backgroundState = NULL; return; } if (m_backgroundState && !m_backgroundState->DisplayState("active")) VERBOSE(VB_IMPORTANT, "MythUITextEdit: active state doesn't exist"); QFontMetrics fm(m_Text->GetFontProperties()->face()); int height = fm.height(); if (height > 0) { MythRect imageArea = m_cursorImage->GetArea(); int width = int(((float)height / (float)imageArea.height()) * (float)imageArea.width()); if (width <= 0) width = 1; m_cursorImage->ForceSize(QSize(width,height)); } MythRect textrect = m_Text->GetArea(); if (textrect.isNull()) textrect = MythRect(5,5,m_Area.width()-10,m_Area.height()-10); textrect.setWidth(textrect.width() - m_cursorImage->GetArea().width()); if (textrect.isValid()) m_Text->SetArea(textrect); m_Text->SetCutDown(false); m_cursorImage->SetPosition(textrect.x(),textrect.y()); }
void MythPoint::CalculatePoint(const MythRect & parentArea) { QRect area = parentArea.toQRect(); if ((m_parentArea == area && !m_needsUpdate) || !parentArea.isValid()) return; m_parentArea = area; int X = x(); int Y = y(); if (m_percentX > 0.0) X = (int) (m_percentX * (float)m_parentArea.width()) + m_offsetX; if (m_percentY > 0.0) Y = (int) (m_percentY * (float)m_parentArea.height()) + m_offsetY; QPoint::setX(X); QPoint::setY(Y); m_needsUpdate = false; valid = true; }