void WebMediaPlayerClientImpl::paintCurrentFrameInContext(GraphicsContext* context, const IntRect& rect) { // Normally GraphicsContext operations do nothing when painting is disabled. // Since we're accessing platformContext() directly we have to manually // check. if (m_webMediaPlayer && !context->paintingDisabled()) { PlatformGraphicsContext* platformContext = context->platformContext(); WebCanvas* canvas = platformContext->canvas(); m_webMediaPlayer->paint(canvas, rect, platformContext->getNormalizedAlpha()); } }
void MediaPlayerPrivate::paintCurrentFrameInContext(GraphicsContext* context, const IntRect& rect) { if (!hasVideo() || context->paintingDisabled() || !m_webCorePlayer->visible()) return; PlatformGraphicsContext* graphics = context->platformContext(); ASSERT(graphics); BlackBerry::Platform::IntRect platformRect(rect.x(), rect.y(), rect.width(), rect.height()); IntRect clippedRect = m_webCorePlayer->mediaPlayerClient()->mediaPlayerWindowClipRect(); BlackBerry::Platform::IntRect platformWindowClipRect(clippedRect.x(), clippedRect.y(), clippedRect.width(), clippedRect.height()); m_platformPlayer->paint(graphics->canvas(), platformRect, platformWindowClipRect); }
void Font::drawComplexText(GraphicsContext* graphicsContext, const TextRun& run, const FloatPoint& point, int from, int to) const { PlatformGraphicsContext* context = graphicsContext->platformContext(); UniscribeHelperTextRun state(run, *this); SkColor color = graphicsContext->platformContext()->effectiveFillColor(); unsigned char alpha = SkColorGetA(color); // Skip 100% transparent text; no need to draw anything. if (!alpha && graphicsContext->platformContext()->getStrokeStyle() == NoStroke) return; TransparencyAwareUniscribePainter painter(graphicsContext, this, run, from, to, point); HDC hdc = painter.hdc(); if (windowsCanHandleTextDrawing(graphicsContext) && !hdc) return; // TODO(maruel): http://b/700464 SetTextColor doesn't support transparency. // Enforce non-transparent color. color = SkColorSetRGB(SkColorGetR(color), SkColorGetG(color), SkColorGetB(color)); if (hdc) { SetTextColor(hdc, skia::SkColorToCOLORREF(color)); SetBkMode(hdc, TRANSPARENT); } // If there is a non-blur shadow and both the fill color and shadow color // are opaque, handle without skia. IntSize shadowSize; int shadowBlur; Color shadowColor; if (graphicsContext->getShadow(shadowSize, shadowBlur, shadowColor) && windowsCanHandleDrawTextShadow(graphicsContext)) { COLORREF textColor = skia::SkColorToCOLORREF(SkColorSetARGB(255, shadowColor.red(), shadowColor.green(), shadowColor.blue())); COLORREF savedTextColor = GetTextColor(hdc); SetTextColor(hdc, textColor); state.draw(graphicsContext, hdc, static_cast<int>(point.x()) + shadowSize.width(), static_cast<int>(point.y() - ascent()) + shadowSize.height(), from, to); SetTextColor(hdc, savedTextColor); } // Uniscribe counts the coordinates from the upper left, while WebKit uses // the baseline, so we have to subtract off the ascent. state.draw(graphicsContext, hdc, static_cast<int>(point.x()), static_cast<int>(point.y() - ascent()), from, to); context->canvas()->endPlatformPaint(); }
static void syncPlatformContext(GraphicsContext* gc) { // Stroke and fill sometimes reference each other, so always // sync them both to make sure our state is consistent. PlatformGraphicsContext* pgc = gc->platformContext(); Gradient* grad = gc->state().fillGradient.get(); Pattern* pat = gc->state().fillPattern.get(); if (grad) pgc->setFillShader(grad->platformGradient()); else if (pat) pgc->setFillShader(pat->platformPattern(AffineTransform())); else pgc->setFillColor(gc->state().fillColor); grad = gc->state().strokeGradient.get(); pat = gc->state().strokePattern.get(); if (grad) pgc->setStrokeShader(grad->platformGradient()); else if (pat) pgc->setStrokeShader(pat->platformPattern(AffineTransform())); else pgc->setStrokeColor(gc->state().strokeColor); }
~GraphicsContextPlatformPrivate() { if (mPgc && mPgc->deleteUs()) delete mPgc; // we force restores so we don't leak any subobjects owned by our // stack of State records. while (mStateStack.count() > 0) this->restore(); }
void WebMediaPlayerClientImpl::paint(GraphicsContext* context, const IntRect& rect) { // Normally GraphicsContext operations do nothing when painting is disabled. // Since we're accessing platformContext() directly we have to manually // check. if (m_webMediaPlayer.get() && !context->paintingDisabled()) { #if WEBKIT_USING_SKIA PlatformGraphicsContext* platformContext = context->platformContext(); WebCanvas* canvas = platformContext->canvas(); canvas->saveLayerAlpha(0, platformContext->getNormalizedAlpha()); m_webMediaPlayer->paint(canvas, rect); canvas->restore(); #elif WEBKIT_USING_CG m_webMediaPlayer->paint(context->platformContext(), rect); #else notImplemented(); #endif } }
void MediaPlayerPrivate::paint(GraphicsContext* context, const IntRect& rect) { #if USE(ACCELERATED_COMPOSITING) // Only process paint calls coming via the accelerated compositing code // path, where we get called with a null graphics context. See // LayerCompositingThread::drawTextures(). Ignore calls from the regular // rendering path. if (!context) m_platformPlayer->notifyOutputUpdate(BlackBerry::Platform::IntRect(rect.x(), rect.y(), rect.width(), rect.height())); return; #endif if (!hasVideo() || context->paintingDisabled() || !m_webCorePlayer->visible()) return; PlatformGraphicsContext* graphics = context->platformContext(); ASSERT(graphics); BlackBerry::Platform::IntRect platformRect(rect.x(), rect.y(), rect.width(), rect.height()); IntRect clippedRect = frameView()->windowClipRect(); BlackBerry::Platform::IntRect platformWindowClipRect(clippedRect.x(), clippedRect.y(), clippedRect.width(), clippedRect.height()); m_platformPlayer->paint(graphics->canvas(), platformRect, platformWindowClipRect); }