diff options
author | Ben Murdoch <benm@google.com> | 2011-05-24 14:28:54 +0100 |
---|---|---|
committer | Ben Murdoch <benm@google.com> | 2011-06-02 10:31:08 +0100 |
commit | a551df194f6950988c7accff3018f55c9c674bc3 (patch) | |
tree | 3265b3e1122d384bf2c96cbe7162ddac8790622a /Source/WebCore/rendering | |
parent | 3b523b87218c05c8dd49c191e3d5a7a114907e82 (diff) | |
download | external_webkit-a551df194f6950988c7accff3018f55c9c674bc3.zip external_webkit-a551df194f6950988c7accff3018f55c9c674bc3.tar.gz external_webkit-a551df194f6950988c7accff3018f55c9c674bc3.tar.bz2 |
Merge WebKit at r80534: Fix uses of rounding hacks.
Font rounding hacks have been removed upstream, so there
is no need for our local code anymore. Remove all uses
of the ANDROID_DISABLE_ROUNDING_HACKS macro.
Note that this brings our behavior in line with upstream -
Android will see a change in behavior to before the merge
as we did not disable rounding hacks in all cases.
- SVGInlineTextBox::SVGInlineTextBox() - we don't pass a value for
disableRoundingHacks, so we don't disable hacks, so this behaviour will
change as rounding hacks are disabled now.
- RenderText::createTextBox() - We pass a value for
disableRoundingHacks, true if any parent is a text control.
So we will change behavior in any case where the parent is not
a text control.
Note that although we may see a change in behavior, that change is
consistent with the upstream codebase.
See http://trac.webkit.org/changeset/78846
Change-Id: I5d4d7298083acc519199c4c38ab5acdef5bdc537
Diffstat (limited to 'Source/WebCore/rendering')
-rw-r--r-- | Source/WebCore/rendering/InlineTextBox.cpp | 71 | ||||
-rw-r--r-- | Source/WebCore/rendering/InlineTextBox.h | 10 | ||||
-rw-r--r-- | Source/WebCore/rendering/RenderText.cpp | 17 |
3 files changed, 0 insertions, 98 deletions
diff --git a/Source/WebCore/rendering/InlineTextBox.cpp b/Source/WebCore/rendering/InlineTextBox.cpp index 6d6ca4d..3c3e450 100644 --- a/Source/WebCore/rendering/InlineTextBox.cpp +++ b/Source/WebCore/rendering/InlineTextBox.cpp @@ -163,15 +163,8 @@ IntRect InlineTextBox::selectionRect(int tx, int ty, int startPos, int endPos) ePos = len; } -#ifdef ANDROID_DISABLE_ROUNDING_HACKS - TextRun textRun = TextRun(characters, len, textObj->allowTabs(), textPos(), m_expansion, trailingExpansionBehavior(), !isLeftToRightDirection(), m_dirOverride); - if (m_disableRoundingHacks) - textRun.disableRoundingHacks(); - IntRect r = enclosingIntRect(f.selectionRectForText(textRun, IntPoint(), selHeight, sPos, ePos)); -#else IntRect r = enclosingIntRect(f.selectionRectForText(TextRun(characters, len, textObj->allowTabs(), textPos(), m_expansion, trailingExpansionBehavior(), !isLeftToRightDirection(), m_dirOverride), IntPoint(), selHeight, sPos, ePos)); -#endif int logicalWidth = r.width(); if (r.x() > m_logicalWidth) @@ -626,10 +619,6 @@ void InlineTextBox::paint(PaintInfo& paintInfo, int tx, int ty) adjustCharactersAndLengthForHyphen(charactersWithHyphen, styleToUse, characters, length); TextRun textRun(characters, length, textRenderer()->allowTabs(), textPos(), m_expansion, trailingExpansionBehavior(), !isLeftToRightDirection(), m_dirOverride || styleToUse->visuallyOrdered()); -#ifdef ANDROID_DISABLE_ROUNDING_HACKS - if (m_disableRoundingHacks) - textRun.disableRoundingHacks(); -#endif int sPos = 0; int ePos = 0; @@ -781,24 +770,11 @@ void InlineTextBox::paintSelection(GraphicsContext* context, const FloatPoint& b int deltaY = renderer()->style()->isFlippedLinesWritingMode() ? selectionBottom() - logicalBottom() : logicalTop() - selectionTop(); int selHeight = selectionHeight(); -<<<<<<< HEAD - IntPoint localOrigin(boxOrigin.x(), boxOrigin.y() - deltaY); - context->clip(IntRect(localOrigin, IntSize(m_logicalWidth, selHeight))); -#ifdef ANDROID_DISABLE_ROUNDING_HACKS - TextRun textRun = TextRun(characters, length, textRenderer()->allowTabs(), textPos(), m_expansion, trailingExpansionBehavior(), - !isLeftToRightDirection(), m_dirOverride || style->visuallyOrdered()); - if (m_disableRoundingHacks) - textRun.disableRoundingHacks(); - context->drawHighlightForText(font, textRun, localOrigin, selHeight, c, style->colorSpace(), sPos, ePos); -#else -======= FloatPoint localOrigin(boxOrigin.x(), boxOrigin.y() - deltaY); context->clip(FloatRect(localOrigin, FloatSize(m_logicalWidth, selHeight))); ->>>>>>> WebKit at r80534 context->drawHighlightForText(font, TextRun(characters, length, textRenderer()->allowTabs(), textPos(), m_expansion, trailingExpansionBehavior(), !isLeftToRightDirection(), m_dirOverride || style->visuallyOrdered()), localOrigin, selHeight, c, style->colorSpace(), sPos, ePos); -#endif context->restore(); } @@ -819,22 +795,10 @@ void InlineTextBox::paintCompositionBackground(GraphicsContext* context, const F int deltaY = renderer()->style()->isFlippedLinesWritingMode() ? selectionBottom() - logicalBottom() : logicalTop() - selectionTop(); int selHeight = selectionHeight(); -<<<<<<< HEAD - IntPoint localOrigin(boxOrigin.x(), boxOrigin.y() - deltaY); -#ifdef ANDROID_DISABLE_ROUNDING_HACKS - TextRun textRun = TextRun(textRenderer()->text()->characters() + m_start, m_len, textRenderer()->allowTabs(), textPos(), m_expansion, trailingExpansionBehavior(), - !isLeftToRightDirection(), m_dirOverride || style->visuallyOrdered()); - if (m_disableRoundingHacks) - textRun.disableRoundingHacks(); - context->drawHighlightForText(font, textRun, localOrigin, selHeight, c, style->colorSpace(), sPos, ePos); -#else -======= FloatPoint localOrigin(boxOrigin.x(), boxOrigin.y() - deltaY); ->>>>>>> WebKit at r80534 context->drawHighlightForText(font, TextRun(textRenderer()->text()->characters() + m_start, m_len, textRenderer()->allowTabs(), textPos(), m_expansion, trailingExpansionBehavior(), !isLeftToRightDirection(), m_dirOverride || style->visuallyOrdered()), localOrigin, selHeight, c, style->colorSpace(), sPos, ePos); -#endif context->restore(); } @@ -995,16 +959,8 @@ void InlineTextBox::paintSpellingOrGrammarMarker(GraphicsContext* pt, const Floa int selHeight = selectionHeight(); FloatPoint startPoint(boxOrigin.x(), boxOrigin.y() - deltaY); TextRun run(textRenderer()->text()->characters() + m_start, m_len, textRenderer()->allowTabs(), textPos(), m_expansion, trailingExpansionBehavior(), !isLeftToRightDirection(), m_dirOverride || style->visuallyOrdered()); -<<<<<<< HEAD -#ifdef ANDROID_DISABLE_ROUNDING_HACKS - if (m_disableRoundingHacks) - run.disableRoundingHacks(); -#endif - -======= // FIXME: Convert the document markers to float rects. ->>>>>>> WebKit at r80534 IntRect markerRect = enclosingIntRect(font.selectionRectForText(run, startPoint, selHeight, startPosition, endPosition)); start = markerRect.x() - startPoint.x(); width = markerRect.width(); @@ -1048,10 +1004,6 @@ void InlineTextBox::paintTextMatchMarker(GraphicsContext* pt, const FloatPoint& int sPos = max(marker.startOffset - m_start, (unsigned)0); int ePos = min(marker.endOffset - m_start, (unsigned)m_len); TextRun run(textRenderer()->text()->characters() + m_start, m_len, textRenderer()->allowTabs(), textPos(), m_expansion, trailingExpansionBehavior(), !isLeftToRightDirection(), m_dirOverride || style->visuallyOrdered()); -#ifdef ANDROID_DISABLE_ROUNDING_HACKS - if (m_disableRoundingHacks) - run.disableRoundingHacks(); -#endif // Always compute and store the rect associated with this marker. The computed rect is in absolute coordinates. IntRect markerRect = enclosingIntRect(font.selectionRectForText(run, IntPoint(m_x, selectionTop()), selHeight, sPos, ePos)); @@ -1080,10 +1032,6 @@ void InlineTextBox::computeRectForReplacementMarker(const DocumentMarker& marker int sPos = max(marker.startOffset - m_start, (unsigned)0); int ePos = min(marker.endOffset - m_start, (unsigned)m_len); TextRun run(textRenderer()->text()->characters() + m_start, m_len, textRenderer()->allowTabs(), textPos(), m_expansion, trailingExpansionBehavior(), !isLeftToRightDirection(), m_dirOverride || style->visuallyOrdered()); -#ifdef ANDROID_DISABLE_ROUNDING_HACKS - if (m_disableRoundingHacks) - run.disableRoundingHacks(); -#endif IntPoint startPoint = IntPoint(m_x, y); // Compute and store the rect associated with this marker. @@ -1243,16 +1191,9 @@ int InlineTextBox::offsetForPosition(float lineOffset, bool includePartialGlyphs RenderText* text = toRenderText(renderer()); RenderStyle* style = text->style(m_firstLine); const Font* f = &style->font(); -#ifdef ANDROID_DISABLE_ROUNDING_HACKS - TextRun textRun = TextRun(textRenderer()->text()->characters() + m_start, m_len, textRenderer()->allowTabs(), textPos(), m_expansion, trailingExpansionBehavior(), !isLeftToRightDirection(), m_dirOverride || style->visuallyOrdered()); - if (m_disableRoundingHacks) - textRun.disableRoundingHacks(); - int offset = f->offsetForPosition(textRun, lineOffset - logicalLeft(), includePartialGlyphs); -#else int offset = f->offsetForPosition(TextRun(textRenderer()->text()->characters() + m_start, m_len, textRenderer()->allowTabs(), textPos(), m_expansion, trailingExpansionBehavior(), !isLeftToRightDirection(), m_dirOverride || style->visuallyOrdered()), lineOffset - logicalLeft(), includePartialGlyphs); -#endif if (blockIsInOppositeDirection && (!offset || offset == m_len)) return !offset ? m_len : 0; return offset; @@ -1271,20 +1212,8 @@ float InlineTextBox::positionForOffset(int offset) const int from = !isLeftToRightDirection() ? offset - m_start : 0; int to = !isLeftToRightDirection() ? m_len : offset - m_start; // FIXME: Do we need to add rightBearing here? -<<<<<<< HEAD -#ifdef ANDROID_DISABLE_ROUNDING_HACKS - TextRun textRun = TextRun(text->text()->characters() + m_start, m_len, textRenderer()->allowTabs(), textPos(), m_expansion, trailingExpansionBehavior(), !isLeftToRightDirection(), m_dirOverride); - if (m_disableRoundingHacks) - textRun.disableRoundingHacks(); - return enclosingIntRect(f.selectionRectForText(textRun, IntPoint(logicalLeft(), 0), 0, from, to)).maxX(); -#else - return enclosingIntRect(f.selectionRectForText(TextRun(text->text()->characters() + m_start, m_len, textRenderer()->allowTabs(), textPos(), m_expansion, trailingExpansionBehavior(), !isLeftToRightDirection(), m_dirOverride), - IntPoint(logicalLeft(), 0), 0, from, to)).maxX(); -#endif -======= return f.selectionRectForText(TextRun(text->text()->characters() + m_start, m_len, textRenderer()->allowTabs(), textPos(), m_expansion, trailingExpansionBehavior(), !isLeftToRightDirection(), m_dirOverride), IntPoint(logicalLeft(), 0), 0, from, to).maxX(); ->>>>>>> WebKit at r80534 } bool InlineTextBox::containsCaretOffset(int offset) const diff --git a/Source/WebCore/rendering/InlineTextBox.h b/Source/WebCore/rendering/InlineTextBox.h index a900a71..d894b85 100644 --- a/Source/WebCore/rendering/InlineTextBox.h +++ b/Source/WebCore/rendering/InlineTextBox.h @@ -41,20 +41,13 @@ Color correctedTextColor(Color textColor, Color backgroundColor); class InlineTextBox : public InlineBox { public: -#ifdef ANDROID_DISABLE_ROUNDING_HACKS - InlineTextBox(RenderObject* obj, bool disableRoundingHacks = false) -#else InlineTextBox(RenderObject* obj) -#endif : InlineBox(obj) , m_prevTextBox(0) , m_nextTextBox(0) , m_start(0) , m_len(0) , m_truncation(cNoTruncation) -#ifdef ANDROID_DISABLE_ROUNDING_HACKS - , m_disableRoundingHacks(disableRoundingHacks) -#endif { } @@ -149,9 +142,6 @@ private: unsigned short m_truncation; // Where to truncate when text overflow is applied. We use special constants to // denote no truncation (the whole run paints) and full truncation (nothing paints at all). -#ifdef ANDROID_DISABLE_ROUNDING_HACKS - bool m_disableRoundingHacks; -#endif protected: void paintCompositionBackground(GraphicsContext*, const FloatPoint& boxOrigin, RenderStyle*, const Font&, int startPos, int endPos); diff --git a/Source/WebCore/rendering/RenderText.cpp b/Source/WebCore/rendering/RenderText.cpp index d4f4166..3e696d3 100644 --- a/Source/WebCore/rendering/RenderText.cpp +++ b/Source/WebCore/rendering/RenderText.cpp @@ -1185,27 +1185,10 @@ void RenderText::dirtyLineBoxes(bool fullLayout) } m_linesDirty = false; } -#ifdef ANDROID_DISABLE_ROUNDING_HACKS -static bool disableRoundingHacks(RenderText* renderText) -{ - RenderObject* renderer = renderText; - while (renderer) { - if (renderer->isTextControl()) { - return true; - } - renderer = renderer->parent(); - } - return false; -} -#endif InlineTextBox* RenderText::createTextBox() { -#ifdef ANDROID_DISABLE_ROUNDING_HACKS - return new (renderArena()) InlineTextBox(this, disableRoundingHacks(this)); -#else return new (renderArena()) InlineTextBox(this); -#endif } InlineTextBox* RenderText::createInlineTextBox() |