| // Copyright 2013 The Flutter 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 FLUTTER_SHELL_PLATFORM_COMMON_TEXT_EDITING_DELTA_H_ |
| #define FLUTTER_SHELL_PLATFORM_COMMON_TEXT_EDITING_DELTA_H_ |
| |
| #include <string> |
| |
| #include "flutter/fml/string_conversion.h" |
| #include "flutter/shell/platform/common/text_range.h" |
| |
| namespace flutter { |
| |
| /// A change in the state of an input field. |
| struct TextEditingDelta { |
| TextEditingDelta(const std::u16string& text_before_change, |
| TextRange range, |
| const std::u16string& text); |
| |
| TextEditingDelta(const std::string& text_before_change, |
| TextRange range, |
| const std::string& text); |
| |
| explicit TextEditingDelta(const std::u16string& text); |
| |
| explicit TextEditingDelta(const std::string& text); |
| |
| virtual ~TextEditingDelta() = default; |
| |
| /// Get the old_text_ value. |
| /// |
| /// All strings are stored as UTF16 but converted to UTF8 when accessed. |
| std::string old_text() const { return fml::Utf16ToUtf8(old_text_); } |
| |
| /// Get the delta_text value. |
| /// |
| /// All strings are stored as UTF16 but converted to UTF8 when accessed. |
| std::string delta_text() const { return fml::Utf16ToUtf8(delta_text_); } |
| |
| /// Get the delta_start_ value. |
| int delta_start() const { return delta_start_; } |
| |
| /// Get the delta_end_ value. |
| int delta_end() const { return delta_end_; } |
| |
| bool operator==(const TextEditingDelta& rhs) const { |
| return old_text_ == rhs.old_text_ && delta_text_ == rhs.delta_text_ && |
| delta_start_ == rhs.delta_start_ && delta_end_ == rhs.delta_end_; |
| } |
| |
| bool operator!=(const TextEditingDelta& rhs) const { return !(*this == rhs); } |
| |
| TextEditingDelta(const TextEditingDelta& other) = default; |
| |
| TextEditingDelta& operator=(const TextEditingDelta& other) = default; |
| |
| private: |
| std::u16string old_text_; |
| std::u16string delta_text_; |
| int delta_start_; |
| int delta_end_; |
| |
| void set_old_text(const std::u16string& old_text) { old_text_ = old_text; } |
| |
| void set_delta_text(const std::u16string& delta_text) { |
| delta_text_ = delta_text; |
| } |
| |
| void set_delta_start(int delta_start) { delta_start_ = delta_start; } |
| |
| void set_delta_end(int delta_end) { delta_end_ = delta_end; } |
| }; |
| |
| } // namespace flutter |
| |
| #endif // FLUTTER_SHELL_PLATFORM_COMMON_TEXT_EDITING_DELTA_H_ |