зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1331538 - Add BorderLayerProperties for border layer. r=mattwoodrow
--HG-- extra : rebase_source : e6d182eaa1c0f2c687853309fca5c967a86a7805
This commit is contained in:
Родитель
eb9554ad2c
Коммит
abf0951bfa
|
@ -510,6 +510,52 @@ public:
|
|||
IntRect mBounds;
|
||||
};
|
||||
|
||||
struct BorderLayerProperties : public LayerPropertiesBase
|
||||
{
|
||||
explicit BorderLayerProperties(BorderLayer *aLayer)
|
||||
: LayerPropertiesBase(aLayer)
|
||||
, mColors(aLayer->GetColors())
|
||||
, mRect(aLayer->GetRect())
|
||||
, mCorners(aLayer->GetCorners())
|
||||
, mWidths(aLayer->GetWidths())
|
||||
{ }
|
||||
|
||||
protected:
|
||||
BorderLayerProperties(const BorderLayerProperties& a) = delete;
|
||||
BorderLayerProperties& operator=(const BorderLayerProperties& a) = delete;
|
||||
|
||||
public:
|
||||
nsIntRegion ComputeChangeInternal(const char* aPrefix,
|
||||
NotifySubDocInvalidationFunc aCallback,
|
||||
bool& aGeometryChanged) override
|
||||
{
|
||||
BorderLayer* border = static_cast<BorderLayer*>(mLayer.get());
|
||||
|
||||
if (!border->GetLocalVisibleRegion().ToUnknownRegion().IsEqual(mVisibleRegion)) {
|
||||
aGeometryChanged = true;
|
||||
IntRect result = NewTransformedBounds();
|
||||
result = result.Union(OldTransformedBounds());
|
||||
return result;
|
||||
}
|
||||
|
||||
if (!PodEqual(&mColors[0], &border->GetColors()[0], 4) ||
|
||||
!PodEqual(&mWidths[0], &border->GetWidths()[0], 4) ||
|
||||
!PodEqual(&mCorners[0], &border->GetCorners()[0], 4) ||
|
||||
!mRect.IsEqualEdges(border->GetRect())) {
|
||||
aGeometryChanged = true;
|
||||
LTI_DUMP(NewTransformedBounds(), "bounds");
|
||||
return NewTransformedBounds();
|
||||
}
|
||||
|
||||
return nsIntRegion();
|
||||
}
|
||||
|
||||
BorderColors mColors;
|
||||
LayerRect mRect;
|
||||
BorderCorners mCorners;
|
||||
BorderWidths mWidths;
|
||||
};
|
||||
|
||||
static ImageHost* GetImageHost(Layer* aLayer)
|
||||
{
|
||||
HostLayer* compositor = aLayer->AsHostLayer();
|
||||
|
@ -644,11 +690,12 @@ CloneLayerTreePropertiesInternal(Layer* aRoot, bool aIsMask /* = false */)
|
|||
return MakeUnique<ImageLayerProperties>(static_cast<ImageLayer*>(aRoot), aIsMask);
|
||||
case Layer::TYPE_CANVAS:
|
||||
return MakeUnique<CanvasLayerProperties>(static_cast<CanvasLayer*>(aRoot));
|
||||
case Layer::TYPE_BORDER:
|
||||
return MakeUnique<BorderLayerProperties>(static_cast<BorderLayer*>(aRoot));
|
||||
case Layer::TYPE_READBACK:
|
||||
case Layer::TYPE_SHADOW:
|
||||
case Layer::TYPE_PAINTED:
|
||||
case Layer::TYPE_TEXT:
|
||||
case Layer::TYPE_BORDER:
|
||||
return MakeUnique<LayerPropertiesBase>(aRoot);
|
||||
}
|
||||
|
||||
|
|
|
@ -2510,6 +2510,11 @@ public:
|
|||
ComputeEffectiveTransformForMaskLayers(aTransformToSurface);
|
||||
}
|
||||
|
||||
const BorderColors& GetColors() { return mColors; }
|
||||
const LayerRect& GetRect() { return mRect; }
|
||||
const BorderCorners& GetCorners() { return mCorners; }
|
||||
const BorderWidths& GetWidths() { return mWidths; }
|
||||
|
||||
protected:
|
||||
BorderLayer(LayerManager* aManager, void* aImplData)
|
||||
: Layer(aManager, aImplData)
|
||||
|
|
Загрузка…
Ссылка в новой задаче