зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1310575 - Part 1. Have a new base class for nsDisplayMaskGeometry and nsDisplayFilterGeometry. r=mstange
Use nsDisplayMaskGeometry, created by nsDisplayMask, in nsDisplaySVGEffects, which is the parent class of nsDisplayMask) is odd. So create a base class for both nsDisplayMaskGeometry and nsDisplayFilterGeometry. Use this base class in nsDisplaySVGEffects's code. MozReview-Commit-ID: G3FLybT1pQp --HG-- extra : rebase_source : c8d2f5f122a9888adaba7d309f95cea6b957ee3e
This commit is contained in:
Родитель
2cd6e3dddb
Коммит
5c0dd57b39
|
@ -6798,8 +6798,8 @@ nsDisplaySVGEffects::ComputeInvalidationRegion(nsDisplayListBuilder* aBuilder,
|
|||
const nsDisplayItemGeometry* aGeometry,
|
||||
nsRegion* aInvalidRegion)
|
||||
{
|
||||
const nsDisplayMaskGeometry* geometry =
|
||||
static_cast<const nsDisplayMaskGeometry*>(aGeometry);
|
||||
const nsDisplaySVGEffectGeometry* geometry =
|
||||
static_cast<const nsDisplaySVGEffectGeometry*>(aGeometry);
|
||||
bool snap;
|
||||
nsRect bounds = GetBounds(aBuilder, &snap);
|
||||
if (geometry->mFrameOffsetToReferenceFrame != ToReferenceFrame() ||
|
||||
|
|
|
@ -113,37 +113,31 @@ nsDisplaySolidColorRegionGeometry::MoveBy(const nsPoint& aOffset)
|
|||
mRegion.MoveBy(aOffset);
|
||||
}
|
||||
|
||||
nsDisplayMaskGeometry::nsDisplayMaskGeometry(nsDisplayMask* aItem, nsDisplayListBuilder* aBuilder)
|
||||
nsDisplaySVGEffectGeometry::nsDisplaySVGEffectGeometry(nsDisplaySVGEffects* aItem, nsDisplayListBuilder* aBuilder)
|
||||
: nsDisplayItemGeometry(aItem, aBuilder)
|
||||
, nsImageGeometryMixin(aItem, aBuilder)
|
||||
, mBBox(aItem->BBoxInUserSpace())
|
||||
, mUserSpaceOffset(aItem->UserSpaceOffset())
|
||||
, mFrameOffsetToReferenceFrame(aItem->ToReferenceFrame())
|
||||
{}
|
||||
|
||||
void
|
||||
nsDisplaySVGEffectGeometry::MoveBy(const nsPoint& aOffset)
|
||||
{
|
||||
mBounds.MoveBy(aOffset);
|
||||
mFrameOffsetToReferenceFrame += aOffset;
|
||||
}
|
||||
|
||||
nsDisplayMaskGeometry::nsDisplayMaskGeometry(nsDisplayMask* aItem, nsDisplayListBuilder* aBuilder)
|
||||
: nsDisplaySVGEffectGeometry(aItem, aBuilder)
|
||||
, nsImageGeometryMixin(aItem, aBuilder)
|
||||
, mDestRects(aItem->GetDestRects())
|
||||
{}
|
||||
|
||||
void
|
||||
nsDisplayMaskGeometry::MoveBy(const nsPoint& aOffset)
|
||||
{
|
||||
mBounds.MoveBy(aOffset);
|
||||
mFrameOffsetToReferenceFrame += aOffset;
|
||||
}
|
||||
|
||||
nsDisplayFilterGeometry::nsDisplayFilterGeometry(nsDisplayFilter* aItem, nsDisplayListBuilder* aBuilder)
|
||||
: nsDisplayItemGeometry(aItem, aBuilder)
|
||||
: nsDisplaySVGEffectGeometry(aItem, aBuilder)
|
||||
, nsImageGeometryMixin(aItem, aBuilder)
|
||||
, mBBox(aItem->BBoxInUserSpace())
|
||||
, mUserSpaceOffset(aItem->UserSpaceOffset())
|
||||
, mFrameOffsetToReferenceFrame(aItem->ToReferenceFrame())
|
||||
{}
|
||||
|
||||
void
|
||||
nsDisplayFilterGeometry::MoveBy(const nsPoint& aOffset)
|
||||
{
|
||||
mBounds.MoveBy(aOffset);
|
||||
mFrameOffsetToReferenceFrame += aOffset;
|
||||
}
|
||||
|
||||
nsCharClipGeometry::nsCharClipGeometry(nsCharClipDisplayItem* aItem, nsDisplayListBuilder* aBuilder)
|
||||
: nsDisplayItemGenericGeometry(aItem, aBuilder)
|
||||
, mVisIStartEdge(aItem->mVisIStartEdge)
|
||||
|
|
|
@ -19,6 +19,7 @@ class nsDisplayItem;
|
|||
class nsDisplayListBuilder;
|
||||
class nsDisplayTableItem;
|
||||
class nsDisplayThemedBackground;
|
||||
class nsDisplaySVGEffects;
|
||||
class nsDisplayMask;
|
||||
class nsDisplayFilter;
|
||||
|
||||
|
@ -266,39 +267,41 @@ public:
|
|||
mozilla::gfx::Color mColor;
|
||||
};
|
||||
|
||||
class nsDisplayMaskGeometry : public nsDisplayItemGeometry
|
||||
class nsDisplaySVGEffectGeometry : public nsDisplayItemGeometry
|
||||
{
|
||||
public:
|
||||
nsDisplaySVGEffectGeometry(nsDisplaySVGEffects* aItem,
|
||||
nsDisplayListBuilder* aBuilder);
|
||||
|
||||
virtual void MoveBy(const nsPoint& aOffset) override;
|
||||
|
||||
gfxRect mBBox;
|
||||
gfxPoint mUserSpaceOffset;
|
||||
nsPoint mFrameOffsetToReferenceFrame;
|
||||
};
|
||||
|
||||
class nsDisplayMaskGeometry : public nsDisplaySVGEffectGeometry
|
||||
, public nsImageGeometryMixin<nsDisplayMaskGeometry>
|
||||
{
|
||||
public:
|
||||
nsDisplayMaskGeometry(nsDisplayMask* aItem, nsDisplayListBuilder* aBuilder);
|
||||
|
||||
virtual void MoveBy(const nsPoint& aOffset) override;
|
||||
|
||||
gfxRect mBBox;
|
||||
gfxPoint mUserSpaceOffset;
|
||||
nsPoint mFrameOffsetToReferenceFrame;
|
||||
|
||||
nsTArray<nsRect> mDestRects;
|
||||
};
|
||||
|
||||
class nsDisplayFilterGeometry : public nsDisplayItemGeometry
|
||||
, public nsImageGeometryMixin<nsDisplayMaskGeometry>
|
||||
class nsDisplayFilterGeometry : public nsDisplaySVGEffectGeometry
|
||||
, public nsImageGeometryMixin<nsDisplayFilterGeometry>
|
||||
{
|
||||
public:
|
||||
nsDisplayFilterGeometry(nsDisplayFilter* aItem,
|
||||
nsDisplayListBuilder* aBuilder);
|
||||
|
||||
virtual void MoveBy(const nsPoint& aOffset) override;
|
||||
|
||||
gfxRect mBBox;
|
||||
gfxPoint mUserSpaceOffset;
|
||||
nsPoint mFrameOffsetToReferenceFrame;
|
||||
};
|
||||
|
||||
class nsCharClipGeometry : public nsDisplayItemGenericGeometry
|
||||
{
|
||||
public:
|
||||
nsCharClipGeometry(nsCharClipDisplayItem* aItem, nsDisplayListBuilder* aBuilder);
|
||||
nsCharClipGeometry(nsCharClipDisplayItem* aItem,
|
||||
nsDisplayListBuilder* aBuilder);
|
||||
|
||||
nscoord mVisIStartEdge;
|
||||
nscoord mVisIEndEdge;
|
||||
|
|
Загрузка…
Ссылка в новой задаче