| Index: services/prediction/input_info.cc
|
| diff --git a/services/prediction/input_info.cc b/services/prediction/input_info.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..061c0c8df2a717026fa8bb6c7e9f0db23fb744da
|
| --- /dev/null
|
| +++ b/services/prediction/input_info.cc
|
| @@ -0,0 +1,86 @@
|
| +// 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
|
|
|