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 #ifndef OHOS_INPUTMETHOD_TEXT_CONFIG_CAPI_H
16 #define OHOS_INPUTMETHOD_TEXT_CONFIG_CAPI_H
17 /**
18  * @addtogroup InputMethod
19  * @{
20  *
21  * @brief InputMethod provides functions to use input methods and develop input methods.
22  *
23  * @since 12
24  */
25 
26 /**
27  * @file inputmethod_text_config_capi.h
28  *
29  * @brief Provides functions to manage the text configuration.
30  *
31  * @library libohinputmethod.so
32  * @kit IMEKit
33  * @syscap SystemCapability.MiscServices.InputMethodFramework
34  * @since 12
35  * @version 1.0
36  */
37 #include <stdint.h>
38 
39 #include "inputmethod_cursor_info_capi.h"
40 #include "inputmethod_text_avoid_info_capi.h"
41 #include "inputmethod_types_capi.h"
42 
43 #ifdef __cplusplus
44 extern "C" {
45 #endif /* __cplusplus */
46 /**
47  * @brief Define the InputMethod_TextConfig structure type.
48  *
49  * The configuration of the text editor.
50  *
51  * @since 12
52  */
53 typedef struct InputMethod_TextConfig InputMethod_TextConfig;
54 
55 /**
56  * @brief Create a new {@link InputMethod_TextConfig} instance.
57  *
58  * @return If the creation succeeds, a pointer to the newly created {@link InputMethod_TextConfig}
59  * instance is returned. If the creation fails, NULL is returned, possible cause is insufficient memory.
60  * @since 12
61  */
62 InputMethod_TextConfig *OH_TextConfig_Create(void);
63 /**
64  * @brief Destroy a {@link InputMethod_TextConfig} instance.
65  *
66  * @param config Represents a pointer to an {@link InputMethod_TextConfig} instance which will be destroyed.
67  * @since 12
68  */
69 void OH_TextConfig_Destroy(InputMethod_TextConfig *config);
70 
71 /**
72  * @brief Set input type into TextConfig.
73  *
74  * @param config Represents a pointer to an {@link InputMethod_TextConfig} instance which will be set.
75  * @param inputType The text input type of text Editor, which is defined in {@link InputMethod_TextInputType}.
76  * @return Returns a specific error code.
77  *     {@link IME_ERR_OK} - success.
78  *     {@link IME_ERR_NULL_POINTER} - unexpected null pointer.
79  * Specific error codes can be referenced {@link InputMethod_ErrorCode}.
80  * @since 12
81  */
82 InputMethod_ErrorCode OH_TextConfig_SetInputType(InputMethod_TextConfig *config, InputMethod_TextInputType inputType);
83 /**
84  * @brief Set enter key type into TextConfig.
85  *
86  * @param config Represents a pointer to an {@link InputMethod_TextConfig} instance which will be set.
87  * @param enterKeyType The enter key type of text Editor, which is defined in {@link InputMethod_EnterKeyType}.
88  * @return Returns a specific error code.
89  *     {@link IME_ERR_OK} - success.
90  *     {@link IME_ERR_NULL_POINTER} - unexpected null pointer.
91  * Specific error codes can be referenced {@link InputMethod_ErrorCode}.
92  * @since 12
93  */
94 InputMethod_ErrorCode OH_TextConfig_SetEnterKeyType(
95     InputMethod_TextConfig *config, InputMethod_EnterKeyType enterKeyType);
96 /**
97  * @brief Set preview text support into TextConfig.
98  *
99  * @param config Represents a pointer to an {@link InputMethod_TextConfig} instance which will be set.
100  * @param supported Indicates whether the preview text is supported.
101  * @return Returns a specific error code.
102  *     {@link IME_ERR_OK} - success.
103  *     {@link IME_ERR_NULL_POINTER} - unexpected null pointer.
104  * Specific error codes can be referenced {@link InputMethod_ErrorCode}.
105  * @since 12
106  */
107 InputMethod_ErrorCode OH_TextConfig_SetPreviewTextSupport(InputMethod_TextConfig *config, bool supported);
108 /**
109  * @brief Set selection into TextConfig.
110  *
111  * @param config Represents a pointer to an {@link InputMethod_TextConfig} instance which will be set.
112  * @param start The start position of selection.
113  * @param end The end position of selection.
114  * @return Returns a specific error code.
115  *     {@link IME_ERR_OK} - success.
116  *     {@link IME_ERR_NULL_POINTER} - unexpected null pointer.
117  * Specific error codes can be referenced {@link InputMethod_ErrorCode}.
118  * @since 12
119  */
120 InputMethod_ErrorCode OH_TextConfig_SetSelection(InputMethod_TextConfig *config, int32_t start, int32_t end);
121 /**
122  * @brief Set window id into TextConfig.
123  *
124  * @param config Represents a pointer to an {@link InputMethod_TextConfig} instance which will be set.
125  * @param windowId The window ID of the application currently bound to the input method.
126  * @return Returns a specific error code.
127  *     {@link IME_ERR_OK} - success.
128  *     {@link IME_ERR_NULL_POINTER} - unexpected null pointer.
129  * Specific error codes can be referenced {@link InputMethod_ErrorCode}.
130  * @since 12
131  */
132 InputMethod_ErrorCode OH_TextConfig_SetWindowId(InputMethod_TextConfig *config, int32_t windowId);
133 
134 /**
135  * @brief Get input type from TextConfig
136  *
137  * @param config Represents a pointer to an {@link InputMethod_TextConfig} instance which will be get from.
138  * @param inputType Represents a pointer to an {@link InputMethod_TextInputType} instance.
139  *     The text input type of text Editor
140  * @return Returns a specific error code.
141  *     {@link IME_ERR_OK} - success.
142  *     {@link IME_ERR_NULL_POINTER} - unexpected null pointer.
143  * Specific error codes can be referenced {@link InputMethod_ErrorCode}.
144  * @since 12
145  */
146 InputMethod_ErrorCode OH_TextConfig_GetInputType(InputMethod_TextConfig *config, InputMethod_TextInputType *inputType);
147 /**
148  * @brief Get enter key type from TextConfig
149  *
150  * @param config Represents a pointer to an {@link InputMethod_TextConfig} instance which will be get from.
151  * @param enterKeyType Represents a pointer to an {@link InputMethod_EnterKeyType} instance.
152  *     Indicates the enter key type of text Editor
153  * @return Returns a specific error code.
154  *     {@link IME_ERR_OK} - success.
155  *     {@link IME_ERR_NULL_POINTER} - unexpected null pointer.
156  * Specific error codes can be referenced {@link InputMethod_ErrorCode}.
157  * @since 12
158  */
159 InputMethod_ErrorCode OH_TextConfig_GetEnterKeyType(
160     InputMethod_TextConfig *config, InputMethod_EnterKeyType *enterKeyType);
161 /**
162  * @brief Get is preview text supported from TextConfig.
163  *
164  * @param config Represents a pointer to an {@link InputMethod_TextConfig} instance which will be get from.
165  * @param supported Indicates whether the preview text is supported.
166  * @return Returns a specific error code.
167  *     {@link IME_ERR_OK} - success.
168  *     {@link IME_ERR_NULL_POINTER} - unexpected null pointer.
169  * Specific error codes can be referenced {@link InputMethod_ErrorCode}.
170  * @since 12
171  */
172 InputMethod_ErrorCode OH_TextConfig_IsPreviewTextSupported(InputMethod_TextConfig *config, bool *supported);
173 /**
174  * @brief Get cursor info from TextConfig.
175  *
176  * @param config Represents a pointer to an {@link InputMethod_TextConfig} instance which will be get from.
177  * @param cursorInfo Represents a pointer to an {@link InputMethod_CursorInfo} instance.
178  * @return Returns a specific error code.
179  *     {@link IME_ERR_OK} - success.
180  *     {@link IME_ERR_NULL_POINTER} - unexpected null pointer.
181  * Specific error codes can be referenced {@link InputMethod_ErrorCode}.
182  * @since 12
183  */
184 InputMethod_ErrorCode OH_TextConfig_GetCursorInfo(InputMethod_TextConfig *config, InputMethod_CursorInfo **cursorInfo);
185 
186 /**
187  * @brief Get text avoid information from text configuration.
188  *
189  * @param config Indicates the text configuration.
190  * @param avoidInfo Indicates the text avoid information.
191  * @return Returns a specific error code.
192  *     {@link IME_ERR_OK} - success.
193  *     {@link IME_ERR_NULL_POINTER} - unexpected null pointer.
194  * Specific error codes can be referenced {@link InputMethod_ErrorCode}.
195  *@since 12
196  */
197 InputMethod_ErrorCode OH_TextConfig_GetTextAvoidInfo(
198     InputMethod_TextConfig *config, InputMethod_TextAvoidInfo **avoidInfo);
199 
200 /**
201  * @brief Get selection from TextConfig.
202  *
203  * @param config Represents a pointer to an {@link InputMethod_TextConfig} instance which will be get from.
204  * @param start Represents selection start position.
205  * @param end Represents selection end position.
206  * @return Returns a specific error code.
207  *     {@link IME_ERR_OK} - success.
208  *     {@link IME_ERR_NULL_POINTER} - unexpected null pointer.
209  * Specific error codes can be referenced {@link InputMethod_ErrorCode}.
210  * @since 12
211  */
212 InputMethod_ErrorCode OH_TextConfig_GetSelection(InputMethod_TextConfig *config, int32_t *start, int32_t *end);
213 /**
214  * @brief Get window id from TextConfig.
215  *
216  * @param config Represents a pointer to an {@link InputMethod_TextConfig} instance which will be get from.
217  * @param windowId The window ID of the application currently bound to the input method.
218  * @return Returns a specific error code.
219  *     {@link IME_ERR_OK} - success.
220  *     {@link IME_ERR_NULL_POINTER} - unexpected null pointer.
221  * Specific error codes can be referenced {@link InputMethod_ErrorCode}.
222  * @since 12
223  */
224 InputMethod_ErrorCode OH_TextConfig_GetWindowId(InputMethod_TextConfig *config, int32_t *windowId);
225 #ifdef __cplusplus
226 }
227 #endif /* __cplusplus */
228 /** @} */
229 #endif // OHOS_INPUTMETHOD_TEXT_CONFIG_CAPI_H