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

Side by Side Diff: third_party/WebKit/Source/core/layout/line/InlineIterator.h

Issue 2625553005: Changed EUnicodeBidi to an enum class and renamed its members (Closed)
Patch Set: Created 3 years, 11 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org)
3 * Copyright (C) 2003, 2004, 2006, 2007, 2008, 2009, 2010 Apple Inc. 3 * Copyright (C) 2003, 2004, 2006, 2007, 2008, 2009, 2010 Apple Inc.
4 * All right reserved. 4 * All right reserved.
5 * Copyright (C) 2010 Google Inc. All rights reserved. 5 * Copyright (C) 2010 Google Inc. All rights reserved.
6 * 6 *
7 * This library is free software; you can redistribute it and/or 7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Library General Public 8 * modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either 9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version. 10 * version 2 of the License, or (at your option) any later version.
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 139
140 inline bool operator!=(const InlineIterator& it1, const InlineIterator& it2) { 140 inline bool operator!=(const InlineIterator& it1, const InlineIterator& it2) {
141 return it1.offset() != it2.offset() || 141 return it1.offset() != it2.offset() ||
142 it1.getLineLayoutItem() != it2.getLineLayoutItem(); 142 it1.getLineLayoutItem() != it2.getLineLayoutItem();
143 } 143 }
144 144
145 static inline WTF::Unicode::CharDirection embedCharFromDirection( 145 static inline WTF::Unicode::CharDirection embedCharFromDirection(
146 TextDirection dir, 146 TextDirection dir,
147 EUnicodeBidi unicodeBidi) { 147 EUnicodeBidi unicodeBidi) {
148 using namespace WTF::Unicode; 148 using namespace WTF::Unicode;
149 if (unicodeBidi == Embed) { 149 if (unicodeBidi == EUnicodeBidi::kEmbed) {
150 return dir == TextDirection::kRtl ? RightToLeftEmbedding 150 return dir == TextDirection::kRtl ? RightToLeftEmbedding
151 : LeftToRightEmbedding; 151 : LeftToRightEmbedding;
152 } 152 }
153 return dir == TextDirection::kRtl ? RightToLeftOverride : LeftToRightOverride; 153 return dir == TextDirection::kRtl ? RightToLeftOverride : LeftToRightOverride;
154 } 154 }
155 155
156 static inline bool treatAsIsolated(const ComputedStyle& style) { 156 static inline bool treatAsIsolated(const ComputedStyle& style) {
157 return isIsolated(style.unicodeBidi()) && 157 return isIsolated(style.unicodeBidi()) &&
158 style.rtlOrdering() == EOrder::Logical; 158 style.rtlOrdering() == EOrder::Logical;
159 } 159 }
160 160
161 template <class Observer> 161 template <class Observer>
162 static inline void notifyObserverEnteredObject(Observer* observer, 162 static inline void notifyObserverEnteredObject(Observer* observer,
163 LineLayoutItem object) { 163 LineLayoutItem object) {
164 if (!observer || !object || !object.isLayoutInline()) 164 if (!observer || !object || !object.isLayoutInline())
165 return; 165 return;
166 166
167 const ComputedStyle& style = object.styleRef(); 167 const ComputedStyle& style = object.styleRef();
168 EUnicodeBidi unicodeBidi = style.unicodeBidi(); 168 EUnicodeBidi unicodeBidi = style.unicodeBidi();
169 if (unicodeBidi == UBNormal) { 169 if (unicodeBidi == EUnicodeBidi::kNormal) {
170 // http://dev.w3.org/csswg/css3-writing-modes/#unicode-bidi 170 // http://dev.w3.org/csswg/css3-writing-modes/#unicode-bidi
171 // "The element does not open an additional level of embedding with respect 171 // "The element does not open an additional level of embedding with respect
172 // to the bidirectional algorithm." 172 // to the bidirectional algorithm."
173 // Thus we ignore any possible dir= attribute on the span. 173 // Thus we ignore any possible dir= attribute on the span.
174 return; 174 return;
175 } 175 }
176 if (treatAsIsolated(style)) { 176 if (treatAsIsolated(style)) {
177 // Make sure that explicit embeddings are committed before we enter the 177 // Make sure that explicit embeddings are committed before we enter the
178 // isolated content. 178 // isolated content.
179 observer->commitExplicitEmbedding(observer->runs()); 179 observer->commitExplicitEmbedding(observer->runs());
180 observer->enterIsolate(); 180 observer->enterIsolate();
181 // Embedding/Override characters implied by dir= will be handled when 181 // Embedding/Override characters implied by dir= will be handled when
182 // we process the isolated span, not when laying out the "parent" run. 182 // we process the isolated span, not when laying out the "parent" run.
183 return; 183 return;
184 } 184 }
185 185
186 if (!observer->inIsolate()) 186 if (!observer->inIsolate())
187 observer->embed(embedCharFromDirection(style.direction(), unicodeBidi), 187 observer->embed(embedCharFromDirection(style.direction(), unicodeBidi),
188 FromStyleOrDOM); 188 FromStyleOrDOM);
189 } 189 }
190 190
191 template <class Observer> 191 template <class Observer>
192 static inline void notifyObserverWillExitObject(Observer* observer, 192 static inline void notifyObserverWillExitObject(Observer* observer,
193 LineLayoutItem object) { 193 LineLayoutItem object) {
194 if (!observer || !object || !object.isLayoutInline()) 194 if (!observer || !object || !object.isLayoutInline())
195 return; 195 return;
196 196
197 EUnicodeBidi unicodeBidi = object.style()->unicodeBidi(); 197 EUnicodeBidi unicodeBidi = object.style()->unicodeBidi();
198 if (unicodeBidi == UBNormal) 198 if (unicodeBidi == EUnicodeBidi::kNormal)
199 return; // Nothing to do for unicode-bidi: normal 199 return; // Nothing to do for unicode-bidi: normal
200 if (treatAsIsolated(object.styleRef())) { 200 if (treatAsIsolated(object.styleRef())) {
201 observer->exitIsolate(); 201 observer->exitIsolate();
202 return; 202 return;
203 } 203 }
204 204
205 // Otherwise we pop any embed/override character we added when we opened this 205 // Otherwise we pop any embed/override character we added when we opened this
206 // tag. 206 // tag.
207 if (!observer->inIsolate()) 207 if (!observer->inIsolate())
208 observer->embed(WTF::Unicode::PopDirectionalFormat, FromStyleOrDOM); 208 observer->embed(WTF::Unicode::PopDirectionalFormat, FromStyleOrDOM);
(...skipping 686 matching lines...) Expand 10 before | Expand all | Expand 10 after
895 m_sor = m_eor; 895 m_sor = m_eor;
896 } 896 }
897 897
898 m_direction = WTF::Unicode::OtherNeutral; 898 m_direction = WTF::Unicode::OtherNeutral;
899 m_status.eor = WTF::Unicode::OtherNeutral; 899 m_status.eor = WTF::Unicode::OtherNeutral;
900 } 900 }
901 901
902 } // namespace blink 902 } // namespace blink
903 903
904 #endif // InlineIterator_h 904 #endif // InlineIterator_h
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/layout/LayoutText.cpp ('k') | third_party/WebKit/Source/core/layout/ng/ng_bidi_paragraph.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698