예제 #1
0
파일: rectkey.cpp 프로젝트: zdimension/CEmu
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);
    }
}
예제 #2
0
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()));
}