~ubuntu-branches/debian/sid/qpdfview/sid

« back to all changes in this revision

Viewing changes to sources/pageitem.cpp

  • Committer: Package Import Robot
  • Author(s): Benjamin Eltzner
  • Date: 2013-07-30 00:00:25 UTC
  • mfrom: (1.2.9)
  • Revision ID: package-import@ubuntu.com-20130730000025-lsj8rjj0brpaj5ve
Tags: 0.4.4-1
New upstream release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
872
872
    m_boundingRect.setHeight(qRound(m_boundingRect.height()));
873
873
}
874
874
 
875
 
ThumbnailItem::ThumbnailItem(Model::Page* page, int index, QGraphicsItem* parent) : PageItem(page, index, false, parent)
 
875
ThumbnailItem::ThumbnailItem(Model::Page* page, int index, QGraphicsItem* parent) : PageItem(page, index, false, parent),
 
876
#if QT_VERSION >= QT_VERSION_CHECK(4,7,0)
 
877
    m_text(QString::number(index + 1)),
 
878
#endif // QT_VERSION
 
879
    m_current(false)
876
880
{
877
881
    setAcceptHoverEvents(false);
878
 
 
879
 
    const QFontMetrics fontMetrics = QFontMetrics(QFont());
880
 
 
881
 
    m_textWidth = fontMetrics.width(QString::number(index + 1));
882
 
    m_textHeight = fontMetrics.height();
883
 
 
884
 
    m_current = false;
885
882
}
886
883
 
887
884
QRectF ThumbnailItem::boundingRect() const
888
885
{
889
 
    return PageItem::boundingRect().adjusted(0.0, 0.0, 0.0, 2.0 * m_textHeight);
 
886
#if QT_VERSION >= QT_VERSION_CHECK(4,7,0)
 
887
 
 
888
    return PageItem::boundingRect().adjusted(0.0, 0.0, 0.0, 2.0 * m_text.size().height());
 
889
 
 
890
#else
 
891
 
 
892
    return PageItem::boundingRect().adjusted(0.0, 0.0, 0.0, 2.0 * QFontMetrics(QFont()).height());
 
893
 
 
894
#endif // QT_VERSION
890
895
}
891
896
 
892
897
void ThumbnailItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
895
900
 
896
901
    const QRectF boundingRect = PageItem::boundingRect();
897
902
 
898
 
    QPointF pos = boundingRect.bottomLeft();
899
 
    pos.rx() += 0.5 * (boundingRect.width() - m_textWidth);
900
 
    pos.ry() += m_textHeight;
901
 
 
902
 
    painter->drawText(pos, QString::number(index() + 1));
 
903
#if QT_VERSION >= QT_VERSION_CHECK(4,7,0)
 
904
 
 
905
    const QSizeF textSize = m_text.size();
 
906
 
 
907
    QPointF pos = boundingRect.bottomLeft();
 
908
    pos.rx() += 0.5 * (boundingRect.width() - textSize.width());
 
909
    pos.ry() += 0.5 * textSize.height();
 
910
 
 
911
    painter->drawStaticText(pos, m_text);
 
912
 
 
913
#else
 
914
 
 
915
    const QString text = QString::number(index() + 1);
 
916
    const QFontMetrics fontMetrics = QFontMetrics(QFont());
 
917
 
 
918
    QPointF pos = boundingRect.bottomLeft();
 
919
    pos.rx() += 0.5 * (boundingRect.width() - fontMetrics.width(text));
 
920
    pos.ry() += fontMetrics.height();
 
921
 
 
922
    painter->drawText(pos, text);
 
923
 
 
924
#endif // QT_VERSION
903
925
 
904
926
    if(m_current)
905
927
    {
906
928
        painter->save();
907
929
 
908
930
        painter->setCompositionMode(QPainter::CompositionMode_Multiply);
909
 
 
910
931
        painter->fillRect(boundingRect, widget->palette().highlight());
911
932
 
912
933
        painter->restore();
951
972
 
952
973
void ThumbnailItem::loadInteractiveElements()
953
974
{
 
975
    const qreal width = size().width() / 72.0 * 25.4;
 
976
    const qreal height = size().height() / 72.0 * 25.4;
 
977
 
 
978
    const qreal longEdge = qMax(width, height);
 
979
    const qreal shortEdge = qMin(width, height);
 
980
 
 
981
    QString paperSize;
 
982
 
 
983
    if(qAbs(longEdge - 279.4) <= 1.0 && qAbs(shortEdge - 215.9) <= 1.0)
 
984
    {
 
985
        paperSize = QLatin1String(" (Letter)");
 
986
    }
 
987
    else
 
988
    {
 
989
        qreal longEdgeA = 1189.0;
 
990
        qreal shortEdgeA = 841.0;
 
991
 
 
992
        qreal longEdgeB = 1414.0;
 
993
        qreal shortEdgeB = 1000.0;
 
994
 
 
995
        for(int i = 0; i <= 10; ++i)
 
996
        {
 
997
            if(qAbs(longEdge - longEdgeA) <= 1.0 && qAbs(shortEdge - shortEdgeA) <= 1.0)
 
998
            {
 
999
                paperSize = QString(" (A%1)").arg(i);
 
1000
                break;
 
1001
            }
 
1002
            else if(qAbs(longEdge - longEdgeB) <= 1.0 && qAbs(shortEdge - shortEdgeB) <= 1.0)
 
1003
            {
 
1004
                paperSize = QString(" (B%1)").arg(i);
 
1005
                break;
 
1006
            }
 
1007
 
 
1008
            longEdgeA = shortEdgeA;
 
1009
            shortEdgeA /= qSqrt(2.0);
 
1010
 
 
1011
            longEdgeB = shortEdgeB;
 
1012
            shortEdgeB /= qSqrt(2.0);
 
1013
        }
 
1014
    }
 
1015
 
 
1016
    setToolTip(QString("%1 mm x %2 mm%3").arg(width, 0, 'f', 1).arg(height, 0, 'f', 1).arg(paperSize));
954
1017
}