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