- add sources.
[platform/framework/web/crosswalk.git] / src / ui / base / ime / composition_text.h
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_TEXT_H_
6 #define UI_BASE_IME_COMPOSITION_TEXT_H_
7
8 #include "base/strings/string16.h"
9 #include "ui/base/ime/composition_underline.h"
10 #include "ui/base/ui_export.h"
11 #include "ui/gfx/range/range.h"
12
13 namespace ui {
14
15 // A struct represents the status of an ongoing composition text.
16 struct UI_EXPORT CompositionText {
17   CompositionText();
18   ~CompositionText();
19
20   bool operator==(const CompositionText& rhs) const {
21     if ((this->text != rhs.text) ||
22         (this->selection != rhs.selection) ||
23         (this->underlines.size() != rhs.underlines.size()))
24       return false;
25     for (size_t i = 0; i < this->underlines.size(); ++i) {
26       if (this->underlines[i] != rhs.underlines[i])
27         return false;
28     }
29     return true;
30   }
31
32   bool operator!=(const CompositionText& rhs) const {
33     return !(*this == rhs);
34   }
35
36   void Clear();
37
38   // Content of the composition text.
39   string16 text;
40
41   // Underline information of the composition text.
42   // They must be sorted in ascending order by their start_offset and cannot be
43   // overlapped with each other.
44   CompositionUnderlines underlines;
45
46   // Selection range in the composition text. It represents the caret position
47   // if the range length is zero. Usually it's used for representing the target
48   // clause (on Windows). Gtk doesn't have such concept, so background color is
49   // usually used instead.
50   gfx::Range selection;
51 };
52
53 }  // namespace ui
54
55 #endif  // UI_BASE_IME_COMPOSITION_TEXT_H_