1a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
2a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// found in the LICENSE file.
4a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
5a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#ifndef PPAPI_CPP_TEXT_INPUT_CONTROLLER_H_
6a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define PPAPI_CPP_TEXT_INPUT_CONTROLLER_H_
7a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
8a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include <string>
9a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
10a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "ppapi/c/ppb_text_input_controller.h"
11a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "ppapi/cpp/instance_handle.h"
12a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "ppapi/cpp/var.h"
13a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
14a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)/// @file
15a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)/// This file defines the APIs for text input handling.
16a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
17a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)namespace pp {
18a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
19a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)class Rect;
20a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)class Instance;
21a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
22a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)/// This class can be used for giving hints to the browser about the text input
23a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)/// status of plugins.
24a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)class TextInputController {
25a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) public:
26a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  /// A constructor for creating a <code>TextInputController</code>.
27a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  ///
28a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  /// @param[in] instance The instance with which this resource will be
29a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  /// associated.
30a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  explicit TextInputController(const InstanceHandle& instance);
31a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
32a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  /// Destructor.
33a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  ~TextInputController();
34a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
35a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  /// SetTextInputType() informs the browser about the current text input mode
36a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  /// of the plugin.
37a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  ///
38a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  /// @param[in] type The type of text input type.
39a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  void SetTextInputType(PP_TextInput_Type type);
40a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
41a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  /// UpdateCaretPosition() informs the browser about the coordinates of the
42a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  /// text input caret area.
43a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  ///
44a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  /// @param[in] caret A rectangle indicating the caret area.
45a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  void UpdateCaretPosition(const Rect& caret);
46a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
47a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  /// CancelCompositionText() informs the browser that the current composition
48a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  /// text is cancelled by the plugin.
49a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  void CancelCompositionText();
50a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
51a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  /// UpdateSurroundingText() informs the browser about the current text
52a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  /// selection and surrounding text.
53a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  ///
54a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  /// @param[in] text A UTF-8 sting indicating string buffer of current input
55a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  /// context.
56a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  ///
57a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  /// @param[in] caret A integer indicating the byte index of caret location in
58a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  /// <code>text</code>.
59a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  ///
60a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  /// @param[in] caret A integer indicating the byte index of anchor location in
61a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  /// <code>text</code>. If there is no selection, this value should be equal to
62a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  /// <code>caret</code>.
63a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  void UpdateSurroundingText(const Var& text,
64a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)                             uint32_t caret,
65a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)                             uint32_t anchor);
66a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
67a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) private:
68a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  InstanceHandle instance_;
69a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)};
70a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
71a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}  // namespace pp
72a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
73a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#endif  // PPAPI_CPP_TEXT_INPUT_CONTROLLER_H_
74