35 const int spaceToLogo = 4;
36 const int blurRate = 1;
37 const int fontSize = 10;
39 if (m_engine.isNull())
42 const QString copyrightsString = m_engine->evaluateCopyrightsText(activeMapType(), cameraData().zoomLevel(), visibleTiles);
44 if (viewportWidth() > 0 && viewportHeight() > 0 && ((copyrightsString.isNull() && m_copyrightsSlab.isNull()) || copyrightsString != m_lastCopyrightsString)) {
45 QFont font(
"Sans Serif");
46 font.setPixelSize(fontSize);
47 font.setStyleHint(QFont::SansSerif);
48 font.setWeight(QFont::Bold);
50 QRect textBounds = QFontMetrics(font).boundingRect(0, 0, viewportWidth(), viewportHeight(), Qt::AlignBottom | Qt::AlignLeft | Qt::TextWordWrap, copyrightsString);
52 m_copyrightsSlab = QImage(m_logo.width() + textBounds.width() + spaceToLogo + blurRate * 2,
53 qMax(m_logo.height(), textBounds.height() + blurRate * 2),
54 QImage::Format_ARGB32_Premultiplied);
55 m_copyrightsSlab.fill(Qt::transparent);
57 QPainter painter(&m_copyrightsSlab);
58 painter.drawImage(QPoint(0, m_copyrightsSlab.height() - m_logo.height()), m_logo);
59 painter.setFont(font);
60 painter.setPen(QColor(0, 0, 0, 64));
61 painter.translate(spaceToLogo + m_logo.width(), -blurRate);
62 for (
int x=-blurRate; x<=blurRate; ++x) {
63 for (
int y=-blurRate; y<=blurRate; ++y) {
64 painter.drawText(x, y, textBounds.width(), m_copyrightsSlab.height(),
65 Qt::AlignBottom | Qt::AlignLeft | Qt::TextWordWrap,
69 painter.setPen(Qt::white);
70 painter.drawText(0, 0, textBounds.width(), m_copyrightsSlab.height(),
71 Qt::AlignBottom | Qt::AlignLeft | Qt::TextWordWrap,
75 m_lastCopyrightsString = copyrightsString;
78 emit copyrightsImageChanged(m_copyrightsSlab);