Bug 1213545. Carry x,y offsets with inset box shadows. r=mstange

This commit is contained in:
Mason Chang 2015-10-19 10:53:04 -07:00
parent 9568501c09
commit 03fb645c91
4 changed files with 16 additions and 8 deletions

View File

@ -980,7 +980,8 @@ gfxAlphaBoxBlur::BlurInsetBox(gfxContext* aDestinationCtx,
const Color& aShadowColor,
bool aHasBorderRadius,
const RectCornerRadii& aInnerClipRadii,
const Rect aSkipRect)
const Rect aSkipRect,
const Point aShadowOffset)
{
// Blur inset shadows ALWAYS have a 0 spread radius.
if ((aBlurRadius.width <= 0 && aBlurRadius.height <= 0)) {
@ -1005,6 +1006,7 @@ gfxAlphaBoxBlur::BlurInsetBox(gfxContext* aDestinationCtx,
srcInner.Deflate(Margin(slice));
Rect dstOuter(aDestinationRect);
dstOuter.MoveBy(aShadowOffset);
dstOuter.Inflate(Margin(extendDest));
Rect dstInner = dstOuter;
dstInner.Deflate(Margin(slice));

View File

@ -160,7 +160,8 @@ public:
const mozilla::gfx::Color& aShadowColor,
const bool aHasBorderRadius,
const RectCornerRadii& aInnerClipRadii,
const mozilla::gfx::Rect aSkipRect);
const mozilla::gfx::Rect aSkipRect,
const mozilla::gfx::Point aShadowOffset);
protected:
already_AddRefed<mozilla::gfx::SourceSurface>

View File

@ -1606,11 +1606,15 @@ nsCSSRendering::PaintBoxShadowInner(nsPresContext* aPresContext,
nsContextBoxBlur insetBoxBlur;
gfxRect destRect = nsLayoutUtils::RectToGfxRect(shadowPaintRect, twipsPerPixel);
Point shadowOffset(shadowItem->mXOffset / twipsPerPixel,
shadowItem->mYOffset / twipsPerPixel);
insetBoxBlur.InsetBoxBlur(renderContext, ToRect(destRect),
shadowClipGfxRect, shadowColor,
blurRadius, spreadDistanceAppUnits,
twipsPerPixel, hasBorderRadius,
clipRectRadii, ToRect(skipGfxRect));
clipRectRadii, ToRect(skipGfxRect),
shadowOffset);
renderContext->Restore();
}
}
@ -5544,7 +5548,7 @@ nsContextBoxBlur::InsetBoxBlur(gfxContext* aDestinationCtx,
int32_t aAppUnitsPerDevPixel,
bool aHasBorderRadius,
RectCornerRadii& aInnerClipRectRadii,
Rect aSkipRect)
Rect aSkipRect, Point aShadowOffset)
{
if (aDestinationRect.IsEmpty()) {
mContext = nullptr;
@ -5586,9 +5590,9 @@ nsContextBoxBlur::InsetBoxBlur(gfxContext* aDestinationCtx,
mAlphaBoxBlur.BlurInsetBox(aDestinationCtx, transformedDestRect,
transformedShadowClipRect,
blurRadius, spreadRadius,
aShadowColor,
aHasBorderRadius,
aInnerClipRectRadii, transformedSkipRect);
aShadowColor, aHasBorderRadius,
aInnerClipRectRadii, transformedSkipRect,
aShadowOffset);
}
return true;
}

View File

@ -982,7 +982,8 @@ public:
int32_t aAppUnitsPerDevPixel,
bool aHasBorderRadius,
RectCornerRadii& aInnerClipRectRadii,
mozilla::gfx::Rect aSkipRect);
mozilla::gfx::Rect aSkipRect,
mozilla::gfx::Point aShadowOffset);
protected:
static void GetBlurAndSpreadRadius(gfxContext* aContext,