summaryrefslogtreecommitdiffstats
path: root/Source/WebCore/rendering
diff options
context:
space:
mode:
authorBen Murdoch <benm@google.com>2011-05-24 14:28:54 +0100
committerBen Murdoch <benm@google.com>2011-06-02 10:31:08 +0100
commita551df194f6950988c7accff3018f55c9c674bc3 (patch)
tree3265b3e1122d384bf2c96cbe7162ddac8790622a /Source/WebCore/rendering
parent3b523b87218c05c8dd49c191e3d5a7a114907e82 (diff)
downloadexternal_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.cpp71
-rw-r--r--Source/WebCore/rendering/InlineTextBox.h10
-rw-r--r--Source/WebCore/rendering/RenderText.cpp17
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()