| // Copyright 2015 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include <new> |
| |
| #include "services/prediction/input_info.h" |
| #include "services/prediction/key_set.h" |
| #include "third_party/android_prediction/defines.h" |
| |
| namespace prediction { |
| |
| InputInfo::InputInfo(mojo::String& input, int input_size) { |
| real_size_ = 0; |
| for (int i = 0; i < input_size; i++) { |
| int codepoint = (int)input[i]; |
| if ((codepoint >= 'a' && codepoint <= 'z') || |
| (codepoint >= 'A' && codepoint <= 'Z')) { |
| real_size_++; |
| } |
| } |
| codepoints_ = new int[real_size_]; |
| x_coordinates_ = new int[real_size_]; |
| y_coordinates_ = new int[real_size_]; |
| pointer_ids_ = new int[real_size_]; |
| times_ = new int[real_size_]; |
| |
| ProcessInput(input, input_size); |
| } |
| |
| InputInfo::~InputInfo() { |
| delete[] codepoints_; |
| delete[] x_coordinates_; |
| delete[] y_coordinates_; |
| delete[] pointer_ids_; |
| delete[] times_; |
| } |
| |
| int* InputInfo::GetCodepoints() { |
| return codepoints_; |
| } |
| |
| int* InputInfo::GetXCoordinates() { |
| return x_coordinates_; |
| } |
| |
| int* InputInfo::GetYCoordinates() { |
| return y_coordinates_; |
| } |
| |
| int* InputInfo::GetPointerIds() { |
| return pointer_ids_; |
| } |
| |
| int* InputInfo::GetTimes() { |
| return times_; |
| } |
| |
| int InputInfo::GetRealSize() { |
| return real_size_; |
| } |
| |
| void InputInfo::ProcessInput(mojo::String& input, int input_size) { |
| int real_index = 0; |
| for (int i = 0; i < input_size; i++) { |
| int codepoint = (int)input[i]; |
| if ((codepoint >= 'a' && codepoint <= 'z') || |
| (codepoint >= 'A' && codepoint <= 'Z')) { |
| codepoints_[real_index] = codepoint; |
| for (int j = 0; j < keyset::key_count; j++) { |
| if (keyset::key_set[j].kcode == tolower(codepoint)) { |
| x_coordinates_[real_index] = |
| keyset::key_set[j].kx + keyset::key_set[j].kwidth / 2; |
| y_coordinates_[real_index] = |
| keyset::key_set[j].ky + keyset::key_set[j].kheight / 2; |
| break; |
| } |
| } |
| pointer_ids_[real_index] = 0; |
| times_[real_index] = 0; |
| real_index++; |
| } |
| } |
| } |
| |
| } // namespace prediction |