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

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

Issue 622253002: Pass start/length at InlineTextBox construction time. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: condense by one line 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 unified diff | Download patch | Annotate | Revision Log
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, 2008, 2009, 2010, 2011 Apple Inc. All r ights reserved. 4 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r ights reserved.
5 * 5 *
6 * This library is free software; you can redistribute it and/or 6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public 7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either 8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version. 9 * version 2 of the License, or (at your option) any later version.
10 * 10 *
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 }; 67 };
68 68
69 COMPILE_ASSERT(sizeof(InlineTextBox) == sizeof(SameSizeAsInlineTextBox), InlineT extBox_should_stay_small); 69 COMPILE_ASSERT(sizeof(InlineTextBox) == sizeof(SameSizeAsInlineTextBox), InlineT extBox_should_stay_small);
70 70
71 typedef WTF::HashMap<const InlineTextBox*, LayoutRect> InlineTextBoxOverflowMap; 71 typedef WTF::HashMap<const InlineTextBox*, LayoutRect> InlineTextBoxOverflowMap;
72 static InlineTextBoxOverflowMap* gTextBoxesWithOverflow; 72 static InlineTextBoxOverflowMap* gTextBoxesWithOverflow;
73 73
74 typedef WTF::HashMap<const InlineTextBox*, TextBlobPtr> InlineTextBoxBlobCacheMa p; 74 typedef WTF::HashMap<const InlineTextBox*, TextBlobPtr> InlineTextBoxBlobCacheMa p;
75 static InlineTextBoxBlobCacheMap* gTextBlobCache; 75 static InlineTextBoxBlobCacheMap* gTextBlobCache;
76 76
77 static void removeFromTextBlobCache(InlineTextBox* textBox)
78 {
79 if (gTextBlobCache)
80 gTextBlobCache->remove(textBox);
81 }
82
77 static const int misspellingLineThickness = 3; 83 static const int misspellingLineThickness = 3;
78 84
79 void InlineTextBox::destroy() 85 void InlineTextBox::destroy()
80 { 86 {
81 AbstractInlineTextBox::willDestroy(this); 87 AbstractInlineTextBox::willDestroy(this);
82 88
83 if (!knownToHaveNoOverflow() && gTextBoxesWithOverflow) 89 if (!knownToHaveNoOverflow() && gTextBoxesWithOverflow)
84 gTextBoxesWithOverflow->remove(this); 90 gTextBoxesWithOverflow->remove(this);
85 if (gTextBlobCache) 91 removeFromTextBlobCache(this);
86 gTextBlobCache->remove(this);
87 InlineBox::destroy(); 92 InlineBox::destroy();
88 } 93 }
89 94
95 void InlineTextBox::offsetRun(int delta)
96 {
97 ASSERT(!isDirty());
98 removeFromTextBlobCache(this);
99 m_start += delta;
100 }
101
90 void InlineTextBox::markDirty() 102 void InlineTextBox::markDirty()
91 { 103 {
92 // FIXME: Is it actually possible to try and paint a dirty InlineTextBox? 104 // FIXME: Is it actually possible to try and paint a dirty InlineTextBox?
93 if (gTextBlobCache) 105 removeFromTextBlobCache(this);
94 gTextBlobCache->remove(this);
95 106
96 m_len = 0; 107 m_len = 0;
97 m_start = 0; 108 m_start = 0;
98 InlineBox::markDirty(); 109 InlineBox::markDirty();
99 } 110 }
100 111
101 LayoutRect InlineTextBox::logicalOverflowRect() const 112 LayoutRect InlineTextBox::logicalOverflowRect() const
102 { 113 {
103 if (knownToHaveNoOverflow() || !gTextBoxesWithOverflow) 114 if (knownToHaveNoOverflow() || !gTextBoxesWithOverflow)
104 return enclosingIntRect(logicalFrameRect()); 115 return enclosingIntRect(logicalFrameRect());
(...skipping 1209 matching lines...) Expand 10 before | Expand all | Expand 10 after
1314 printedCharacters = fprintf(stderr, "\t%s %p", obj.renderName(), &obj); 1325 printedCharacters = fprintf(stderr, "\t%s %p", obj.renderName(), &obj);
1315 const int rendererCharacterOffset = 24; 1326 const int rendererCharacterOffset = 24;
1316 for (; printedCharacters < rendererCharacterOffset; printedCharacters++) 1327 for (; printedCharacters < rendererCharacterOffset; printedCharacters++)
1317 fputc(' ', stderr); 1328 fputc(' ', stderr);
1318 fprintf(stderr, "(%d,%d) \"%s\"\n", start(), start() + len(), value.utf8().d ata()); 1329 fprintf(stderr, "(%d,%d) \"%s\"\n", start(), start() + len(), value.utf8().d ata());
1319 } 1330 }
1320 1331
1321 #endif 1332 #endif
1322 1333
1323 } // namespace blink 1334 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698