Home | History | Annotate | Download | only in ime
      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/range/range.h"
     11 #include "ui/base/ui_export.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   Range selection;
     51 };
     52 
     53 }  // namespace ui
     54 
     55 #endif  // UI_BASE_IME_COMPOSITION_TEXT_H_
     56