1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef UI_BASE_IME_COMPOSITION_UNDERLINE_H_
6#define UI_BASE_IME_COMPOSITION_UNDERLINE_H_
7
8#include <vector>
9
10#include "third_party/skia/include/core/SkColor.h"
11
12namespace ui {
13
14// Intentionally keep sync with WebKit::WebCompositionUnderline defined in:
15// third_party/WebKit/public/web/WebCompositionUnderline.h
16struct CompositionUnderline {
17  CompositionUnderline()
18    : start_offset(0),
19      end_offset(0),
20      color(0),
21      thick(false) {}
22
23  CompositionUnderline(unsigned s, unsigned e, SkColor c, bool t)
24    : start_offset(s),
25      end_offset(e),
26      color(c),
27      thick(t) {}
28
29  bool operator==(const CompositionUnderline& rhs) const {
30    return (this->start_offset == rhs.start_offset) &&
31        (this->end_offset == rhs.end_offset) &&
32        (this->color == rhs.color) &&
33        (this->thick == rhs.thick);
34  }
35
36  bool operator!=(const CompositionUnderline& rhs) const {
37    return !(*this == rhs);
38  }
39
40  // Though use of unsigned is discouraged, we use it here to make sure it's
41  // identical to WebKit::WebCompositionUnderline.
42  unsigned start_offset;
43  unsigned end_offset;
44  SkColor color;
45  bool thick;
46};
47
48typedef std::vector<CompositionUnderline> CompositionUnderlines;
49
50}  // namespace ui
51
52#endif  // UI_BASE_IME_COMPOSITION_UNDERLINE_H_
53