| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef UI_BASE_IME_COMPOSITION_UNDERLINE_H_ |
| #define UI_BASE_IME_COMPOSITION_UNDERLINE_H_ |
| |
| #include <stdint.h> |
| |
| #include <vector> |
| |
| #include "third_party/skia/include/core/SkColor.h" |
| |
| namespace ui { |
| |
| // Intentionally keep sync with blink::WebCompositionUnderline defined in: |
| // third_party/WebKit/public/web/WebCompositionUnderline.h |
| struct CompositionUnderline { |
| CompositionUnderline() |
| : start_offset(0), |
| end_offset(0), |
| color(SK_ColorTRANSPARENT), |
| thick(false), |
| background_color(SK_ColorTRANSPARENT) {} |
| |
| // TODO(huangs): remove this constructor. |
| CompositionUnderline(uint32_t s, uint32_t e, SkColor c, bool t) |
| : start_offset(s), |
| end_offset(e), |
| color(c), |
| thick(t), |
| background_color(SK_ColorTRANSPARENT) {} |
| |
| CompositionUnderline(uint32_t s, uint32_t e, SkColor c, bool t, SkColor bc) |
| : start_offset(s), |
| end_offset(e), |
| color(c), |
| thick(t), |
| background_color(bc) {} |
| |
| bool operator<(const CompositionUnderline& rhs) const { |
| return std::tie(start_offset, end_offset) < |
| std::tie(rhs.start_offset, rhs.end_offset); |
| } |
| |
| bool operator==(const CompositionUnderline& rhs) const { |
| return (this->start_offset == rhs.start_offset) && |
| (this->end_offset == rhs.end_offset) && (this->color == rhs.color) && |
| (this->thick == rhs.thick) && |
| (this->background_color == rhs.background_color); |
| } |
| |
| bool operator!=(const CompositionUnderline& rhs) const { |
| return !(*this == rhs); |
| } |
| |
| uint32_t start_offset; |
| uint32_t end_offset; |
| SkColor color; |
| bool thick; |
| SkColor background_color; |
| }; |
| |
| typedef std::vector<CompositionUnderline> CompositionUnderlines; |
| |
| } // namespace ui |
| |
| #endif // UI_BASE_IME_COMPOSITION_UNDERLINE_H_ |