зеркало из https://github.com/mozilla/gecko-dev.git
Bug 538909. Correctly calculate index of top-left tile. r=dbaron
This commit is contained in:
Родитель
40c40a3d2c
Коммит
c20b3a582f
|
@ -1782,6 +1782,14 @@ InterpolateColor(const gfxRGBA& aC1, const gfxRGBA& aC2, double aFrac)
|
||||||
aC2.a*aFrac + aC1.a*other);
|
aC2.a*aFrac + aC1.a*other);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static nscoord
|
||||||
|
FindTileStart(nscoord aDirtyCoord, nscoord aTilePos, nscoord aTileDim)
|
||||||
|
{
|
||||||
|
NS_ASSERTION(aTileDim > 0, "Non-positive tile dimension");
|
||||||
|
double multiples = NS_floor(double(aDirtyCoord - aTilePos)/aTileDim);
|
||||||
|
return NSToCoordRound(multiples*aTileDim + aTilePos);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
nsCSSRendering::PaintGradient(nsPresContext* aPresContext,
|
nsCSSRendering::PaintGradient(nsPresContext* aPresContext,
|
||||||
nsIRenderingContext& aRenderingContext,
|
nsIRenderingContext& aRenderingContext,
|
||||||
|
@ -2027,12 +2035,9 @@ nsCSSRendering::PaintGradient(nsPresContext* aPresContext,
|
||||||
gfxRect areaToFill = RectToGfxRect(aFillArea, appUnitsPerPixel);
|
gfxRect areaToFill = RectToGfxRect(aFillArea, appUnitsPerPixel);
|
||||||
gfxMatrix ctm = ctx->CurrentMatrix();
|
gfxMatrix ctm = ctx->CurrentMatrix();
|
||||||
|
|
||||||
// Compute which tile is the top-left tile to be drawn.
|
|
||||||
PRInt32 firstTileX = (dirty.x - aOneCellArea.x)/aOneCellArea.width;
|
|
||||||
PRInt32 firstTileY = (dirty.y - aOneCellArea.y)/aOneCellArea.height;
|
|
||||||
// xStart/yStart are the top-left corner of the top-left tile.
|
// xStart/yStart are the top-left corner of the top-left tile.
|
||||||
nscoord xStart = firstTileX*aOneCellArea.width + aOneCellArea.x;
|
nscoord xStart = FindTileStart(dirty.x, aOneCellArea.x, aOneCellArea.width);
|
||||||
nscoord yStart = firstTileY*aOneCellArea.height + aOneCellArea.y;
|
nscoord yStart = FindTileStart(dirty.y, aOneCellArea.y, aOneCellArea.height);
|
||||||
nscoord xEnd = dirty.XMost();
|
nscoord xEnd = dirty.XMost();
|
||||||
nscoord yEnd = dirty.YMost();
|
nscoord yEnd = dirty.YMost();
|
||||||
// x and y are the top-left corner of the tile to draw
|
// x and y are the top-left corner of the tile to draw
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
<!DOCTYPE HTML>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<style>
|
||||||
|
div {
|
||||||
|
width: 260px;
|
||||||
|
height: 260px;
|
||||||
|
-moz-background-size: 100px;
|
||||||
|
background-size: 100px;
|
||||||
|
background-position: -20px -20px;
|
||||||
|
background-image: -moz-linear-gradient(left top, yellow, blue);
|
||||||
|
background-image: linear-gradient(left top, yellow, blue);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div></div>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,17 @@
|
||||||
|
<!DOCTYPE HTML>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<style>
|
||||||
|
div {
|
||||||
|
border: 80px solid transparent;
|
||||||
|
width: 100px;
|
||||||
|
height: 100px;
|
||||||
|
background-image: -moz-linear-gradient(left top, yellow, blue);
|
||||||
|
background-image: linear-gradient(left top, yellow, blue);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div></div>
|
||||||
|
</body>
|
||||||
|
</html>
|
Загрузка…
Ссылка в новой задаче