Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1682)

Unified Diff: Source/core/rendering/RenderTextFragment.h

Issue 571603003: Convert first letter into a pseudo element. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/core/rendering/RenderTextFragment.h
diff --git a/Source/core/rendering/RenderTextFragment.h b/Source/core/rendering/RenderTextFragment.h
index 55084b1d72cfbf9b5d3ce501cc10b9e360d12bca..3b8bf00b26e56083e686006b0b30726e7278d173 100644
--- a/Source/core/rendering/RenderTextFragment.h
+++ b/Source/core/rendering/RenderTextFragment.h
@@ -27,6 +27,8 @@
namespace blink {
+class FirstLetterPseudoElement;
+
// Used to represent a text substring of an element, e.g., for text runs that are split because of
// first letter and that must therefore have different styles (and positions in the render tree).
// We cache offsets so that text transformations can be applied in such a way that we can recover
@@ -46,11 +48,12 @@ public:
unsigned end() const { return m_end; }
virtual unsigned textStartOffset() const override { return start(); }
- RenderBoxModelObject* firstLetter() const { return m_firstLetter; }
- void setFirstLetter(RenderBoxModelObject* firstLetter) { m_firstLetter = firstLetter; }
- RenderText* firstRenderTextInFirstLetter() const;
-
StringImpl* contentString() const { return m_contentString.get(); }
+ // The complete text is all of the text in the associated DOM text node.
+ PassRefPtr<StringImpl> completeText() const;
+ // The fragment text is the text which will be used by this RenderTextFragment. For
+ // things like first-letter this may differ from the completeText as we maybe using
+ // only a portion of the text nodes content.
virtual PassRefPtr<StringImpl> originalText() const override;
virtual void setText(PassRefPtr<StringImpl>, bool force = false) override;
@@ -59,20 +62,23 @@ public:
virtual const char* renderName() const override final { return "RenderTextFragment"; }
-protected:
- virtual void styleDidChange(StyleDifference, const RenderStyle* oldStyle) override;
+ void setFirstLetterPseudoElement(FirstLetterPseudoElement* element) { m_firstLetterPseudoElement = element; }
+ FirstLetterPseudoElement* firstLetterPseudoElement() const { return m_firstLetterPseudoElement; }
-private:
- virtual void willBeDestroyed() override;
+ void setIsRemainingTextRenderer() { m_isRemainingTextRenderer = true; }
+ bool isRemainingTextRenderer() const { return m_isRemainingTextRenderer; }
- virtual UChar previousCharacter() const override;
+private:
RenderBlock* blockForAccompanyingFirstLetter() const;
- virtual void updateHitTestResult(HitTestResult&, const LayoutPoint&) override;
+ virtual UChar previousCharacter() const override;
+
+ Text* associatedTextNode() const;
unsigned m_start;
unsigned m_end;
+ bool m_isRemainingTextRenderer;
RefPtr<StringImpl> m_contentString;
- RawPtrWillBeMember<RenderBoxModelObject> m_firstLetter;
+ RawPtrWillBeMember<FirstLetterPseudoElement> m_firstLetterPseudoElement;
};
DEFINE_TYPE_CASTS(RenderTextFragment, RenderObject, object, toRenderText(object)->isTextFragment(), toRenderText(object).isTextFragment());

Powered by Google App Engine
This is Rietveld 408576698