mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-27 21:00:50 +00:00
Bug 489718 - image-rendering and text-rendering hints should operate when clipping. r=longsonr
This commit is contained in:
parent
00d26a8070
commit
dbaa4b4a99
@ -326,6 +326,15 @@ nsSVGGlyphFrame::PaintSVG(nsSVGRenderState *aContext,
|
||||
gfxContext *gfx = aContext->GetGfxContext();
|
||||
PRUint16 renderMode = aContext->GetRenderMode();
|
||||
|
||||
switch (GetStyleSVG()->mTextRendering) {
|
||||
case NS_STYLE_TEXT_RENDERING_OPTIMIZESPEED:
|
||||
gfx->SetAntialiasMode(gfxContext::MODE_ALIASED);
|
||||
break;
|
||||
default:
|
||||
gfx->SetAntialiasMode(gfxContext::MODE_COVERAGE);
|
||||
break;
|
||||
}
|
||||
|
||||
if (renderMode != nsSVGRenderState::NORMAL) {
|
||||
|
||||
gfxMatrix matrix = gfx->CurrentMatrix();
|
||||
@ -340,7 +349,6 @@ nsSVGGlyphFrame::PaintSVG(nsSVGRenderState *aContext,
|
||||
gfx->SetFillRule(gfxContext::FILL_RULE_WINDING);
|
||||
|
||||
if (renderMode == nsSVGRenderState::CLIP_MASK) {
|
||||
gfx->SetAntialiasMode(gfxContext::MODE_ALIASED);
|
||||
gfx->SetColor(gfxRGBA(1.0f, 1.0f, 1.0f, 1.0f));
|
||||
FillCharacters(&iter, gfx);
|
||||
} else {
|
||||
|
@ -435,29 +435,11 @@ nsSVGPathGeometryFrame::Render(nsSVGRenderState *aContext)
|
||||
|
||||
PRUint16 renderMode = aContext->GetRenderMode();
|
||||
|
||||
/* save/pop the state so we don't screw up the xform */
|
||||
/* save/restore the state so we don't screw up the xform */
|
||||
gfx->Save();
|
||||
|
||||
GeneratePath(gfx);
|
||||
|
||||
if (renderMode != nsSVGRenderState::NORMAL) {
|
||||
gfx->Restore();
|
||||
|
||||
if (GetClipRule() == NS_STYLE_FILL_RULE_EVENODD)
|
||||
gfx->SetFillRule(gfxContext::FILL_RULE_EVEN_ODD);
|
||||
else
|
||||
gfx->SetFillRule(gfxContext::FILL_RULE_WINDING);
|
||||
|
||||
if (renderMode == nsSVGRenderState::CLIP_MASK) {
|
||||
gfx->SetAntialiasMode(gfxContext::MODE_ALIASED);
|
||||
gfx->SetColor(gfxRGBA(1.0f, 1.0f, 1.0f, 1.0f));
|
||||
gfx->Fill();
|
||||
gfx->NewPath();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
switch (GetStyleSVG()->mShapeRendering) {
|
||||
case NS_STYLE_SHAPE_RENDERING_OPTIMIZESPEED:
|
||||
case NS_STYLE_SHAPE_RENDERING_CRISPEDGES:
|
||||
@ -468,6 +450,22 @@ nsSVGPathGeometryFrame::Render(nsSVGRenderState *aContext)
|
||||
break;
|
||||
}
|
||||
|
||||
if (renderMode != nsSVGRenderState::NORMAL) {
|
||||
if (GetClipRule() == NS_STYLE_FILL_RULE_EVENODD)
|
||||
gfx->SetFillRule(gfxContext::FILL_RULE_EVEN_ODD);
|
||||
else
|
||||
gfx->SetFillRule(gfxContext::FILL_RULE_WINDING);
|
||||
|
||||
if (renderMode == nsSVGRenderState::CLIP_MASK) {
|
||||
gfx->SetColor(gfxRGBA(1.0f, 1.0f, 1.0f, 1.0f));
|
||||
gfx->Fill();
|
||||
gfx->NewPath();
|
||||
}
|
||||
gfx->Restore();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (SetupCairoFill(gfx)) {
|
||||
gfx->Fill();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user