Bug 586683 - Part 1 - Add resolution handling to BasicLayers. r=roc a=blocking2.0

This commit is contained in:
Matt Woodrow
2011-02-09 09:35:54 +13:00
parent 67fc490ce2
commit cad4d7eafc
7 changed files with 93 additions and 2 deletions

View File

@@ -554,8 +554,9 @@ BasicThebesLayer::Paint(gfxContext* aContext,
}
{
float paintXRes = BasicManager()->XResolution();
float paintYRes = BasicManager()->YResolution();
gfxSize scale = aContext->CurrentMatrix().ScaleFactors(PR_TRUE);
float paintXRes = gfxUtils::ClampToScaleFactor(BasicManager()->XResolution() * scale.width);
float paintYRes = gfxUtils::ClampToScaleFactor(BasicManager()->YResolution() * scale.height);
Buffer::PaintState state =
mBuffer.BeginPaint(this, contentType, paintXRes, paintYRes);
mValidRegion.Sub(mValidRegion, state.mRegionToInvalidate);
@@ -566,6 +567,7 @@ BasicThebesLayer::Paint(gfxContext* aContext,
// from RGB to RGBA, because we might need to repaint with
// subpixel AA)
state.mRegionToInvalidate.And(state.mRegionToInvalidate, mVisibleRegion);
state.mRegionToDraw.ExtendForScaling(paintXRes, paintYRes);
mXResolution = paintXRes;
mYResolution = paintYRes;
SetAntialiasingFlags(this, state.mContext);