зеркало из https://github.com/mozilla/pjs.git
b=24998, background images spill beyond rounded borders; r+sr=roc
This commit is contained in:
Родитель
44e48d8b89
Коммит
cca0ef5086
|
@ -3642,12 +3642,59 @@ nsCSSRendering::PaintBackgroundWithSC(nsPresContext* aPresContext,
|
||||||
anchor.y += bgClipArea.y - aBorderArea.y;
|
anchor.y += bgClipArea.y - aBorderArea.y;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if (!defined(XP_UNIX) && !defined(XP_BEOS)) || defined(XP_MACOSX)
|
nsRefPtr<gfxContext> ctx = (gfxContext*)
|
||||||
// Setup clipping so that rendering doesn't leak out of the computed
|
aRenderingContext.GetNativeGraphicData(nsIRenderingContext::NATIVE_THEBES_CONTEXT);
|
||||||
// dirty rect
|
ctx->Save();
|
||||||
aRenderingContext.PushState();
|
|
||||||
aRenderingContext.SetClipRect(dirtyRect, nsClipCombine_kIntersect);
|
nscoord appUnitsPerPixel = aPresContext->DevPixelsToAppUnits(1);
|
||||||
#endif
|
|
||||||
|
ctx->NewPath();
|
||||||
|
ctx->Rectangle(RectToGfxRect(dirtyRect, appUnitsPerPixel), PR_TRUE);
|
||||||
|
ctx->Clip();
|
||||||
|
|
||||||
|
nsStyleCoord bordStyleRadius[4];
|
||||||
|
nscoord borderRadii[4];
|
||||||
|
|
||||||
|
// get the radius for our border
|
||||||
|
aBorder.mBorderRadius.GetTop(bordStyleRadius[NS_SIDE_TOP]); // topleft
|
||||||
|
aBorder.mBorderRadius.GetRight(bordStyleRadius[NS_SIDE_RIGHT]); // topright
|
||||||
|
aBorder.mBorderRadius.GetBottom(bordStyleRadius[NS_SIDE_BOTTOM]); // bottomright
|
||||||
|
aBorder.mBorderRadius.GetLeft(bordStyleRadius[NS_SIDE_LEFT]); // bottomleft
|
||||||
|
|
||||||
|
PRBool haveRadius = PR_FALSE;
|
||||||
|
PRUint8 side = 0;
|
||||||
|
for (; side < 4; ++side) {
|
||||||
|
borderRadii[side] = 0;
|
||||||
|
switch (bordStyleRadius[side].GetUnit()) {
|
||||||
|
case eStyleUnit_Percent:
|
||||||
|
borderRadii[side] = nscoord(bordStyleRadius[side].GetPercentValue() *
|
||||||
|
aForFrame->GetSize().width);
|
||||||
|
break;
|
||||||
|
case eStyleUnit_Coord:
|
||||||
|
borderRadii[side] = bordStyleRadius[side].GetCoordValue();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (borderRadii[side] != 0)
|
||||||
|
haveRadius = PR_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (haveRadius) {
|
||||||
|
gfxFloat radii[4];
|
||||||
|
ComputePixelRadii(borderRadii, bgClipArea, aBorder.GetBorder(),
|
||||||
|
aForFrame ? aForFrame->GetSkipSides() : 0,
|
||||||
|
appUnitsPerPixel, radii);
|
||||||
|
|
||||||
|
gfxRect oRect(RectToGfxRect(bgClipArea, appUnitsPerPixel));
|
||||||
|
oRect.Round();
|
||||||
|
oRect.Condition();
|
||||||
|
|
||||||
|
ctx->NewPath();
|
||||||
|
DoRoundedRectCWSubPath(ctx, oRect, radii);
|
||||||
|
ctx->Clip();
|
||||||
|
}
|
||||||
|
|
||||||
// Compute the x and y starting points and limits for tiling
|
// Compute the x and y starting points and limits for tiling
|
||||||
|
|
||||||
|
@ -3794,10 +3841,7 @@ nsCSSRendering::PaintBackgroundWithSC(nsPresContext* aPresContext,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if (!defined(XP_UNIX) && !defined(XP_BEOS)) || defined(XP_MACOSX)
|
ctx->Restore();
|
||||||
// Restore clipping
|
|
||||||
aRenderingContext.PopState();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,9 +6,9 @@
|
||||||
div {
|
div {
|
||||||
height: 100px;
|
height: 100px;
|
||||||
width: 100px;
|
width: 100px;
|
||||||
border: 10px solid black;
|
border: 10px solid black;
|
||||||
-moz-border-radius: 100px;
|
-moz-border-radius: 100px;
|
||||||
background-color: #00FF00;
|
background-color: #0000ff;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
|
@ -6,9 +6,10 @@
|
||||||
div {
|
div {
|
||||||
height: 100px;
|
height: 100px;
|
||||||
width: 100px;
|
width: 100px;
|
||||||
border: 10px solid black;
|
border: 10px solid black;
|
||||||
-moz-border-radius: 100px;
|
-moz-border-radius: 100px;
|
||||||
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVQI12Ng%2BM8AAAICAQCqKp4nAAAAAElFTkSuQmCC);
|
/* this must be bigger than 1x1 */
|
||||||
|
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACEAIAAACtREYwAAAACXBIWXMAAABIAAAASABGyWs+AAAACXZwQWcAAAACAAAAAgBqLH6AAAAAGUlEQVQI12NkYGBg+P+fgYGBgYGBiQEJAAApJQICMg0uAAAAAABJRU5ErkJggg==);
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
|
@ -32,7 +32,7 @@
|
||||||
== 18217-zorder-5.html 18217-zorder-ref-inline-table.html
|
== 18217-zorder-5.html 18217-zorder-ref-inline-table.html
|
||||||
== 23604-1.html 23604-1-ref.html
|
== 23604-1.html 23604-1-ref.html
|
||||||
== 23604-2.html 23604-2-ref.html
|
== 23604-2.html 23604-2-ref.html
|
||||||
fails == 24998.html 24998-ref.html
|
== 24998-1.html 24998-1-ref.html
|
||||||
fails == 25888-1l.html 25888-1l-ref.html # bug 25888
|
fails == 25888-1l.html 25888-1l-ref.html # bug 25888
|
||||||
fails != 25888-1l.html 25888-1l-notref.html # bug 25888
|
fails != 25888-1l.html 25888-1l-notref.html # bug 25888
|
||||||
fails == 25888-1r.html 25888-1r-ref.html # bug 25888
|
fails == 25888-1r.html 25888-1r-ref.html # bug 25888
|
||||||
|
@ -262,14 +262,6 @@ fails == 352980-1h.html 352980-1-ref.html
|
||||||
== 363329-2.html 363329-2-ref.html
|
== 363329-2.html 363329-2-ref.html
|
||||||
== 363370-1.html 363370-1-ref.html
|
== 363370-1.html 363370-1-ref.html
|
||||||
== 363637-1.html 363637-1-ref.html
|
== 363637-1.html 363637-1-ref.html
|
||||||
== 363858-1.html 363858-1-ref.html
|
|
||||||
== 363858-2.html 363858-2-ref.html
|
|
||||||
== 363858-3.html 363858-3-ref.html
|
|
||||||
== 363858-4.html 363858-4-ref.html
|
|
||||||
== 363858-5a.html 363858-5-ref.html
|
|
||||||
== 363858-5b.html 363858-5-ref.html
|
|
||||||
== 363858-6a.html 363858-6-ref.html
|
|
||||||
== 363858-6b.html 363858-6-ref.html
|
|
||||||
== 363874.html 363874-ref.html
|
== 363874.html 363874-ref.html
|
||||||
== 363874-max-width.html 363874-max-width-ref.html
|
== 363874-max-width.html 363874-max-width-ref.html
|
||||||
== 364066-1.html 364066-1-ref.html
|
== 364066-1.html 364066-1-ref.html
|
||||||
|
@ -518,7 +510,7 @@ random == 403134-1.html 403134-1-ref.html # bug 405377
|
||||||
== 403656-3.html 403656-3-ref.html
|
== 403656-3.html 403656-3-ref.html
|
||||||
== 403656-4.html 403656-4-ref.html
|
== 403656-4.html 403656-4-ref.html
|
||||||
== 403656-5.html 403656-5-ref.html
|
== 403656-5.html 403656-5-ref.html
|
||||||
#== 403657-1.html 403657-1-ref.html # Fails depending on the fonts...
|
== 403657-1.html 403657-1-ref.html
|
||||||
== 403733-1.html 403733-1-ref.html
|
== 403733-1.html 403733-1-ref.html
|
||||||
== 403962-1.xhtml 403962-1-ref.xhtml
|
== 403962-1.xhtml 403962-1-ref.xhtml
|
||||||
== 404180-1.html 404180-1-ref.html
|
== 404180-1.html 404180-1-ref.html
|
||||||
|
|
Загрузка…
Ссылка в новой задаче