Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * This file is part of the DOM implementation for WebCore. | 2 * This file is part of the DOM implementation for WebCore. |
| 3 * | 3 * |
| 4 * Copyright (C) 2006 Apple Computer, Inc. | 4 * Copyright (C) 2006 Apple Computer, Inc. |
| 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 28 matching lines...) Expand all Loading... | |
| 39 // the match is active, which is ignored for all types other than type | 39 // the match is active, which is ignored for all types other than type |
| 40 // TextMatch. | 40 // TextMatch. |
| 41 class CORE_EXPORT DocumentMarker : public GarbageCollected<DocumentMarker> { | 41 class CORE_EXPORT DocumentMarker : public GarbageCollected<DocumentMarker> { |
| 42 public: | 42 public: |
| 43 enum MarkerTypeIndex { | 43 enum MarkerTypeIndex { |
| 44 SpellingMarkerIndex = 0, | 44 SpellingMarkerIndex = 0, |
| 45 GrammarMarkerIndex, | 45 GrammarMarkerIndex, |
| 46 TextMatchMarkerIndex, | 46 TextMatchMarkerIndex, |
| 47 InvisibleSpellcheckMarkerIndex, | 47 InvisibleSpellcheckMarkerIndex, |
| 48 CompositionMarkerIndex, | 48 CompositionMarkerIndex, |
| 49 SuggestionMarkerIndex, | |
| 50 SuggestionBackgroundHighlightMarkerIndex, | |
| 49 MarkerTypeIndexesCount | 51 MarkerTypeIndexesCount |
| 50 }; | 52 }; |
| 51 | 53 |
| 52 enum MarkerType { | 54 enum MarkerType { |
| 53 Spelling = 1 << SpellingMarkerIndex, | 55 Spelling = 1 << SpellingMarkerIndex, |
| 54 Grammar = 1 << GrammarMarkerIndex, | 56 Grammar = 1 << GrammarMarkerIndex, |
| 55 TextMatch = 1 << TextMatchMarkerIndex, | 57 TextMatch = 1 << TextMatchMarkerIndex, |
| 56 InvisibleSpellcheck = 1 << InvisibleSpellcheckMarkerIndex, | 58 InvisibleSpellcheck = 1 << InvisibleSpellcheckMarkerIndex, |
| 57 Composition = 1 << CompositionMarkerIndex, | 59 Composition = 1 << CompositionMarkerIndex, |
| 60 Suggestion = 1 << SuggestionMarkerIndex, | |
| 61 SuggestionBackgroundHighlight = 1 | |
|
rlanday
2017/01/25 18:48:10
lol @ git cl format...
| |
| 62 << SuggestionBackgroundHighlightMarkerIndex, | |
| 58 }; | 63 }; |
| 59 | 64 |
| 60 class MarkerTypes { | 65 class MarkerTypes { |
| 61 public: | 66 public: |
| 62 // The constructor is intentionally implicit to allow conversion from the | 67 // The constructor is intentionally implicit to allow conversion from the |
| 63 // bit-wise sum of above types | 68 // bit-wise sum of above types |
| 64 MarkerTypes(unsigned mask) : m_mask(mask) {} | 69 MarkerTypes(unsigned mask) : m_mask(mask) {} |
| 65 | 70 |
| 66 bool contains(MarkerType type) const { return m_mask & type; } | 71 bool contains(MarkerType type) const { return m_mask & type; } |
| 67 bool intersects(const MarkerTypes& types) const { | 72 bool intersects(const MarkerTypes& types) const { |
| 68 return (m_mask & types.m_mask); | 73 return (m_mask & types.m_mask); |
| 69 } | 74 } |
| 70 bool operator==(const MarkerTypes& other) const { | 75 bool operator==(const MarkerTypes& other) const { |
| 71 return m_mask == other.m_mask; | 76 return m_mask == other.m_mask; |
| 72 } | 77 } |
| 73 | 78 |
| 74 void add(const MarkerTypes& types) { m_mask |= types.m_mask; } | 79 void add(const MarkerTypes& types) { m_mask |= types.m_mask; } |
| 75 void remove(const MarkerTypes& types) { m_mask &= ~types.m_mask; } | 80 void remove(const MarkerTypes& types) { m_mask &= ~types.m_mask; } |
| 76 | 81 |
| 77 private: | 82 private: |
| 78 unsigned m_mask; | 83 unsigned m_mask; |
| 79 }; | 84 }; |
| 80 | 85 |
| 81 class AllMarkers : public MarkerTypes { | 86 class AllMarkers : public MarkerTypes { |
| 82 public: | 87 public: |
| 83 AllMarkers() | 88 AllMarkers() |
| 84 : MarkerTypes(Spelling | Grammar | TextMatch | InvisibleSpellcheck | | 89 : MarkerTypes(Spelling | Grammar | TextMatch | InvisibleSpellcheck | |
| 85 Composition) {} | 90 Composition | |
| 91 Suggestion | | |
| 92 SuggestionBackgroundHighlight) {} | |
| 86 }; | 93 }; |
| 87 | 94 |
| 88 class MisspellingMarkers : public MarkerTypes { | 95 class MisspellingMarkers : public MarkerTypes { |
| 89 public: | 96 public: |
| 90 MisspellingMarkers() : MarkerTypes(Spelling | Grammar) {} | 97 MisspellingMarkers() : MarkerTypes(Spelling | Grammar) {} |
| 91 }; | 98 }; |
| 92 | 99 |
| 93 class SpellCheckClientMarkers : public MarkerTypes { | 100 class SpellCheckClientMarkers : public MarkerTypes { |
| 94 public: | 101 public: |
| 95 SpellCheckClientMarkers() | 102 SpellCheckClientMarkers() |
| 96 : MarkerTypes(Spelling | Grammar | InvisibleSpellcheck) {} | 103 : MarkerTypes(Spelling | Grammar | InvisibleSpellcheck) {} |
| 97 }; | 104 }; |
| 98 | 105 |
| 99 DocumentMarker(MarkerType, | 106 DocumentMarker(MarkerType, |
| 100 unsigned startOffset, | 107 unsigned startOffset, |
| 101 unsigned endOffset, | 108 unsigned endOffset, |
| 102 const String& description, | 109 const String& description, |
| 103 uint32_t hash); | 110 uint32_t hash); |
| 104 DocumentMarker(unsigned startOffset, unsigned endOffset, bool activeMatch); | 111 DocumentMarker(unsigned startOffset, unsigned endOffset, bool activeMatch); |
| 112 DocumentMarker(MarkerType type, | |
| 113 unsigned startOffset, | |
| 114 unsigned endOffset, | |
| 115 Color underlineColor, | |
| 116 bool thick, | |
| 117 Color backgroundColor); | |
| 105 DocumentMarker(unsigned startOffset, | 118 DocumentMarker(unsigned startOffset, |
| 106 unsigned endOffset, | 119 unsigned endOffset, |
| 107 Color underlineColor, | 120 Color underlineColor, |
| 108 bool thick, | 121 bool thick, |
| 109 Color backgroundColor); | 122 Color backgroundColor, |
| 123 const std::vector<std::string>& suggestions, | |
| 124 int32_t suggestionMarkerID); | |
| 110 | 125 |
| 111 DocumentMarker(const DocumentMarker&); | 126 DocumentMarker(const DocumentMarker&); |
| 112 | 127 |
| 113 MarkerType type() const { return m_type; } | 128 MarkerType type() const { return m_type; } |
| 114 unsigned startOffset() const { return m_startOffset; } | 129 unsigned startOffset() const { return m_startOffset; } |
| 115 unsigned endOffset() const { return m_endOffset; } | 130 unsigned endOffset() const { return m_endOffset; } |
| 116 uint32_t hash() const { return m_hash; } | 131 uint32_t hash() const { return m_hash; } |
| 117 | 132 |
| 118 const String& description() const; | 133 const String& description() const; |
| 119 bool activeMatch() const; | 134 bool activeMatch() const; |
| 120 Color underlineColor() const; | 135 Color underlineColor() const; |
| 121 bool thick() const; | 136 bool thick() const; |
| 122 Color backgroundColor() const; | 137 Color backgroundColor() const; |
| 138 const std::vector<std::string> suggestions() const; | |
| 139 int suggestionMarkerID() const; | |
| 123 DocumentMarkerDetails* details() const; | 140 DocumentMarkerDetails* details() const; |
| 124 | 141 |
| 125 void setActiveMatch(bool); | 142 void setActiveMatch(bool); |
| 126 void clearDetails() { m_details.clear(); } | 143 void clearDetails() { m_details.clear(); } |
| 144 void replaceSuggestion(int index, const std::string& newSuggestion); | |
| 127 | 145 |
| 128 // Offset modifications are done by DocumentMarkerController. | 146 // Offset modifications are done by DocumentMarkerController. |
| 129 // Other classes should not call following setters. | 147 // Other classes should not call following setters. |
| 130 void setStartOffset(unsigned offset) { m_startOffset = offset; } | 148 void setStartOffset(unsigned offset) { m_startOffset = offset; } |
| 131 void setEndOffset(unsigned offset) { m_endOffset = offset; } | 149 void setEndOffset(unsigned offset) { m_endOffset = offset; } |
| 132 void shiftOffsets(int delta); | 150 void shiftOffsets(int delta); |
| 133 | 151 |
| 134 bool operator==(const DocumentMarker& o) const { | 152 bool operator==(const DocumentMarker& o) const { |
| 135 return type() == o.type() && startOffset() == o.startOffset() && | 153 return type() == o.type() && startOffset() == o.startOffset() && |
| 136 endOffset() == o.endOffset(); | 154 endOffset() == o.endOffset(); |
| (...skipping 18 matching lines...) Expand all Loading... | |
| 155 } | 173 } |
| 156 | 174 |
| 157 class DocumentMarkerDetails | 175 class DocumentMarkerDetails |
| 158 : public GarbageCollectedFinalized<DocumentMarkerDetails> { | 176 : public GarbageCollectedFinalized<DocumentMarkerDetails> { |
| 159 public: | 177 public: |
| 160 DocumentMarkerDetails() {} | 178 DocumentMarkerDetails() {} |
| 161 virtual ~DocumentMarkerDetails(); | 179 virtual ~DocumentMarkerDetails(); |
| 162 virtual bool isDescription() const { return false; } | 180 virtual bool isDescription() const { return false; } |
| 163 virtual bool isTextMatch() const { return false; } | 181 virtual bool isTextMatch() const { return false; } |
| 164 virtual bool isComposition() const { return false; } | 182 virtual bool isComposition() const { return false; } |
| 183 virtual bool isSuggestion() const { return true; } | |
| 165 | 184 |
| 166 DEFINE_INLINE_VIRTUAL_TRACE() {} | 185 DEFINE_INLINE_VIRTUAL_TRACE() {} |
| 167 }; | 186 }; |
| 168 | 187 |
| 169 } // namespace blink | 188 } // namespace blink |
| 170 | 189 |
| 171 #endif // DocumentMarker_h | 190 #endif // DocumentMarker_h |
| OLD | NEW |