1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Use of this source code is governed by a BSD-style license that can be 3f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// found in the LICENSE file. 4f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 5f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#ifndef PPAPI_CPP_DEV_TEXT_INPUT_DEV_H_ 6f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define PPAPI_CPP_DEV_TEXT_INPUT_DEV_H_ 7f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 8f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include <string> 9f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 10f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "ppapi/c/dev/ppb_text_input_dev.h" 11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "ppapi/cpp/instance_handle.h" 12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnamespace pp { 14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgclass Rect; 16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgclass Instance; 17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// This class allows you to associate the PPP_TextInput_Dev and 19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// PPB_TextInput_Dev C-based interfaces with an object. It associates itself 20f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// with the given instance, and registers as the global handler for handling the 21f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// PPP_TextInput_Dev interface that the browser calls. 22f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 23f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// You would typically use this either via inheritance on your instance: 24f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// class MyInstance : public pp::Instance, public pp::TextInput_Dev { 25f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// MyInstance() : pp::TextInput_Dev(this) { 26f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// } 27f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// ... 28f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// }; 29f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 30f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// or by composition: 31f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// class MyTextInput : public pp::TextInput_Dev { 32f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// ... 33f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// }; 34f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 35f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// class MyInstance : public pp::Instance { 36f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// MyInstance() : text_input_(this) { 37f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// } 38f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 39f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// MyTextInput text_input_; 40f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// }; 41f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgclass TextInput_Dev { 42f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org public: 43f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org explicit TextInput_Dev(Instance* instance); 44f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org virtual ~TextInput_Dev(); 45f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 46f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org virtual void RequestSurroundingText(uint32_t desired_number_of_characters); 47f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 48f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org void SetTextInputType(PP_TextInput_Type_Dev type); 49f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org void UpdateCaretPosition(const Rect& caret, const Rect& bounding_box); 50f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org void CancelCompositionText(); 51f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org void SelectionChanged(); 52f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org void UpdateSurroundingText(const std::string& text, 53f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org uint32_t caret, uint32_t anchor); 54f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 55f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org private: 56f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org InstanceHandle instance_; 57f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 58f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 59f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} // namespace pp 60f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 61f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif // PPAPI_CPP_DEV_TEXT_INPUT_DEV_H_ 62f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org