mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-11 12:25:53 +00:00
Bug 1384839 - Part2. Add BuildWrMaskImage() for creating WrImageMask. r=kats
MozReview-Commit-ID: 5S3CRSLX5wY --HG-- extra : rebase_source : aeedbdf986d6f53b1f9410bbe5608dc45226c8f7
This commit is contained in:
parent
582a02967a
commit
a79f89c36a
@ -371,7 +371,13 @@ PaintItemByDrawTarget(nsDisplayItem* aItem,
|
||||
aDT->ClearRect(aImageRect.ToUnknownRect());
|
||||
RefPtr<gfxContext> context = gfxContext::CreateOrNull(aDT, aOffset.ToUnknownPoint());
|
||||
MOZ_ASSERT(context);
|
||||
aItem->Paint(aDisplayListBuilder, context);
|
||||
|
||||
if (aItem->GetType() == nsDisplayItem::TYPE_MASK) {
|
||||
context->SetMatrix(gfxMatrix::Translation(-aOffset.x, -aOffset.y));
|
||||
static_cast<nsDisplayMask*>(aItem)->PaintMask(aDisplayListBuilder, context);
|
||||
} else {
|
||||
aItem->Paint(aDisplayListBuilder, context);
|
||||
}
|
||||
|
||||
if (gfxPrefs::WebRenderHighlightPaintedLayers()) {
|
||||
aDT->SetTransform(Matrix());
|
||||
@ -492,6 +498,28 @@ WebRenderLayerManager::GenerateFallbackData(nsDisplayItem* aItem,
|
||||
return fallbackData.forget();
|
||||
}
|
||||
|
||||
Maybe<wr::WrImageMask>
|
||||
WebRenderLayerManager::BuildWrMaskImage(nsDisplayItem* aItem,
|
||||
wr::DisplayListBuilder& aBuilder,
|
||||
const StackingContextHelper& aSc,
|
||||
nsDisplayListBuilder* aDisplayListBuilder,
|
||||
const LayerRect& aBounds)
|
||||
{
|
||||
LayerRect imageRect;
|
||||
LayerPoint offset;
|
||||
RefPtr<WebRenderFallbackData> fallbackData = GenerateFallbackData(aItem, aBuilder, aDisplayListBuilder,
|
||||
imageRect, offset);
|
||||
if (!fallbackData) {
|
||||
return Nothing();
|
||||
}
|
||||
|
||||
wr::WrImageMask imageMask;
|
||||
imageMask.image = fallbackData->GetKey().value();
|
||||
imageMask.rect = aSc.ToRelativeLayoutRect(aBounds);
|
||||
imageMask.repeat = false;
|
||||
return Some(imageMask);
|
||||
}
|
||||
|
||||
bool
|
||||
WebRenderLayerManager::PushItemAsImage(nsDisplayItem* aItem,
|
||||
wr::DisplayListBuilder& aBuilder,
|
||||
|
@ -75,6 +75,11 @@ public:
|
||||
nsDisplayListBuilder* aDisplayListBuilder,
|
||||
LayerRect& aImageRect,
|
||||
LayerPoint& aOffset);
|
||||
Maybe<wr::WrImageMask> BuildWrMaskImage(nsDisplayItem* aItem,
|
||||
wr::DisplayListBuilder& aBuilder,
|
||||
const StackingContextHelper& aSc,
|
||||
nsDisplayListBuilder* aDisplayListBuilder,
|
||||
const LayerRect& aBounds);
|
||||
bool PushItemAsImage(nsDisplayItem* aItem,
|
||||
wr::DisplayListBuilder& aBuilder,
|
||||
const StackingContextHelper& aSc,
|
||||
|
Loading…
Reference in New Issue
Block a user