void WebGraphicsLayer::tiledBackingStorePaint(GraphicsContext* context, const IntRect& rect) { if (rect.isEmpty()) return; m_modified = true; paintGraphicsLayerContents(*context, rect); }
void GraphicsLayerTextureMapper::prepareBackingStore() { TextureMapper* textureMapper = m_layer->textureMapper(); if (!textureMapper) return; if (!shouldHaveBackingStore()) { m_backingStore.clear(); return; } IntRect dirtyRect = enclosingIntRect(FloatRect(FloatPoint::zero(), m_size)); if (!m_needsDisplay) dirtyRect.intersect(enclosingIntRect(m_needsDisplayRect)); if (dirtyRect.isEmpty()) return; if (!m_backingStore) m_backingStore = TextureMapperTiledBackingStore::create(); #if PLATFORM(QT) ASSERT(dynamic_cast<TextureMapperTiledBackingStore*>(m_backingStore.get())); #endif TextureMapperTiledBackingStore* backingStore = static_cast<TextureMapperTiledBackingStore*>(m_backingStore.get()); if (isShowingRepaintCounter()) incrementRepaintCount(); // Paint into an intermediate buffer to avoid painting content more than once. bool paintOnce = true; const IntSize maxTextureSize = textureMapper->maxTextureSize(); // We need to paint directly if the dirty rect exceeds one of the maximum dimensions. if (dirtyRect.width() > maxTextureSize.width() || dirtyRect.height() > maxTextureSize.height()) paintOnce = false; if (paintOnce) { OwnPtr<ImageBuffer> imageBuffer = ImageBuffer::create(dirtyRect.size()); GraphicsContext* context = imageBuffer->context(); context->setImageInterpolationQuality(textureMapper->imageInterpolationQuality()); context->setTextDrawingMode(textureMapper->textDrawingMode()); context->translate(-dirtyRect.x(), -dirtyRect.y()); paintGraphicsLayerContents(*context, dirtyRect); if (isShowingRepaintCounter()) drawRepaintCounter(context); RefPtr<Image> image = imageBuffer->copyImage(DontCopyBackingStore); backingStore->updateContents(textureMapper, image.get(), m_size, dirtyRect, BitmapTexture::UpdateCanModifyOriginalImageData); } else backingStore->updateContents(textureMapper, this, m_size, dirtyRect, BitmapTexture::UpdateCanModifyOriginalImageData); backingStore->setShowDebugBorders(isShowingDebugBorder()); backingStore->setDebugBorder(m_debugBorderColor, m_debugBorderWidth); m_needsDisplay = false; m_needsDisplayRect = IntRect(); }
bool GraphicsLayerAndroid::paintContext(SkPicture* context, const IntRect& rect) { SkAutoPictureRecord arp(context, rect.width(), rect.height()); SkCanvas* canvas = arp.getRecordingCanvas(); if (!canvas) return false; PlatformGraphicsContext platformContext(canvas); GraphicsContext graphicsContext(&platformContext); paintGraphicsLayerContents(graphicsContext, rect); return true; }
void GraphicsLayerChromium::paintContents(GraphicsContext& context, const IntRect& clip) { paintGraphicsLayerContents(context, clip); }
void GraphicsLayerClutter::platformClutterLayerPaintContents(GraphicsContext& context, const IntRect& clip) { paintGraphicsLayerContents(context, clip); }
void GraphicsLayerChromium::paint(GraphicsContext& context, const IntRect& clip) { context.platformContext()->setDrawingToImageBuffer(true); paintGraphicsLayerContents(context, clip); }
void CoordinatedGraphicsLayer::tiledBackingStorePaint(GraphicsContext* context, const IntRect& rect) { if (rect.isEmpty()) return; paintGraphicsLayerContents(*context, rect); }