mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-07 18:04:46 +00:00
Bug 1346451 - Delete WebRenderBorderLayer. r=ethlin
This commit is contained in:
parent
916f12ed8f
commit
516a3654f4
@ -191,7 +191,6 @@ EXPORTS.mozilla.layers += [
|
||||
'SourceSurfaceVolatileData.h',
|
||||
'TextureWrapperImage.h',
|
||||
'TransactionIdAllocator.h',
|
||||
'wr/WebRenderBorderLayer.h',
|
||||
'wr/WebRenderBridgeChild.h',
|
||||
'wr/WebRenderBridgeParent.h',
|
||||
'wr/WebRenderCompositableHolder.h',
|
||||
@ -377,7 +376,6 @@ UNIFIED_SOURCES += [
|
||||
'SourceSurfaceSharedData.cpp',
|
||||
'SourceSurfaceVolatileData.cpp',
|
||||
'TextureWrapperImage.cpp',
|
||||
'wr/WebRenderBorderLayer.cpp',
|
||||
'wr/WebRenderBridgeChild.cpp',
|
||||
'wr/WebRenderBridgeParent.cpp',
|
||||
'wr/WebRenderCanvasLayer.cpp',
|
||||
|
@ -1,79 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#include "WebRenderBorderLayer.h"
|
||||
|
||||
#include "gfxPrefs.h"
|
||||
#include "LayersLogging.h"
|
||||
#include "mozilla/gfx/Rect.h"
|
||||
#include "mozilla/webrender/webrender_ffi.h"
|
||||
#include "mozilla/layers/WebRenderBridgeChild.h"
|
||||
#include "mozilla/webrender/WebRenderTypes.h"
|
||||
|
||||
namespace mozilla {
|
||||
namespace layers {
|
||||
|
||||
using namespace mozilla::gfx;
|
||||
|
||||
/* static */void
|
||||
WebRenderBorderLayer::CreateWebRenderCommands(wr::DisplayListBuilder& aBuilder,
|
||||
WebRenderLayer* aLayer,
|
||||
BorderColors& aColors,
|
||||
BorderCorners& aCorners,
|
||||
BorderWidths& aWidths,
|
||||
BorderStyles& aBorderStyles,
|
||||
Rect aRect,
|
||||
Rect aClipRect,
|
||||
Rect aRelBounds,
|
||||
Rect aOverflow)
|
||||
{
|
||||
aBuilder.PushStackingContext(wr::ToWrRect(aRelBounds),
|
||||
wr::ToWrRect(aOverflow),
|
||||
nullptr,
|
||||
1.0f,
|
||||
aLayer->GetLayer()->GetTransform(),
|
||||
wr::MixBlendMode::Normal);
|
||||
aBuilder.PushBorder(wr::ToWrRect(aRect), aBuilder.BuildClipRegion(wr::ToWrRect(aClipRect)),
|
||||
wr::ToWrBorderWidths(aWidths[0], aWidths[1], aWidths[2], aWidths[3]),
|
||||
wr::ToWrBorderSide(aColors[0], aBorderStyles[0]),
|
||||
wr::ToWrBorderSide(aColors[1], aBorderStyles[1]),
|
||||
wr::ToWrBorderSide(aColors[2], aBorderStyles[2]),
|
||||
wr::ToWrBorderSide(aColors[3], aBorderStyles[3]),
|
||||
wr::ToWrBorderRadius(aCorners[eCornerTopLeft], aCorners[eCornerTopRight],
|
||||
aCorners[eCornerBottomLeft], aCorners[eCornerBottomRight]));
|
||||
aBuilder.PopStackingContext();
|
||||
}
|
||||
|
||||
void
|
||||
WebRenderBorderLayer::RenderLayer(wr::DisplayListBuilder& aBuilder)
|
||||
{
|
||||
gfx::Rect relBounds = GetWrRelBounds();
|
||||
gfx::Rect overflow(0, 0, relBounds.width, relBounds.height);
|
||||
|
||||
gfx::Rect rect = GetWrBoundsRect();
|
||||
gfx::Rect clipRect = GetWrClipRect(rect);
|
||||
|
||||
DumpLayerInfo("BorderLayer", rect);
|
||||
|
||||
aBuilder.PushStackingContext(wr::ToWrRect(relBounds),
|
||||
wr::ToWrRect(overflow),
|
||||
nullptr,
|
||||
1.0f,
|
||||
//GetAnimations(),
|
||||
GetTransform(),
|
||||
wr::MixBlendMode::Normal);
|
||||
aBuilder.PushBorder(wr::ToWrRect(rect), aBuilder.BuildClipRegion(wr::ToWrRect(clipRect)),
|
||||
wr::ToWrBorderWidths(mWidths[0], mWidths[1], mWidths[2], mWidths[3]),
|
||||
wr::ToWrBorderSide(mColors[0], mBorderStyles[0]),
|
||||
wr::ToWrBorderSide(mColors[1], mBorderStyles[1]),
|
||||
wr::ToWrBorderSide(mColors[2], mBorderStyles[2]),
|
||||
wr::ToWrBorderSide(mColors[3], mBorderStyles[3]),
|
||||
wr::ToWrBorderRadius(mCorners[eCornerTopLeft], mCorners[eCornerTopRight],
|
||||
mCorners[eCornerBottomLeft], mCorners[eCornerBottomRight]));
|
||||
aBuilder.PopStackingContext();
|
||||
}
|
||||
|
||||
} // namespace layers
|
||||
} // namespace mozilla
|
@ -1,50 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#ifndef GFX_WEBRENDERBORDERLAYER_H
|
||||
#define GFX_WEBRENDERBORDERLAYER_H
|
||||
|
||||
#include "Layers.h"
|
||||
#include "WebRenderLayerManager.h"
|
||||
|
||||
namespace mozilla {
|
||||
namespace layers {
|
||||
|
||||
class WebRenderBorderLayer : public WebRenderLayer,
|
||||
public BorderLayer {
|
||||
public:
|
||||
explicit WebRenderBorderLayer(WebRenderLayerManager* aLayerManager)
|
||||
: BorderLayer(aLayerManager, static_cast<WebRenderLayer*>(this))
|
||||
{
|
||||
MOZ_COUNT_CTOR(WebRenderBorderLayer);
|
||||
}
|
||||
|
||||
static void
|
||||
CreateWebRenderCommands(wr::DisplayListBuilder& aBuilder,
|
||||
WebRenderLayer* aLayer,
|
||||
BorderColors& aColors,
|
||||
BorderCorners& aCorners,
|
||||
BorderWidths& aWidths,
|
||||
BorderStyles& aBorderStyles,
|
||||
gfx::Rect aRect,
|
||||
gfx::Rect aClipRect,
|
||||
gfx::Rect aRelBounds,
|
||||
gfx::Rect aOverflow);
|
||||
|
||||
protected:
|
||||
virtual ~WebRenderBorderLayer()
|
||||
{
|
||||
MOZ_COUNT_DTOR(WebRenderBorderLayer);
|
||||
}
|
||||
|
||||
public:
|
||||
Layer* GetLayer() override { return this; }
|
||||
void RenderLayer(wr::DisplayListBuilder& aBuilder) override;
|
||||
};
|
||||
|
||||
} // namespace layers
|
||||
} // namespace mozilla
|
||||
|
||||
#endif // GFX_WEBRENDERBORDERLAYER_H
|
@ -17,7 +17,6 @@
|
||||
#include "mozilla/widget/PlatformWidgetTypes.h"
|
||||
#include "nsThreadUtils.h"
|
||||
#include "TreeTraversal.h"
|
||||
#include "WebRenderBorderLayer.h"
|
||||
#include "WebRenderCanvasLayer.h"
|
||||
#include "WebRenderColorLayer.h"
|
||||
#include "WebRenderContainerLayer.h"
|
||||
@ -541,7 +540,7 @@ WebRenderLayerManager::CreateTextLayer()
|
||||
already_AddRefed<BorderLayer>
|
||||
WebRenderLayerManager::CreateBorderLayer()
|
||||
{
|
||||
return MakeAndAddRef<WebRenderBorderLayer>(this);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
already_AddRefed<DisplayItemLayer>
|
||||
|
@ -19,7 +19,6 @@
|
||||
#include "gfxPrefs.h"
|
||||
#include "gfxUtils.h"
|
||||
#include "mozilla/layers/WebRenderDisplayItemLayer.h"
|
||||
#include "mozilla/layers/WebRenderBorderLayer.h"
|
||||
|
||||
#define ACTIVE "active"
|
||||
#define HOVER "hover"
|
||||
|
@ -4659,32 +4659,35 @@ nsDisplayBorder::BuildLayer(nsDisplayListBuilder* aBuilder,
|
||||
LayerManager* aManager,
|
||||
const ContainerLayerParameters& aContainerParameters)
|
||||
{
|
||||
if (mBorderImageRenderer) {
|
||||
return BuildDisplayItemLayer(aBuilder, aManager, aContainerParameters);
|
||||
}
|
||||
|
||||
RefPtr<Layer> oldLayer = aManager->GetLayerBuilder()->GetLeafLayerFor(aBuilder, this);
|
||||
RefPtr<BorderLayer> layer = oldLayer ? oldLayer->AsBorderLayer() : nullptr;
|
||||
|
||||
if (!layer) {
|
||||
layer = aManager->CreateBorderLayer();
|
||||
if (!layer)
|
||||
return nullptr;
|
||||
}
|
||||
layer->SetRect(mRect);
|
||||
layer->SetCornerRadii(mCorners);
|
||||
layer->SetColors(mColors);
|
||||
layer->SetWidths(mWidths);
|
||||
layer->SetStyles(mBorderStyles);
|
||||
layer->SetBaseTransform(gfx::Matrix4x4::Translation(aContainerParameters.mOffset.x,
|
||||
aContainerParameters.mOffset.y, 0));
|
||||
return layer.forget();
|
||||
return BuildDisplayItemLayer(aBuilder, aManager, aContainerParameters);
|
||||
}
|
||||
|
||||
void
|
||||
nsDisplayBorder::CreateWebRenderCommands(wr::DisplayListBuilder& aBuilder,
|
||||
nsTArray<WebRenderParentCommand>& aParentCommands,
|
||||
WebRenderDisplayItemLayer* aLayer)
|
||||
nsDisplayBorder::CreateBorderWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder,
|
||||
WebRenderDisplayItemLayer* aLayer)
|
||||
{
|
||||
nsPoint offset = ToReferenceFrame();
|
||||
Maybe<nsCSSBorderRenderer> br =
|
||||
nsCSSRendering::CreateBorderRenderer(mFrame->PresContext(),
|
||||
nullptr,
|
||||
mFrame,
|
||||
nsRect(),
|
||||
nsRect(offset, mFrame->GetSize()),
|
||||
mFrame->StyleContext(),
|
||||
mFrame->GetSkipSides());
|
||||
|
||||
if (!br) {
|
||||
NS_WARNING("Could not create border renderer during nsDisplayButtonBorder");
|
||||
return;
|
||||
}
|
||||
|
||||
br->CreateWebRenderCommands(aBuilder, aLayer);
|
||||
}
|
||||
|
||||
void
|
||||
nsDisplayBorder::CreateBorderImageWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder,
|
||||
nsTArray<WebRenderParentCommand>& aParentCommands,
|
||||
WebRenderDisplayItemLayer* aLayer)
|
||||
{
|
||||
// Only support border-image currently
|
||||
MOZ_ASSERT(mBorderImageRenderer);
|
||||
@ -4745,6 +4748,18 @@ nsDisplayBorder::CreateWebRenderCommands(wr::DisplayListBuilder& aBuilder,
|
||||
wr::ToWrRepeatMode(mBorderImageRenderer->mRepeatModeVertical));
|
||||
}
|
||||
|
||||
void
|
||||
nsDisplayBorder::CreateWebRenderCommands(wr::DisplayListBuilder& aBuilder,
|
||||
nsTArray<WebRenderParentCommand>& aParentCommands,
|
||||
WebRenderDisplayItemLayer* aLayer)
|
||||
{
|
||||
if (mBorderImageRenderer) {
|
||||
CreateBorderImageWebRenderCommands(aBuilder, aParentCommands, aLayer);
|
||||
} else {
|
||||
CreateBorderWebRenderCommands(aBuilder, aLayer);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
nsDisplayBorder::Paint(nsDisplayListBuilder* aBuilder,
|
||||
nsRenderingContext* aCtx) {
|
||||
|
@ -2877,6 +2877,11 @@ public:
|
||||
}
|
||||
|
||||
protected:
|
||||
void CreateBorderImageWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder,
|
||||
nsTArray<WebRenderParentCommand>& aParentCommands,
|
||||
WebRenderDisplayItemLayer* aLayer);
|
||||
void CreateBorderWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder,
|
||||
WebRenderDisplayItemLayer* aLayer);
|
||||
nsRegion CalculateBounds(const nsStyleBorder& aStyleBorder);
|
||||
|
||||
mozilla::Array<mozilla::gfx::Color, 4> mColors;
|
||||
|
Loading…
Reference in New Issue
Block a user