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

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

Issue 672953002: Convert first letter into a pseudo element. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 1 month 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
« no previous file with comments | « Source/core/rendering/RenderTableCell.cpp ('k') | Source/core/rendering/RenderTextFragment.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/rendering/RenderTextFragment.h
diff --git a/Source/core/rendering/RenderTextFragment.h b/Source/core/rendering/RenderTextFragment.h
index 505dbabb351a312c9535bdd674d98ae81b6ab662..fa1d3adfbb56101c0f2d9423f960982b17150bca 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
@@ -37,6 +39,7 @@ public:
RenderTextFragment(Node*, StringImpl*);
virtual ~RenderTextFragment();
virtual void trace(Visitor*) override;
+ virtual void destroy() override;
virtual bool isTextFragment() const override { return true; }
@@ -46,11 +49,14 @@ 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;
-
void setContentString(StringImpl*);
+ 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 +65,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());
« no previous file with comments | « Source/core/rendering/RenderTableCell.cpp ('k') | Source/core/rendering/RenderTextFragment.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698