Bug 1372118 - Part3. Implement CreateWebRenderCommands for text, transform and background color. r=jrmuizel, r=kats
MozReview-Commit-ID: JRoSjygSFHc
This commit is contained in:
@@ -69,6 +69,10 @@
|
||||
#include "mozilla/StyleSetHandle.h"
|
||||
#include "mozilla/StyleSetHandleInlines.h"
|
||||
#include "mozilla/layers/LayersMessages.h"
|
||||
#include "mozilla/layers/WebRenderLayerManager.h"
|
||||
#include "mozilla/layers/WebRenderBridgeChild.h"
|
||||
#include "mozilla/webrender/WebRenderAPI.h"
|
||||
#include "mozilla/layers/StackingContextHelper.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <limits>
|
||||
@@ -4921,6 +4925,11 @@ public:
|
||||
virtual already_AddRefed<Layer> BuildLayer(nsDisplayListBuilder* aBuilder,
|
||||
LayerManager* aManager,
|
||||
const ContainerLayerParameters& aContainerParameters) override;
|
||||
virtual bool CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder,
|
||||
const StackingContextHelper& aSc,
|
||||
nsTArray<WebRenderParentCommand>& aParentCommands,
|
||||
WebRenderLayerManager* aManager,
|
||||
nsDisplayListBuilder* aDisplayListBuilder) override;
|
||||
virtual void Paint(nsDisplayListBuilder* aBuilder,
|
||||
gfxContext* aCtx) override;
|
||||
NS_DISPLAY_DECL_NAME("Text", TYPE_TEXT)
|
||||
@@ -5164,6 +5173,39 @@ nsDisplayText::Paint(nsDisplayListBuilder* aBuilder,
|
||||
RenderToContext(aCtx, aBuilder);
|
||||
}
|
||||
|
||||
bool
|
||||
nsDisplayText::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder,
|
||||
const StackingContextHelper& aSc,
|
||||
nsTArray<WebRenderParentCommand>& aParentCommands,
|
||||
WebRenderLayerManager* aManager,
|
||||
nsDisplayListBuilder* aDisplayListBuilder)
|
||||
{
|
||||
if (aManager->IsLayersFreeTransaction()) {
|
||||
ContainerLayerParameters parameter;
|
||||
if (GetLayerState(aDisplayListBuilder, aManager, parameter) != LAYER_ACTIVE) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (mBounds.IsEmpty()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
auto appUnitsPerDevPixel = mFrame->PresContext()->AppUnitsPerDevPixel();
|
||||
LayoutDeviceRect rect = LayoutDeviceRect::FromAppUnits(
|
||||
mBounds, appUnitsPerDevPixel);
|
||||
LayoutDeviceRect clipRect = rect;
|
||||
if (GetClip().HasClip()) {
|
||||
clipRect = LayoutDeviceRect::FromAppUnits(
|
||||
GetClip().GetClipRect(), appUnitsPerDevPixel);
|
||||
}
|
||||
aManager->WrBridge()->PushGlyphs(aBuilder, mGlyphs, mFont, aSc,
|
||||
LayerRect::FromUnknownRect(rect.ToUnknownRect()),
|
||||
LayerRect::FromUnknownRect(clipRect.ToUnknownRect()));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
already_AddRefed<layers::Layer>
|
||||
nsDisplayText::BuildLayer(nsDisplayListBuilder* aBuilder,
|
||||
LayerManager* aManager,
|
||||
|
||||
Reference in New Issue
Block a user