1/*
2 * Copyright (c) 2024 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16#ifndef OHOS_INPUTMETHOD_CONTROLLER_CAPI_H
17#define OHOS_INPUTMETHOD_CONTROLLER_CAPI_H
18/**
19 * @addtogroup InputMethod
20 * @{
21 *
22 * @brief InputMethod provides functions to use input methods and develop input methods.
23 *
24 * @since 12
25 */
26
27/**
28 * @file inputmethod_controller_capi.h
29 *
30 * @brief Provides the functions for using input method.
31 *
32 * @library libohinputmethod.so
33 * @kit IMEKit
34 * @syscap SystemCapability.MiscServices.InputMethodFramework
35 * @since 12
36 * @version 1.0
37 */
38
39#include <stdint.h>
40#include <stdlib.h>
41
42#include "inputmethod_text_editor_proxy_capi.h"
43#include "inputmethod_inputmethod_proxy_capi.h"
44#include "inputmethod_attach_options_capi.h"
45#ifdef __cplusplus
46extern "C" {
47#endif /* __cplusplus */
48/**
49 * @brief Attach application to the input method service.
50 *
51 * @param textEditorProxy Represents a pointer to an {@link InputMethod_TextEditorProxy} instance.
52 *     The caller needs to manage the lifecycle of textEditorProxy.
53 *     If the call succeeds, caller cannot release textEditorProxy until the next attach or detach call.
54 * @param options Represents a pointer to an {@link InputMethod_AttachOptions} instance.
55 *     The options when attaching input method.
56 * @param inputMethodProxy Represents a pointer to an {@link OH_InputMethod_InputMethodProxy} instance.
57 *     Lifecycle is mantianed until the next attach or detach call.
58 * @return Returns a specific error code.
59 *     {@link IME_ERR_OK} - success.
60 *     {@link IME_ERR_PARAMCHECK} - parameter check failed.
61 *     {@link IME_ERR_IMCLIENT} - input method client error.
62 *     {@link IME_ERR_IMMS} - input method manager service error.
63 *     {@link IME_ERR_NULL_POINTER} - unexpected null pointer.
64 * Specific error codes can be referenced {@link InputMethod_ErrorCode}.
65 * @since 12
66 */
67InputMethod_ErrorCode OH_InputMethodController_Attach(InputMethod_TextEditorProxy *textEditorProxy,
68    InputMethod_AttachOptions *options, InputMethod_InputMethodProxy **inputMethodProxy);
69
70/**
71 * @brief Detach application from the input method service.
72 *
73 * @param inputMethodProxy Represents a pointer to an {@link OH_InputMethod_InputMethodProxy} instance.
74 *     The inputMethodProxy is obtained from {@link OH_InputMethodController_Attach}.
75 * @return Returns a specific error code.
76 *     {@link IME_ERR_OK} - success.
77 *     {@link IME_ERR_IMCLIENT} - input method client error.
78 *     {@link IME_ERR_IMMS} - input method manager service error.
79 *     {@link IME_ERR_NULL_POINTER} - unexpected null pointer.
80 * Specific error codes can be referenced {@link InputMethod_ErrorCode}.
81 * @since 12
82 */
83InputMethod_ErrorCode OH_InputMethodController_Detach(InputMethod_InputMethodProxy *inputMethodProxy);
84#ifdef __cplusplus
85}
86#endif /* __cplusplus */
87/** @} */
88#endif // OHOS_INPUTMETHOD_CONTROLLER_CAPI_H