Ticket #6055: autosize.diff

File autosize.diff, 2.6 KB (added by cg@…, 17 years ago)
  • libs/libmythui/mythuitext.cpp

     
    2424            incR(0.0),              incG(0.0),             incB(0.0)
    2525{
    2626    m_MultiLine = false;
     27    m_AutoSize  = false;
    2728    m_scrolling = false;
    2829    m_scrollDirection = ScrollLeft;
    2930
     
    4748             incR(0.0),      incG(0.0),      incB(0.0)
    4849{
    4950    m_MultiLine = false;
     51    m_AutoSize  = false;
     52   
    5053    SetArea(displayRect);
    5154    m_FontStates.insert("default", font);
    5255    *m_Font = m_FontStates["default"];
     
    101104
    102105    m_Message = newtext;
    103106    m_CutMessage = "";
     107
     108    if (m_AutoSize)
     109    {
     110        QFontMetrics fm(GetFontProperties()->face());
     111        QSize stringSize = fm.size(Qt::TextSingleLine, m_Message);
     112        SetDrawRectSize(stringSize.width(), m_Area.height());
     113    }
     114   
    104115    SetRedraw();
    105116}
    106117
     
    173184    SetRedraw();
    174185}
    175186
     187void MythUIText::SetAutoSize(bool autosize)
     188{
     189    m_AutoSize = autosize;
     190    SetRedraw();
     191}
     192
    176193void MythUIText::SetArea(const MythRect &rect)
    177194{
    178195    MythUIType::SetArea(rect);
     
    396413}
    397414
    398415bool MythUIText::ParseElement(QDomElement &element)
    399 {
     416{   
    400417    if (element.tagName() == "area")
    401418    {
    402419        SetArea(parseRect(element));
     
    452469    {
    453470        SetMultiLine(parseBool(element));
    454471    }
     472    else if (element.tagName() == "autosize")
     473    {
     474        SetAutoSize(parseBool(element));
     475    }   
    455476    else if (element.tagName() == "align")
    456477    {
    457478        QString align = getFirstText(element).toLower();
     
    533554
    534555    m_Cutdown = text->m_Cutdown;
    535556    m_MultiLine = text->m_MultiLine;
     557    m_AutoSize = text->m_AutoSize;
    536558
    537559    QMutableMapIterator<QString, MythFontProperties> it(text->m_FontStates);
    538560    while (it.hasNext())
  • libs/libmythui/mythuitext.h

     
    6666    bool GetCutDown(void) const { return m_Cutdown; }
    6767    void SetMultiLine(bool multiline);
    6868    bool GetMultiLine(void) const { return m_MultiLine; }
    69 
     69    void SetAutoSize(bool autosize);
     70    bool GetAutoSize(void) const { return m_AutoSize; }
     71       
    7072    void SetArea(const MythRect &rect);
    7173    void SetPosition(const MythPoint &pos);
    7274    MythRect GetDrawRect(void) { return m_drawRect; }
     
    9092
    9193    bool m_Cutdown;
    9294    bool m_MultiLine;
     95    bool m_AutoSize;
    9396
    9497    MythFontProperties* m_Font;
    9598    QMap<QString, MythFontProperties> m_FontStates;