void RectKey::paint(QPainter &painter) const { Key::paint(painter); painter.setFont(mLabelFont); painter.setPen(mTextColor); painter.drawText(keyGeometry(), mLabelAlign, mLabelText); if (!mSecondText.isEmpty()) { painter.setPen(mSecondColor); painter.setFont(mSecondFont); painter.drawText(textGeometry(), mSecondAlign, mSecondText); } if (!mAlphaText.isEmpty()) { painter.setPen(mAlphaColor); painter.setFont(mAlphaFont); painter.drawText(textGeometry(), mAlphaAlign, mAlphaText); } }
void EmbeddedObjectPainter::paintReplaced(const PaintInfo& paintInfo, const LayoutPoint& paintOffset) { if (!m_layoutEmbeddedObject.showsUnavailablePluginIndicator()) return; if (paintInfo.phase == PaintPhaseSelection) return; GraphicsContext& context = paintInfo.context; if (LayoutObjectDrawingRecorder::useCachedDrawingIfPossible( context, m_layoutEmbeddedObject, paintInfo.phase)) return; LayoutRect contentRect(m_layoutEmbeddedObject.contentBoxRect()); contentRect.moveBy(paintOffset); LayoutObjectDrawingRecorder drawingRecorder(context, m_layoutEmbeddedObject, paintInfo.phase, contentRect); GraphicsContextStateSaver stateSaver(context); context.clip(pixelSnappedIntRect(contentRect)); Font font = replacementTextFont(); const SimpleFontData* fontData = font.primaryFont(); DCHECK(fontData); if (!fontData) return; TextRun textRun(m_layoutEmbeddedObject.unavailablePluginReplacementText()); FloatSize textGeometry(font.width(textRun), fontData->getFontMetrics().height()); LayoutRect backgroundRect( 0, 0, textGeometry.width() + 2 * replacementTextRoundedRectLeftRightTextMargin, replacementTextRoundedRectHeight); backgroundRect.move(contentRect.center() - backgroundRect.center()); backgroundRect = LayoutRect(pixelSnappedIntRect(backgroundRect)); Path roundedBackgroundRect; FloatRect floatBackgroundRect(backgroundRect); roundedBackgroundRect.addRoundedRect( floatBackgroundRect, FloatSize(replacementTextRoundedRectRadius, replacementTextRoundedRectRadius)); context.setFillColor( scaleAlpha(Color::white, replacementTextRoundedRectOpacity)); context.fillPath(roundedBackgroundRect); FloatRect textRect(FloatPoint(), textGeometry); textRect.move(FloatPoint(contentRect.center()) - textRect.center()); TextRunPaintInfo runInfo(textRun); runInfo.bounds = floatBackgroundRect; context.setFillColor(scaleAlpha(Color::black, replacementTextTextOpacity)); context.drawBidiText( font, runInfo, textRect.location() + FloatSize(0, fontData->getFontMetrics().ascent())); }