15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// found in the LICENSE file. 4f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#ifndef CHROMEOS_IME_COMPOSITION_TEXT_H_ 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define CHROMEOS_IME_COMPOSITION_TEXT_H_ 7f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 8f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include <string> 9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include <vector> 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/basictypes.h" 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/strings/string16.h" 13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "chromeos/chromeos_export.h" 14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace chromeos { 16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class CHROMEOS_EXPORT CompositionText { 18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) public: 195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) enum UnderlineType { 205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) COMPOSITION_TEXT_UNDERLINE_SINGLE = 1, 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) COMPOSITION_TEXT_UNDERLINE_DOUBLE = 2, 225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) COMPOSITION_TEXT_UNDERLINE_ERROR = 4, 23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) }; 24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) struct UnderlineAttribute { 265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) UnderlineType type; 27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) uint32 start_index; // The inclusive start index. 28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) uint32 end_index; // The exclusive end index. 29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) }; 30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) CompositionText(); 325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual ~CompositionText(); 33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Accessors 355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::string16& text() const { return text_; } 365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void set_text(const base::string16& text) { text_ = text; } 37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const std::vector<UnderlineAttribute>& underline_attributes() const { 39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return underline_attributes_; 40f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 41f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 42f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) std::vector<UnderlineAttribute>* mutable_underline_attributes() { 43f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return &underline_attributes_; 44f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 45f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 46a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) uint32 selection_start() const { return selection_start_; } 47a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void set_selection_start(uint32 selection_start) { 48a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) selection_start_ = selection_start; 49f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 50a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 51a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) uint32 selection_end() const { return selection_end_; } 52a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void set_selection_end(uint32 selection_end) { 53a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) selection_end_ = selection_end; 54f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 55f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void CopyFrom(const CompositionText& obj); 57f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 58f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) private: 595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::string16 text_; 60f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) std::vector<UnderlineAttribute> underline_attributes_; 61a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) uint32 selection_start_; 62a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) uint32 selection_end_; 63f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(CompositionText); 65f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}; 66f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 67f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} // namespace chromeos 68f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif // CHROMEOS_IME_COMPOSITION_TEXT_H_ 70