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

Side by Side Diff: Source/core/rendering/RenderText.cpp

Issue 899163003: Move rendering/RenderObject to layout/LayoutObject. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 10 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/core/rendering/RenderText.h ('k') | Source/core/rendering/RenderTextControl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * (C) 1999 Lars Knoll (knoll@kde.org) 2 * (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 2000 Dirk Mueller (mueller@kde.org) 3 * (C) 2000 Dirk Mueller (mueller@kde.org)
4 * Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved. 4 * Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved.
5 * Copyright (C) 2006 Andrew Wellington (proton@wiretapped.net) 5 * Copyright (C) 2006 Andrew Wellington (proton@wiretapped.net)
6 * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com) 6 * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com)
7 * 7 *
8 * This library is free software; you can redistribute it and/or 8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Library General Public 9 * modify it under the terms of the GNU Library General Public
10 * License as published by the Free Software Foundation; either 10 * License as published by the Free Software Foundation; either
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 #include "platform/text/TextRunIterator.h" 49 #include "platform/text/TextRunIterator.h"
50 #include "wtf/text/StringBuffer.h" 50 #include "wtf/text/StringBuffer.h"
51 #include "wtf/text/StringBuilder.h" 51 #include "wtf/text/StringBuilder.h"
52 #include "wtf/unicode/CharacterNames.h" 52 #include "wtf/unicode/CharacterNames.h"
53 53
54 using namespace WTF; 54 using namespace WTF;
55 using namespace Unicode; 55 using namespace Unicode;
56 56
57 namespace blink { 57 namespace blink {
58 58
59 struct SameSizeAsRenderText : public RenderObject { 59 struct SameSizeAsRenderText : public LayoutObject {
60 uint32_t bitfields : 16; 60 uint32_t bitfields : 16;
61 float widths[4]; 61 float widths[4];
62 String text; 62 String text;
63 void* pointers[2]; 63 void* pointers[2];
64 }; 64 };
65 65
66 static_assert(sizeof(RenderText) == sizeof(SameSizeAsRenderText), "RenderText sh ould stay small"); 66 static_assert(sizeof(RenderText) == sizeof(SameSizeAsRenderText), "RenderText sh ould stay small");
67 67
68 class SecureTextTimer; 68 class SecureTextTimer;
69 typedef HashMap<RenderText*, SecureTextTimer*> SecureTextTimerMap; 69 typedef HashMap<RenderText*, SecureTextTimer*> SecureTextTimerMap;
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
131 if (startOfWord) // Ignore first char of previous string 131 if (startOfWord) // Ignore first char of previous string
132 result.append(input[startOfWord - 1] == noBreakSpace ? noBreakSpace : toTitleCase(stringWithPrevious[startOfWord])); 132 result.append(input[startOfWord - 1] == noBreakSpace ? noBreakSpace : toTitleCase(stringWithPrevious[startOfWord]));
133 for (int i = startOfWord + 1; i < endOfWord; i++) 133 for (int i = startOfWord + 1; i < endOfWord; i++)
134 result.append(input[i - 1]); 134 result.append(input[i - 1]);
135 } 135 }
136 136
137 *string = result.toString(); 137 *string = result.toString();
138 } 138 }
139 139
140 RenderText::RenderText(Node* node, PassRefPtr<StringImpl> str) 140 RenderText::RenderText(Node* node, PassRefPtr<StringImpl> str)
141 : RenderObject(!node || node->isDocumentNode() ? 0 : node) 141 : LayoutObject(!node || node->isDocumentNode() ? 0 : node)
142 , m_hasTab(false) 142 , m_hasTab(false)
143 , m_linesDirty(false) 143 , m_linesDirty(false)
144 , m_containsReversedText(false) 144 , m_containsReversedText(false)
145 , m_knownToHaveNoOverflowAndNoFallbackFonts(false) 145 , m_knownToHaveNoOverflowAndNoFallbackFonts(false)
146 , m_minWidth(-1) 146 , m_minWidth(-1)
147 , m_maxWidth(-1) 147 , m_maxWidth(-1)
148 , m_firstLineMinWidth(0) 148 , m_firstLineMinWidth(0)
149 , m_lastLineLineMinWidth(0) 149 , m_lastLineLineMinWidth(0)
150 , m_text(str) 150 , m_text(str)
151 , m_firstTextBox(0) 151 , m_firstTextBox(0)
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 } 229 }
230 deleteTextBoxes(); 230 deleteTextBoxes();
231 } 231 }
232 232
233 void RenderText::willBeDestroyed() 233 void RenderText::willBeDestroyed()
234 { 234 {
235 if (SecureTextTimer* secureTextTimer = gSecureTextTimers ? gSecureTextTimers ->take(this) : 0) 235 if (SecureTextTimer* secureTextTimer = gSecureTextTimers ? gSecureTextTimers ->take(this) : 0)
236 delete secureTextTimer; 236 delete secureTextTimer;
237 237
238 removeAndDestroyTextBoxes(); 238 removeAndDestroyTextBoxes();
239 RenderObject::willBeDestroyed(); 239 LayoutObject::willBeDestroyed();
240 } 240 }
241 241
242 void RenderText::extractTextBox(InlineTextBox* box) 242 void RenderText::extractTextBox(InlineTextBox* box)
243 { 243 {
244 checkConsistency(); 244 checkConsistency();
245 245
246 m_lastTextBox = box->prevTextBox(); 246 m_lastTextBox = box->prevTextBox();
247 if (box == m_firstTextBox) 247 if (box == m_firstTextBox)
248 m_firstTextBox = 0; 248 m_firstTextBox = 0;
249 if (box->prevTextBox()) 249 if (box->prevTextBox())
(...skipping 941 matching lines...) Expand 10 before | Expand all | Expand 10 after
1191 return m_firstTextBox ? m_firstTextBox->x().toFloat() : 0; 1191 return m_firstTextBox ? m_firstTextBox->x().toFloat() : 0;
1192 } 1192 }
1193 1193
1194 float RenderText::firstRunY() const 1194 float RenderText::firstRunY() const
1195 { 1195 {
1196 return m_firstTextBox ? m_firstTextBox->y().toFloat() : 0; 1196 return m_firstTextBox ? m_firstTextBox->y().toFloat() : 0;
1197 } 1197 }
1198 1198
1199 void RenderText::setSelectionState(SelectionState state) 1199 void RenderText::setSelectionState(SelectionState state)
1200 { 1200 {
1201 RenderObject::setSelectionState(state); 1201 LayoutObject::setSelectionState(state);
1202 1202
1203 if (canUpdateSelectionOnRootLineBoxes()) { 1203 if (canUpdateSelectionOnRootLineBoxes()) {
1204 if (state == SelectionStart || state == SelectionEnd || state == Selecti onBoth) { 1204 if (state == SelectionStart || state == SelectionEnd || state == Selecti onBoth) {
1205 int startPos, endPos; 1205 int startPos, endPos;
1206 selectionStartEnd(startPos, endPos); 1206 selectionStartEnd(startPos, endPos);
1207 if (selectionState() == SelectionStart) { 1207 if (selectionState() == SelectionStart) {
1208 endPos = textLength(); 1208 endPos = textLength();
1209 1209
1210 // to handle selection from end of text to end of line 1210 // to handle selection from end of text to end of line
1211 if (startPos && startPos == endPos) 1211 if (startPos && startPos == endPos)
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
1308 m_linesDirty = dirtiedLines; 1308 m_linesDirty = dirtiedLines;
1309 setText(text, force || dirtiedLines); 1309 setText(text, force || dirtiedLines);
1310 } 1310 }
1311 1311
1312 void RenderText::transformText() 1312 void RenderText::transformText()
1313 { 1313 {
1314 if (RefPtr<StringImpl> textToTransform = originalText()) 1314 if (RefPtr<StringImpl> textToTransform = originalText())
1315 setText(textToTransform.release(), true); 1315 setText(textToTransform.release(), true);
1316 } 1316 }
1317 1317
1318 static inline bool isInlineFlowOrEmptyText(const RenderObject* o) 1318 static inline bool isInlineFlowOrEmptyText(const LayoutObject* o)
1319 { 1319 {
1320 if (o->isRenderInline()) 1320 if (o->isRenderInline())
1321 return true; 1321 return true;
1322 if (!o->isText()) 1322 if (!o->isText())
1323 return false; 1323 return false;
1324 return toRenderText(o)->text().isEmpty(); 1324 return toRenderText(o)->text().isEmpty();
1325 } 1325 }
1326 1326
1327 UChar RenderText::previousCharacter() const 1327 UChar RenderText::previousCharacter() const
1328 { 1328 {
1329 // find previous text renderer if one exists 1329 // find previous text renderer if one exists
1330 const RenderObject* previousText = previousInPreOrder(); 1330 const LayoutObject* previousText = previousInPreOrder();
1331 for (; previousText; previousText = previousText->previousInPreOrder()) 1331 for (; previousText; previousText = previousText->previousInPreOrder())
1332 if (!isInlineFlowOrEmptyText(previousText)) 1332 if (!isInlineFlowOrEmptyText(previousText))
1333 break; 1333 break;
1334 UChar prev = space; 1334 UChar prev = space;
1335 if (previousText && previousText->isText()) 1335 if (previousText && previousText->isText())
1336 if (StringImpl* previousString = toRenderText(previousText)->text().impl ()) 1336 if (StringImpl* previousString = toRenderText(previousText)->text().impl ())
1337 prev = (*previousString)[previousString->length() - 1]; 1337 prev = (*previousString)[previousString->length() - 1];
1338 return prev; 1338 return prev;
1339 } 1339 }
1340 1340
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
1417 } 1417 }
1418 1418
1419 void RenderText::setText(PassRefPtr<StringImpl> text, bool force) 1419 void RenderText::setText(PassRefPtr<StringImpl> text, bool force)
1420 { 1420 {
1421 ASSERT(text); 1421 ASSERT(text);
1422 1422
1423 if (!force && equal(m_text.impl(), text.get())) 1423 if (!force && equal(m_text.impl(), text.get()))
1424 return; 1424 return;
1425 1425
1426 setTextInternal(text); 1426 setTextInternal(text);
1427 // If preferredLogicalWidthsDirty() of an orphan child is true, RenderObject ChildList:: 1427 // If preferredLogicalWidthsDirty() of an orphan child is true, LayoutObject ChildList::
1428 // insertChildNode() fails to set true to owner. To avoid that, we call 1428 // insertChildNode() fails to set true to owner. To avoid that, we call
1429 // setNeedsLayoutAndPrefWidthsRecalc() only if this RenderText has parent. 1429 // setNeedsLayoutAndPrefWidthsRecalc() only if this RenderText has parent.
1430 if (parent()) 1430 if (parent())
1431 setNeedsLayoutAndPrefWidthsRecalc(); 1431 setNeedsLayoutAndPrefWidthsRecalc();
1432 m_knownToHaveNoOverflowAndNoFallbackFonts = false; 1432 m_knownToHaveNoOverflowAndNoFallbackFonts = false;
1433 1433
1434 if (AXObjectCache* cache = document().existingAXObjectCache()) 1434 if (AXObjectCache* cache = document().existingAXObjectCache())
1435 cache->textChanged(this); 1435 cache->textChanged(this);
1436 } 1436 }
1437 1437
(...skipping 445 matching lines...) Expand 10 before | Expand all | Expand 10 after
1883 secureTextTimer->restartWithNewText(lastTypedCharacterOffset); 1883 secureTextTimer->restartWithNewText(lastTypedCharacterOffset);
1884 } 1884 }
1885 1885
1886 PassRefPtr<AbstractInlineTextBox> RenderText::firstAbstractInlineTextBox() 1886 PassRefPtr<AbstractInlineTextBox> RenderText::firstAbstractInlineTextBox()
1887 { 1887 {
1888 return AbstractInlineTextBox::getOrCreate(this, m_firstTextBox); 1888 return AbstractInlineTextBox::getOrCreate(this, m_firstTextBox);
1889 } 1889 }
1890 1890
1891 void RenderText::invalidateDisplayItemClients(DisplayItemList* displayItemList) const 1891 void RenderText::invalidateDisplayItemClients(DisplayItemList* displayItemList) const
1892 { 1892 {
1893 RenderObject::invalidateDisplayItemClients(displayItemList); 1893 LayoutObject::invalidateDisplayItemClients(displayItemList);
1894 for (InlineTextBox* box = firstTextBox(); box; box = box->nextTextBox()) 1894 for (InlineTextBox* box = firstTextBox(); box; box = box->nextTextBox())
1895 displayItemList->invalidate(box->displayItemClient()); 1895 displayItemList->invalidate(box->displayItemClient());
1896 } 1896 }
1897 1897
1898 } // namespace blink 1898 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/rendering/RenderText.h ('k') | Source/core/rendering/RenderTextControl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698