OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
4 * (C) 2001 Dirk Mueller (mueller@kde.org) | 4 * (C) 2001 Dirk Mueller (mueller@kde.org) |
5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org) | 5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org) |
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights | 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights |
7 * reserved. | 7 * reserved. |
8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. | 8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. |
9 * (http://www.torchmobile.com/) | 9 * (http://www.torchmobile.com/) |
10 * Copyright (C) Research In Motion Limited 2010. All rights reserved. | 10 * Copyright (C) Research In Motion Limited 2010. All rights reserved. |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
70 void AddTextMatchMarker(const EphemeralRange&, DocumentMarker::MatchStatus); | 70 void AddTextMatchMarker(const EphemeralRange&, DocumentMarker::MatchStatus); |
71 void AddCompositionMarker(const Position& start, | 71 void AddCompositionMarker(const Position& start, |
72 const Position& end, | 72 const Position& end, |
73 Color underline_color, | 73 Color underline_color, |
74 bool thick, | 74 bool thick, |
75 Color background_color); | 75 Color background_color); |
76 | 76 |
77 void MoveMarkers(Node* src_node, int length, Node* dst_node); | 77 void MoveMarkers(Node* src_node, int length, Node* dst_node); |
78 | 78 |
79 void PrepareForDestruction(); | 79 void PrepareForDestruction(); |
80 // When a marker partially overlaps with range, if | 80 void RemoveMarkers( |
81 // removePartiallyOverlappingMarkers is true, we completely remove the marker. | 81 const EphemeralRange&, |
82 // If the argument is false, we will adjust the span of the marker so that it | 82 DocumentMarker::MarkerTypes = DocumentMarker::AllMarkers()); |
83 // retains the portion that is outside of the range. | 83 void RemoveMarkers( |
84 enum RemovePartiallyOverlappingMarkerOrNot { | 84 Node*, |
85 kDoNotRemovePartiallyOverlappingMarker, | 85 unsigned start_offset, |
86 kRemovePartiallyOverlappingMarker | 86 int length, |
87 }; | 87 DocumentMarker::MarkerTypes = DocumentMarker::AllMarkers()); |
88 void RemoveMarkers(const EphemeralRange&, | |
89 DocumentMarker::MarkerTypes = DocumentMarker::AllMarkers(), | |
90 RemovePartiallyOverlappingMarkerOrNot = | |
91 kDoNotRemovePartiallyOverlappingMarker); | |
92 void RemoveMarkers(Node*, | |
93 unsigned start_offset, | |
94 int length, | |
95 DocumentMarker::MarkerTypes = DocumentMarker::AllMarkers(), | |
96 RemovePartiallyOverlappingMarkerOrNot = | |
97 kDoNotRemovePartiallyOverlappingMarker); | |
98 | |
99 void RemoveMarkers( | 88 void RemoveMarkers( |
100 DocumentMarker::MarkerTypes = DocumentMarker::AllMarkers()); | 89 DocumentMarker::MarkerTypes = DocumentMarker::AllMarkers()); |
101 void RemoveMarkers( | 90 void RemoveMarkers( |
102 Node*, | 91 Node*, |
103 DocumentMarker::MarkerTypes = DocumentMarker::AllMarkers()); | 92 DocumentMarker::MarkerTypes = DocumentMarker::AllMarkers()); |
104 void RemoveMarkers(const MarkerRemoverPredicate& should_remove_marker); | 93 void RemoveMarkers(const MarkerRemoverPredicate& should_remove_marker); |
105 void RepaintMarkers( | 94 void RepaintMarkers( |
106 DocumentMarker::MarkerTypes = DocumentMarker::AllMarkers()); | 95 DocumentMarker::MarkerTypes = DocumentMarker::AllMarkers()); |
107 // Returns true if markers within a range are found. | 96 // Returns true if markers within a range are found. |
108 bool SetMarkersActive(const EphemeralRange&, bool); | 97 bool SetMarkersActive(const EphemeralRange&, bool); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
140 private: | 129 private: |
141 void AddMarker(Node*, const DocumentMarker&); | 130 void AddMarker(Node*, const DocumentMarker&); |
142 | 131 |
143 using MarkerList = HeapVector<Member<RenderedDocumentMarker>>; | 132 using MarkerList = HeapVector<Member<RenderedDocumentMarker>>; |
144 using MarkerLists = | 133 using MarkerLists = |
145 HeapVector<Member<MarkerList>, DocumentMarker::kMarkerTypeIndexesCount>; | 134 HeapVector<Member<MarkerList>, DocumentMarker::kMarkerTypeIndexesCount>; |
146 using MarkerMap = HeapHashMap<WeakMember<const Node>, Member<MarkerLists>>; | 135 using MarkerMap = HeapHashMap<WeakMember<const Node>, Member<MarkerLists>>; |
147 void MergeOverlapping(MarkerList*, RenderedDocumentMarker*); | 136 void MergeOverlapping(MarkerList*, RenderedDocumentMarker*); |
148 bool PossiblyHasMarkers(DocumentMarker::MarkerTypes); | 137 bool PossiblyHasMarkers(DocumentMarker::MarkerTypes); |
149 void RemoveMarkersFromList(MarkerMap::iterator, DocumentMarker::MarkerTypes); | 138 void RemoveMarkersFromList(MarkerMap::iterator, DocumentMarker::MarkerTypes); |
150 void RemoveMarkers(TextIterator&, | 139 void RemoveMarkers(TextIterator&, DocumentMarker::MarkerTypes); |
151 DocumentMarker::MarkerTypes, | |
152 RemovePartiallyOverlappingMarkerOrNot); | |
153 | 140 |
154 MarkerMap markers_; | 141 MarkerMap markers_; |
155 // Provide a quick way to determine whether a particular marker type is absent | 142 // Provide a quick way to determine whether a particular marker type is absent |
156 // without going through the map. | 143 // without going through the map. |
157 DocumentMarker::MarkerTypes possibly_existing_marker_types_; | 144 DocumentMarker::MarkerTypes possibly_existing_marker_types_; |
158 const Member<const Document> document_; | 145 const Member<const Document> document_; |
159 }; | 146 }; |
160 | 147 |
161 } // namespace blink | 148 } // namespace blink |
162 | 149 |
163 #ifndef NDEBUG | 150 #ifndef NDEBUG |
164 void showDocumentMarkers(const blink::DocumentMarkerController*); | 151 void showDocumentMarkers(const blink::DocumentMarkerController*); |
165 #endif | 152 #endif |
166 | 153 |
167 #endif // DocumentMarkerController_h | 154 #endif // DocumentMarkerController_h |
OLD | NEW |