OLD | NEW |
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. All right r
eserved. | 3 * Copyright (C) 2003, 2004, 2006, 2007, 2008, 2009, 2010 Apple Inc. All right r
eserved. |
4 * Copyright (C) 2010 Google Inc. All rights reserved. | 4 * Copyright (C) 2010 Google Inc. All rights 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 10 matching lines...) Expand all Loading... |
21 */ | 21 */ |
22 | 22 |
23 #ifndef InlineIterator_h | 23 #ifndef InlineIterator_h |
24 #define InlineIterator_h | 24 #define InlineIterator_h |
25 | 25 |
26 #include "core/layout/BidiRun.h" | 26 #include "core/layout/BidiRun.h" |
27 #include "core/layout/LayoutBlockFlow.h" | 27 #include "core/layout/LayoutBlockFlow.h" |
28 #include "core/layout/api/LineLayoutBlockFlow.h" | 28 #include "core/layout/api/LineLayoutBlockFlow.h" |
29 #include "core/layout/api/LineLayoutInline.h" | 29 #include "core/layout/api/LineLayoutInline.h" |
30 #include "core/layout/api/LineLayoutText.h" | 30 #include "core/layout/api/LineLayoutText.h" |
31 | 31 #include "wtf/Allocator.h" |
32 #include "wtf/StdLibExtras.h" | 32 #include "wtf/StdLibExtras.h" |
33 | 33 |
34 namespace blink { | 34 namespace blink { |
35 | 35 |
36 // This class is used to LayoutInline subtrees, stepping by character within the | 36 // This class is used to LayoutInline subtrees, stepping by character within the |
37 // text children. InlineIterator will use bidiNext to find the next LayoutText | 37 // text children. InlineIterator will use bidiNext to find the next LayoutText |
38 // optionally notifying a BidiResolver every time it steps into/out of a LayoutI
nline. | 38 // optionally notifying a BidiResolver every time it steps into/out of a LayoutI
nline. |
39 class InlineIterator { | 39 class InlineIterator { |
| 40 ALLOW_ONLY_INLINE_ALLOCATION(); |
40 public: | 41 public: |
41 enum IncrementRule { | 42 enum IncrementRule { |
42 FastIncrementInIsolatedLayout, | 43 FastIncrementInIsolatedLayout, |
43 FastIncrementInTextNode | 44 FastIncrementInTextNode |
44 }; | 45 }; |
45 | 46 |
46 InlineIterator() | 47 InlineIterator() |
47 : m_root(nullptr) | 48 : m_root(nullptr) |
48 , m_obj(nullptr) | 49 , m_obj(nullptr) |
49 , m_nextBreakablePosition(-1) | 50 , m_nextBreakablePosition(-1) |
(...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
329 ASSERT(m_obj); | 330 ASSERT(m_obj); |
330 ASSERT(m_obj.isText()); | 331 ASSERT(m_obj.isText()); |
331 ASSERT(m_pos <= LineLayoutText(m_obj).textLength()); | 332 ASSERT(m_pos <= LineLayoutText(m_obj).textLength()); |
332 if (m_pos < INT_MAX) | 333 if (m_pos < INT_MAX) |
333 m_pos++; | 334 m_pos++; |
334 } | 335 } |
335 | 336 |
336 // FIXME: This is used by LayoutBlockFlow for simplified layout, and has nothing
to do with bidi | 337 // FIXME: This is used by LayoutBlockFlow for simplified layout, and has nothing
to do with bidi |
337 // it shouldn't use functions called bidiFirst and bidiNext. | 338 // it shouldn't use functions called bidiFirst and bidiNext. |
338 class InlineWalker { | 339 class InlineWalker { |
| 340 STACK_ALLOCATED(); |
339 public: | 341 public: |
340 InlineWalker(LayoutBlockFlow* root) | 342 InlineWalker(LayoutBlockFlow* root) |
341 : m_root(LineLayoutBlockFlow(root)) | 343 : m_root(LineLayoutBlockFlow(root)) |
342 , m_current(nullptr) | 344 , m_current(nullptr) |
343 , m_atEndOfInline(false) | 345 , m_atEndOfInline(false) |
344 { | 346 { |
345 // FIXME: This class should be taught how to do the SkipEmptyInlines cod
epath as well. | 347 // FIXME: This class should be taught how to do the SkipEmptyInlines cod
epath as well. |
346 m_current = bidiFirstIncludingEmptyInlines(m_root); | 348 m_current = bidiFirstIncludingEmptyInlines(m_root); |
347 } | 349 } |
348 | 350 |
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
565 { | 567 { |
566 return new BidiRun(start, end, obj, resolver.context(), resolver.dir()); | 568 return new BidiRun(start, end, obj, resolver.context(), resolver.dir()); |
567 } | 569 } |
568 | 570 |
569 enum AppendRunBehavior { | 571 enum AppendRunBehavior { |
570 AppendingFakeRun, | 572 AppendingFakeRun, |
571 AppendingRunsForObject | 573 AppendingRunsForObject |
572 }; | 574 }; |
573 | 575 |
574 class IsolateTracker { | 576 class IsolateTracker { |
| 577 STACK_ALLOCATED(); |
575 public: | 578 public: |
576 explicit IsolateTracker(BidiRunList<BidiRun>& runs, unsigned nestedIsolateCo
unt) | 579 explicit IsolateTracker(BidiRunList<BidiRun>& runs, unsigned nestedIsolateCo
unt) |
577 : m_nestedIsolateCount(nestedIsolateCount) | 580 : m_nestedIsolateCount(nestedIsolateCount) |
578 , m_haveAddedFakeRunForRootIsolate(false) | 581 , m_haveAddedFakeRunForRootIsolate(false) |
579 , m_runs(runs) | 582 , m_runs(runs) |
580 { | 583 { |
581 } | 584 } |
582 | 585 |
583 void setMidpointStateForRootIsolate(const LineMidpointState& midpointState) | 586 void setMidpointStateForRootIsolate(const LineMidpointState& midpointState) |
584 { | 587 { |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
738 m_sor = m_eor; | 741 m_sor = m_eor; |
739 } | 742 } |
740 | 743 |
741 m_direction = WTF::Unicode::OtherNeutral; | 744 m_direction = WTF::Unicode::OtherNeutral; |
742 m_status.eor = WTF::Unicode::OtherNeutral; | 745 m_status.eor = WTF::Unicode::OtherNeutral; |
743 } | 746 } |
744 | 747 |
745 } | 748 } |
746 | 749 |
747 #endif // InlineIterator_h | 750 #endif // InlineIterator_h |
OLD | NEW |