author | Brian Birtles <birtles@gmail.com> |
Mon, 22 Jun 2015 11:45:39 +0900 | |
changeset 249902 | ecd0e715d9480fe1ae997d016d0d026462f3d533 |
parent 249901 | 09abc6bf5d2a1e6dc973e68021195c2e1dea1c46 |
child 249903 | 026e77985e59fa57715aa30b3117091caeaba597 |
push id | 61388 |
push user | bbirtles@mozilla.com |
push date | Mon, 22 Jun 2015 02:46:37 +0000 |
treeherder | mozilla-inbound@ecd0e715d948 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | jfkthame |
bugs | 1170688, 1037340 |
milestone | 41.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/gfx/thebes/gfxTextRun.cpp +++ b/gfx/thebes/gfxTextRun.cpp @@ -595,31 +595,16 @@ gfxTextRun::Draw(gfxContext *aContext, g aContext, aProvider); *aAdvanceWidth = metrics.mAdvanceWidth * direction; } // return without drawing return; } - // Set up parameters that will be constant across all glyph runs we need - // to draw, regardless of the font used. - TextRunDrawParams params; - params.context = aContext; - params.devPerApp = 1.0 / double(GetAppUnitsPerDevUnit()); - params.isVerticalRun = IsVertical(); - params.isRTL = IsRightToLeft(); - params.direction = direction; - params.drawMode = aDrawMode; - params.callbacks = aCallbacks; - params.runContextPaint = aContextPaint; - params.paintSVGGlyphs = !aCallbacks || aCallbacks->mShouldPaintSVGGlyphs; - params.dt = aContext->GetDrawTarget(); - params.fontSmoothingBGColor = aContext->GetFontSmoothingBackgroundColor(); - // synthetic bolding draws glyphs twice ==> colors with opacity won't draw // correctly unless first drawn without alpha BufferAlphaColor syntheticBoldBuffer(aContext); gfxRGBA currentColor; bool needToRestore = false; if (aDrawMode == DrawMode::GLYPH_FILL && HasNonOpaqueColor(aContext, currentColor) && @@ -629,16 +614,31 @@ gfxTextRun::Draw(gfxContext *aContext, g gfxTextRun::Metrics metrics = MeasureText(aStart, aLength, gfxFont::LOOSE_INK_EXTENTS, aContext, aProvider); metrics.mBoundingBox.MoveBy(aPt); syntheticBoldBuffer.PushSolidColor(metrics.mBoundingBox, currentColor, GetAppUnitsPerDevUnit()); } + // Set up parameters that will be constant across all glyph runs we need + // to draw, regardless of the font used. + TextRunDrawParams params; + params.context = aContext; + params.devPerApp = 1.0 / double(GetAppUnitsPerDevUnit()); + params.isVerticalRun = IsVertical(); + params.isRTL = IsRightToLeft(); + params.direction = direction; + params.drawMode = aDrawMode; + params.callbacks = aCallbacks; + params.runContextPaint = aContextPaint; + params.paintSVGGlyphs = !aCallbacks || aCallbacks->mShouldPaintSVGGlyphs; + params.dt = aContext->GetDrawTarget(); + params.fontSmoothingBGColor = aContext->GetFontSmoothingBackgroundColor(); + GlyphRunIterator iter(this, aStart, aLength); gfxFloat advance = 0.0; while (iter.NextRun()) { gfxFont *font = iter.GetGlyphRun()->mFont; uint32_t start = iter.GetStringStart(); uint32_t end = iter.GetStringEnd(); uint32_t ligatureRunStart = start;