Skip to main content

ohos_arkui_binding/component/built_in_component/
text.rs

1//! Module component::built_in_component::text wrappers and related types.
2
3use crate::{
4    ArkUIAttributeBasic, ArkUICommonFontAttribute, ArkUINodeAttributeItem,
5    ArkUINodeAttributeNumber, ArkUIResult, TextAlignment, ARK_UI_NATIVE_NODE_API_1,
6};
7
8impl super::Text {
9    pub fn content<T: Into<String>>(&self, content: T) -> ArkUIResult<()> {
10        let content_property = ArkUINodeAttributeItem::String(content.into());
11        ARK_UI_NATIVE_NODE_API_1.with(|api| {
12            api.set_attribute(
13                self.raw(),
14                crate::ArkUINodeAttributeType::TextContent,
15                content_property,
16            )
17        })?;
18        Ok(())
19    }
20
21    pub fn alignment(&self, alignment: TextAlignment) -> ArkUIResult<()> {
22        let alignment_property =
23            ArkUINodeAttributeItem::NumberValue(vec![ArkUINodeAttributeNumber::Int(
24                alignment.into(),
25            )]);
26        ARK_UI_NATIVE_NODE_API_1.with(|api| {
27            api.set_attribute(
28                self.raw(),
29                crate::ArkUINodeAttributeType::TextAlign,
30                alignment_property,
31            )
32        })?;
33        Ok(())
34    }
35}
36
37impl ArkUICommonFontAttribute for super::Text {}
38
39// BEGIN_GENERATED_COMPONENT_METHODS_Text
40impl super::Text {
41    pub fn set_text_content<T: Into<crate::ArkUINodeAttributeItem>>(
42        &self,
43        value: T,
44    ) -> crate::ArkUIResult<()> {
45        <Self as crate::ArkUICommonAttribute>::set_attribute(
46            self,
47            crate::ArkUINodeAttributeType::TextContent,
48            value.into(),
49        )
50    }
51
52    pub fn get_text_content(&self) -> crate::ArkUIResult<crate::ArkUINodeAttributeItem> {
53        <Self as crate::ArkUICommonAttribute>::get_attribute(
54            self,
55            crate::ArkUINodeAttributeType::TextContent,
56        )
57    }
58
59    pub fn set_text_line_height<T: Into<crate::ArkUINodeAttributeItem>>(
60        &self,
61        value: T,
62    ) -> crate::ArkUIResult<()> {
63        <Self as crate::ArkUICommonAttribute>::set_attribute(
64            self,
65            crate::ArkUINodeAttributeType::TextLineHeight,
66            value.into(),
67        )
68    }
69
70    pub fn get_text_line_height(&self) -> crate::ArkUIResult<crate::ArkUINodeAttributeItem> {
71        <Self as crate::ArkUICommonAttribute>::get_attribute(
72            self,
73            crate::ArkUINodeAttributeType::TextLineHeight,
74        )
75    }
76
77    pub fn set_text_decoration<T: Into<crate::ArkUINodeAttributeItem>>(
78        &self,
79        value: T,
80    ) -> crate::ArkUIResult<()> {
81        <Self as crate::ArkUICommonAttribute>::set_attribute(
82            self,
83            crate::ArkUINodeAttributeType::TextDecoration,
84            value.into(),
85        )
86    }
87
88    pub fn get_text_decoration(&self) -> crate::ArkUIResult<crate::ArkUINodeAttributeItem> {
89        <Self as crate::ArkUICommonAttribute>::get_attribute(
90            self,
91            crate::ArkUINodeAttributeType::TextDecoration,
92        )
93    }
94
95    pub fn set_text_case<T: Into<crate::ArkUINodeAttributeItem>>(
96        &self,
97        value: T,
98    ) -> crate::ArkUIResult<()> {
99        <Self as crate::ArkUICommonAttribute>::set_attribute(
100            self,
101            crate::ArkUINodeAttributeType::TextCase,
102            value.into(),
103        )
104    }
105
106    pub fn get_text_case(&self) -> crate::ArkUIResult<crate::ArkUINodeAttributeItem> {
107        <Self as crate::ArkUICommonAttribute>::get_attribute(
108            self,
109            crate::ArkUINodeAttributeType::TextCase,
110        )
111    }
112
113    pub fn set_text_letter_spacing<T: Into<crate::ArkUINodeAttributeItem>>(
114        &self,
115        value: T,
116    ) -> crate::ArkUIResult<()> {
117        <Self as crate::ArkUICommonAttribute>::set_attribute(
118            self,
119            crate::ArkUINodeAttributeType::TextLetterSpacing,
120            value.into(),
121        )
122    }
123
124    pub fn get_text_letter_spacing(&self) -> crate::ArkUIResult<crate::ArkUINodeAttributeItem> {
125        <Self as crate::ArkUICommonAttribute>::get_attribute(
126            self,
127            crate::ArkUINodeAttributeType::TextLetterSpacing,
128        )
129    }
130
131    pub fn set_text_max_lines<T: Into<crate::ArkUINodeAttributeItem>>(
132        &self,
133        value: T,
134    ) -> crate::ArkUIResult<()> {
135        <Self as crate::ArkUICommonAttribute>::set_attribute(
136            self,
137            crate::ArkUINodeAttributeType::TextMaxLines,
138            value.into(),
139        )
140    }
141
142    pub fn get_text_max_lines(&self) -> crate::ArkUIResult<crate::ArkUINodeAttributeItem> {
143        <Self as crate::ArkUICommonAttribute>::get_attribute(
144            self,
145            crate::ArkUINodeAttributeType::TextMaxLines,
146        )
147    }
148
149    pub fn set_text_align<T: Into<crate::ArkUINodeAttributeItem>>(
150        &self,
151        value: T,
152    ) -> crate::ArkUIResult<()> {
153        <Self as crate::ArkUICommonAttribute>::set_attribute(
154            self,
155            crate::ArkUINodeAttributeType::TextAlign,
156            value.into(),
157        )
158    }
159
160    pub fn get_text_align(&self) -> crate::ArkUIResult<crate::ArkUINodeAttributeItem> {
161        <Self as crate::ArkUICommonAttribute>::get_attribute(
162            self,
163            crate::ArkUINodeAttributeType::TextAlign,
164        )
165    }
166
167    pub fn set_text_overflow<T: Into<crate::ArkUINodeAttributeItem>>(
168        &self,
169        value: T,
170    ) -> crate::ArkUIResult<()> {
171        <Self as crate::ArkUICommonAttribute>::set_attribute(
172            self,
173            crate::ArkUINodeAttributeType::TextOverflow,
174            value.into(),
175        )
176    }
177
178    pub fn get_text_overflow(&self) -> crate::ArkUIResult<crate::ArkUINodeAttributeItem> {
179        <Self as crate::ArkUICommonAttribute>::get_attribute(
180            self,
181            crate::ArkUINodeAttributeType::TextOverflow,
182        )
183    }
184
185    pub fn set_text_copy_option<T: Into<crate::ArkUINodeAttributeItem>>(
186        &self,
187        value: T,
188    ) -> crate::ArkUIResult<()> {
189        <Self as crate::ArkUICommonAttribute>::set_attribute(
190            self,
191            crate::ArkUINodeAttributeType::TextCopyOption,
192            value.into(),
193        )
194    }
195
196    pub fn get_text_copy_option(&self) -> crate::ArkUIResult<crate::ArkUINodeAttributeItem> {
197        <Self as crate::ArkUICommonAttribute>::get_attribute(
198            self,
199            crate::ArkUINodeAttributeType::TextCopyOption,
200        )
201    }
202
203    pub fn set_text_baseline_offset<T: Into<crate::ArkUINodeAttributeItem>>(
204        &self,
205        value: T,
206    ) -> crate::ArkUIResult<()> {
207        <Self as crate::ArkUICommonAttribute>::set_attribute(
208            self,
209            crate::ArkUINodeAttributeType::TextBaselineOffset,
210            value.into(),
211        )
212    }
213
214    pub fn get_text_baseline_offset(&self) -> crate::ArkUIResult<crate::ArkUINodeAttributeItem> {
215        <Self as crate::ArkUICommonAttribute>::get_attribute(
216            self,
217            crate::ArkUINodeAttributeType::TextBaselineOffset,
218        )
219    }
220
221    pub fn set_text_text_shadow<T: Into<crate::ArkUINodeAttributeItem>>(
222        &self,
223        value: T,
224    ) -> crate::ArkUIResult<()> {
225        <Self as crate::ArkUICommonAttribute>::set_attribute(
226            self,
227            crate::ArkUINodeAttributeType::TextTextShadow,
228            value.into(),
229        )
230    }
231
232    pub fn get_text_text_shadow(&self) -> crate::ArkUIResult<crate::ArkUINodeAttributeItem> {
233        <Self as crate::ArkUICommonAttribute>::get_attribute(
234            self,
235            crate::ArkUINodeAttributeType::TextTextShadow,
236        )
237    }
238
239    pub fn set_text_min_font_size<T: Into<crate::ArkUINodeAttributeItem>>(
240        &self,
241        value: T,
242    ) -> crate::ArkUIResult<()> {
243        <Self as crate::ArkUICommonAttribute>::set_attribute(
244            self,
245            crate::ArkUINodeAttributeType::TextMinFontSize,
246            value.into(),
247        )
248    }
249
250    pub fn get_text_min_font_size(&self) -> crate::ArkUIResult<crate::ArkUINodeAttributeItem> {
251        <Self as crate::ArkUICommonAttribute>::get_attribute(
252            self,
253            crate::ArkUINodeAttributeType::TextMinFontSize,
254        )
255    }
256
257    pub fn set_text_max_font_size<T: Into<crate::ArkUINodeAttributeItem>>(
258        &self,
259        value: T,
260    ) -> crate::ArkUIResult<()> {
261        <Self as crate::ArkUICommonAttribute>::set_attribute(
262            self,
263            crate::ArkUINodeAttributeType::TextMaxFontSize,
264            value.into(),
265        )
266    }
267
268    pub fn get_text_max_font_size(&self) -> crate::ArkUIResult<crate::ArkUINodeAttributeItem> {
269        <Self as crate::ArkUICommonAttribute>::get_attribute(
270            self,
271            crate::ArkUINodeAttributeType::TextMaxFontSize,
272        )
273    }
274
275    pub fn set_text_font<T: Into<crate::ArkUINodeAttributeItem>>(
276        &self,
277        value: T,
278    ) -> crate::ArkUIResult<()> {
279        <Self as crate::ArkUICommonAttribute>::set_attribute(
280            self,
281            crate::ArkUINodeAttributeType::TextFont,
282            value.into(),
283        )
284    }
285
286    pub fn get_text_font(&self) -> crate::ArkUIResult<crate::ArkUINodeAttributeItem> {
287        <Self as crate::ArkUICommonAttribute>::get_attribute(
288            self,
289            crate::ArkUINodeAttributeType::TextFont,
290        )
291    }
292
293    pub fn set_text_height_adaptive_policy<T: Into<crate::ArkUINodeAttributeItem>>(
294        &self,
295        value: T,
296    ) -> crate::ArkUIResult<()> {
297        <Self as crate::ArkUICommonAttribute>::set_attribute(
298            self,
299            crate::ArkUINodeAttributeType::TextHeightAdaptivePolicy,
300            value.into(),
301        )
302    }
303
304    pub fn get_text_height_adaptive_policy(
305        &self,
306    ) -> crate::ArkUIResult<crate::ArkUINodeAttributeItem> {
307        <Self as crate::ArkUICommonAttribute>::get_attribute(
308            self,
309            crate::ArkUINodeAttributeType::TextHeightAdaptivePolicy,
310        )
311    }
312
313    pub fn set_text_indent<T: Into<crate::ArkUINodeAttributeItem>>(
314        &self,
315        value: T,
316    ) -> crate::ArkUIResult<()> {
317        <Self as crate::ArkUICommonAttribute>::set_attribute(
318            self,
319            crate::ArkUINodeAttributeType::TextIndent,
320            value.into(),
321        )
322    }
323
324    pub fn get_text_indent(&self) -> crate::ArkUIResult<crate::ArkUINodeAttributeItem> {
325        <Self as crate::ArkUICommonAttribute>::get_attribute(
326            self,
327            crate::ArkUINodeAttributeType::TextIndent,
328        )
329    }
330
331    pub fn set_text_word_break<T: Into<crate::ArkUINodeAttributeItem>>(
332        &self,
333        value: T,
334    ) -> crate::ArkUIResult<()> {
335        <Self as crate::ArkUICommonAttribute>::set_attribute(
336            self,
337            crate::ArkUINodeAttributeType::TextWordBreak,
338            value.into(),
339        )
340    }
341
342    pub fn get_text_word_break(&self) -> crate::ArkUIResult<crate::ArkUINodeAttributeItem> {
343        <Self as crate::ArkUICommonAttribute>::get_attribute(
344            self,
345            crate::ArkUINodeAttributeType::TextWordBreak,
346        )
347    }
348
349    pub fn set_text_ellipsis_mode<T: Into<crate::ArkUINodeAttributeItem>>(
350        &self,
351        value: T,
352    ) -> crate::ArkUIResult<()> {
353        <Self as crate::ArkUICommonAttribute>::set_attribute(
354            self,
355            crate::ArkUINodeAttributeType::TextEllipsisMode,
356            value.into(),
357        )
358    }
359
360    pub fn get_text_ellipsis_mode(&self) -> crate::ArkUIResult<crate::ArkUINodeAttributeItem> {
361        <Self as crate::ArkUICommonAttribute>::get_attribute(
362            self,
363            crate::ArkUINodeAttributeType::TextEllipsisMode,
364        )
365    }
366
367    pub fn set_text_line_spacing<T: Into<crate::ArkUINodeAttributeItem>>(
368        &self,
369        value: T,
370    ) -> crate::ArkUIResult<()> {
371        <Self as crate::ArkUICommonAttribute>::set_attribute(
372            self,
373            crate::ArkUINodeAttributeType::TextLineSpacing,
374            value.into(),
375        )
376    }
377
378    pub fn get_text_line_spacing(&self) -> crate::ArkUIResult<crate::ArkUINodeAttributeItem> {
379        <Self as crate::ArkUICommonAttribute>::get_attribute(
380            self,
381            crate::ArkUINodeAttributeType::TextLineSpacing,
382        )
383    }
384
385    pub fn set_text_enable_data_detector<T: Into<crate::ArkUINodeAttributeItem>>(
386        &self,
387        value: T,
388    ) -> crate::ArkUIResult<()> {
389        <Self as crate::ArkUICommonAttribute>::set_attribute(
390            self,
391            crate::ArkUINodeAttributeType::TextEnableDataDetector,
392            value.into(),
393        )
394    }
395
396    pub fn get_text_enable_data_detector(
397        &self,
398    ) -> crate::ArkUIResult<crate::ArkUINodeAttributeItem> {
399        <Self as crate::ArkUICommonAttribute>::get_attribute(
400            self,
401            crate::ArkUINodeAttributeType::TextEnableDataDetector,
402        )
403    }
404
405    pub fn set_text_enable_data_detector_config<T: Into<crate::ArkUINodeAttributeItem>>(
406        &self,
407        value: T,
408    ) -> crate::ArkUIResult<()> {
409        <Self as crate::ArkUICommonAttribute>::set_attribute(
410            self,
411            crate::ArkUINodeAttributeType::TextEnableDataDetectorConfig,
412            value.into(),
413        )
414    }
415
416    pub fn get_text_enable_data_detector_config(
417        &self,
418    ) -> crate::ArkUIResult<crate::ArkUINodeAttributeItem> {
419        <Self as crate::ArkUICommonAttribute>::get_attribute(
420            self,
421            crate::ArkUINodeAttributeType::TextEnableDataDetectorConfig,
422        )
423    }
424
425    pub fn set_text_selected_background_color<T: Into<crate::ArkUINodeAttributeItem>>(
426        &self,
427        value: T,
428    ) -> crate::ArkUIResult<()> {
429        <Self as crate::ArkUICommonAttribute>::set_attribute(
430            self,
431            crate::ArkUINodeAttributeType::TextSelectedBackgroundColor,
432            value.into(),
433        )
434    }
435
436    pub fn get_text_selected_background_color(
437        &self,
438    ) -> crate::ArkUIResult<crate::ArkUINodeAttributeItem> {
439        <Self as crate::ArkUICommonAttribute>::get_attribute(
440            self,
441            crate::ArkUINodeAttributeType::TextSelectedBackgroundColor,
442        )
443    }
444
445    pub fn set_text_content_with_styled_string<T: Into<crate::ArkUINodeAttributeItem>>(
446        &self,
447        value: T,
448    ) -> crate::ArkUIResult<()> {
449        <Self as crate::ArkUICommonAttribute>::set_attribute(
450            self,
451            crate::ArkUINodeAttributeType::TextContentWithStyledString,
452            value.into(),
453        )
454    }
455
456    pub fn get_text_content_with_styled_string(
457        &self,
458    ) -> crate::ArkUIResult<crate::ArkUINodeAttributeItem> {
459        <Self as crate::ArkUICommonAttribute>::get_attribute(
460            self,
461            crate::ArkUINodeAttributeType::TextContentWithStyledString,
462        )
463    }
464
465    pub fn set_text_half_leading<T: Into<crate::ArkUINodeAttributeItem>>(
466        &self,
467        value: T,
468    ) -> crate::ArkUIResult<()> {
469        <Self as crate::ArkUICommonAttribute>::set_attribute(
470            self,
471            crate::ArkUINodeAttributeType::TextHalfLeading,
472            value.into(),
473        )
474    }
475
476    pub fn get_text_half_leading(&self) -> crate::ArkUIResult<crate::ArkUINodeAttributeItem> {
477        <Self as crate::ArkUICommonAttribute>::get_attribute(
478            self,
479            crate::ArkUINodeAttributeType::TextHalfLeading,
480        )
481    }
482
483    #[cfg(feature = "api-22")]
484    pub fn set_text_bind_selection_menu<T: Into<crate::ArkUINodeAttributeItem>>(
485        &self,
486        value: T,
487    ) -> crate::ArkUIResult<()> {
488        <Self as crate::ArkUICommonAttribute>::set_attribute(
489            self,
490            crate::ArkUINodeAttributeType::TextBindSelectionMenu,
491            value.into(),
492        )
493    }
494
495    #[cfg(feature = "api-22")]
496    pub fn get_text_bind_selection_menu(
497        &self,
498    ) -> crate::ArkUIResult<crate::ArkUINodeAttributeItem> {
499        <Self as crate::ArkUICommonAttribute>::get_attribute(
500            self,
501            crate::ArkUINodeAttributeType::TextBindSelectionMenu,
502        )
503    }
504
505    #[cfg(feature = "api-21")]
506    pub fn set_text_content_align<T: Into<crate::ArkUINodeAttributeItem>>(
507        &self,
508        value: T,
509    ) -> crate::ArkUIResult<()> {
510        <Self as crate::ArkUICommonAttribute>::set_attribute(
511            self,
512            crate::ArkUINodeAttributeType::TextContentAlign,
513            value.into(),
514        )
515    }
516
517    #[cfg(feature = "api-21")]
518    pub fn get_text_content_align(&self) -> crate::ArkUIResult<crate::ArkUINodeAttributeItem> {
519        <Self as crate::ArkUICommonAttribute>::get_attribute(
520            self,
521            crate::ArkUINodeAttributeType::TextContentAlign,
522        )
523    }
524
525    #[cfg(feature = "api-22")]
526    pub fn set_text_edit_menu_options<T: Into<crate::ArkUINodeAttributeItem>>(
527        &self,
528        value: T,
529    ) -> crate::ArkUIResult<()> {
530        <Self as crate::ArkUICommonAttribute>::set_attribute(
531            self,
532            crate::ArkUINodeAttributeType::TextEditMenuOptions,
533            value.into(),
534        )
535    }
536
537    #[cfg(feature = "api-22")]
538    pub fn get_text_edit_menu_options(&self) -> crate::ArkUIResult<crate::ArkUINodeAttributeItem> {
539        <Self as crate::ArkUICommonAttribute>::get_attribute(
540            self,
541            crate::ArkUINodeAttributeType::TextEditMenuOptions,
542        )
543    }
544
545    #[cfg(feature = "api-22")]
546    pub fn set_text_enable_selected_data_detector<T: Into<crate::ArkUINodeAttributeItem>>(
547        &self,
548        value: T,
549    ) -> crate::ArkUIResult<()> {
550        <Self as crate::ArkUICommonAttribute>::set_attribute(
551            self,
552            crate::ArkUINodeAttributeType::TextEnableSelectedDataDetector,
553            value.into(),
554        )
555    }
556
557    #[cfg(feature = "api-22")]
558    pub fn get_text_enable_selected_data_detector(
559        &self,
560    ) -> crate::ArkUIResult<crate::ArkUINodeAttributeItem> {
561        <Self as crate::ArkUICommonAttribute>::get_attribute(
562            self,
563            crate::ArkUINodeAttributeType::TextEnableSelectedDataDetector,
564        )
565    }
566
567    #[cfg(feature = "api-22")]
568    pub fn set_text_layout_manager<T: Into<crate::ArkUINodeAttributeItem>>(
569        &self,
570        value: T,
571    ) -> crate::ArkUIResult<()> {
572        <Self as crate::ArkUICommonAttribute>::set_attribute(
573            self,
574            crate::ArkUINodeAttributeType::TextLayoutManager,
575            value.into(),
576        )
577    }
578
579    #[cfg(feature = "api-22")]
580    pub fn get_text_layout_manager(&self) -> crate::ArkUIResult<crate::ArkUINodeAttributeItem> {
581        <Self as crate::ArkUICommonAttribute>::get_attribute(
582            self,
583            crate::ArkUINodeAttributeType::TextLayoutManager,
584        )
585    }
586
587    #[cfg(feature = "api-20")]
588    pub fn set_text_linear_gradient<T: Into<crate::ArkUINodeAttributeItem>>(
589        &self,
590        value: T,
591    ) -> crate::ArkUIResult<()> {
592        <Self as crate::ArkUICommonAttribute>::set_attribute(
593            self,
594            crate::ArkUINodeAttributeType::TextLinearGradient,
595            value.into(),
596        )
597    }
598
599    #[cfg(feature = "api-20")]
600    pub fn get_text_linear_gradient(&self) -> crate::ArkUIResult<crate::ArkUINodeAttributeItem> {
601        <Self as crate::ArkUICommonAttribute>::get_attribute(
602            self,
603            crate::ArkUINodeAttributeType::TextLinearGradient,
604        )
605    }
606
607    #[cfg(feature = "api-20")]
608    pub fn set_text_line_count<T: Into<crate::ArkUINodeAttributeItem>>(
609        &self,
610        value: T,
611    ) -> crate::ArkUIResult<()> {
612        <Self as crate::ArkUICommonAttribute>::set_attribute(
613            self,
614            crate::ArkUINodeAttributeType::TextLineCount,
615            value.into(),
616        )
617    }
618
619    #[cfg(feature = "api-20")]
620    pub fn get_text_line_count(&self) -> crate::ArkUIResult<crate::ArkUINodeAttributeItem> {
621        <Self as crate::ArkUICommonAttribute>::get_attribute(
622            self,
623            crate::ArkUINodeAttributeType::TextLineCount,
624        )
625    }
626
627    #[cfg(feature = "api-22")]
628    pub fn set_text_line_height_multiple<T: Into<crate::ArkUINodeAttributeItem>>(
629        &self,
630        value: T,
631    ) -> crate::ArkUIResult<()> {
632        <Self as crate::ArkUICommonAttribute>::set_attribute(
633            self,
634            crate::ArkUINodeAttributeType::TextLineHeightMultiple,
635            value.into(),
636        )
637    }
638
639    #[cfg(feature = "api-22")]
640    pub fn get_text_line_height_multiple(
641        &self,
642    ) -> crate::ArkUIResult<crate::ArkUINodeAttributeItem> {
643        <Self as crate::ArkUICommonAttribute>::get_attribute(
644            self,
645            crate::ArkUINodeAttributeType::TextLineHeightMultiple,
646        )
647    }
648
649    #[cfg(feature = "api-22")]
650    pub fn set_text_max_line_height<T: Into<crate::ArkUINodeAttributeItem>>(
651        &self,
652        value: T,
653    ) -> crate::ArkUIResult<()> {
654        <Self as crate::ArkUICommonAttribute>::set_attribute(
655            self,
656            crate::ArkUINodeAttributeType::TextMaxLineHeight,
657            value.into(),
658        )
659    }
660
661    #[cfg(feature = "api-22")]
662    pub fn get_text_max_line_height(&self) -> crate::ArkUIResult<crate::ArkUINodeAttributeItem> {
663        <Self as crate::ArkUICommonAttribute>::get_attribute(
664            self,
665            crate::ArkUINodeAttributeType::TextMaxLineHeight,
666        )
667    }
668
669    #[cfg(feature = "api-22")]
670    pub fn set_text_min_lines<T: Into<crate::ArkUINodeAttributeItem>>(
671        &self,
672        value: T,
673    ) -> crate::ArkUIResult<()> {
674        <Self as crate::ArkUICommonAttribute>::set_attribute(
675            self,
676            crate::ArkUINodeAttributeType::TextMinLines,
677            value.into(),
678        )
679    }
680
681    #[cfg(feature = "api-22")]
682    pub fn get_text_min_lines(&self) -> crate::ArkUIResult<crate::ArkUINodeAttributeItem> {
683        <Self as crate::ArkUICommonAttribute>::get_attribute(
684            self,
685            crate::ArkUINodeAttributeType::TextMinLines,
686        )
687    }
688
689    #[cfg(feature = "api-22")]
690    pub fn set_text_min_line_height<T: Into<crate::ArkUINodeAttributeItem>>(
691        &self,
692        value: T,
693    ) -> crate::ArkUIResult<()> {
694        <Self as crate::ArkUICommonAttribute>::set_attribute(
695            self,
696            crate::ArkUINodeAttributeType::TextMinLineHeight,
697            value.into(),
698        )
699    }
700
701    #[cfg(feature = "api-22")]
702    pub fn get_text_min_line_height(&self) -> crate::ArkUIResult<crate::ArkUINodeAttributeItem> {
703        <Self as crate::ArkUICommonAttribute>::get_attribute(
704            self,
705            crate::ArkUINodeAttributeType::TextMinLineHeight,
706        )
707    }
708
709    #[cfg(feature = "api-20")]
710    pub fn set_text_optimize_trailing_space<T: Into<crate::ArkUINodeAttributeItem>>(
711        &self,
712        value: T,
713    ) -> crate::ArkUIResult<()> {
714        <Self as crate::ArkUICommonAttribute>::set_attribute(
715            self,
716            crate::ArkUINodeAttributeType::TextOptimizeTrailingSpace,
717            value.into(),
718        )
719    }
720
721    #[cfg(feature = "api-20")]
722    pub fn get_text_optimize_trailing_space(
723        &self,
724    ) -> crate::ArkUIResult<crate::ArkUINodeAttributeItem> {
725        <Self as crate::ArkUICommonAttribute>::get_attribute(
726            self,
727            crate::ArkUINodeAttributeType::TextOptimizeTrailingSpace,
728        )
729    }
730
731    #[cfg(feature = "api-20")]
732    pub fn set_text_radial_gradient<T: Into<crate::ArkUINodeAttributeItem>>(
733        &self,
734        value: T,
735    ) -> crate::ArkUIResult<()> {
736        <Self as crate::ArkUICommonAttribute>::set_attribute(
737            self,
738            crate::ArkUINodeAttributeType::TextRadialGradient,
739            value.into(),
740        )
741    }
742
743    #[cfg(feature = "api-20")]
744    pub fn get_text_radial_gradient(&self) -> crate::ArkUIResult<crate::ArkUINodeAttributeItem> {
745        <Self as crate::ArkUICommonAttribute>::get_attribute(
746            self,
747            crate::ArkUINodeAttributeType::TextRadialGradient,
748        )
749    }
750
751    #[cfg(feature = "api-20")]
752    pub fn set_text_vertical_align<T: Into<crate::ArkUINodeAttributeItem>>(
753        &self,
754        value: T,
755    ) -> crate::ArkUIResult<()> {
756        <Self as crate::ArkUICommonAttribute>::set_attribute(
757            self,
758            crate::ArkUINodeAttributeType::TextVerticalAlign,
759            value.into(),
760        )
761    }
762
763    #[cfg(feature = "api-20")]
764    pub fn get_text_vertical_align(&self) -> crate::ArkUIResult<crate::ArkUINodeAttributeItem> {
765        <Self as crate::ArkUICommonAttribute>::get_attribute(
766            self,
767            crate::ArkUINodeAttributeType::TextVerticalAlign,
768        )
769    }
770}
771// END_GENERATED_COMPONENT_METHODS_Text
772
773impl super::Text {
774    #[cfg(feature = "drawing")]
775    pub fn set_text_content_with_styled_string_object(
776        &self,
777        styled_string: &crate::StyledString,
778    ) -> crate::ArkUIResult<()> {
779        <Self as crate::ArkUICommonAttribute>::set_attribute(
780            self,
781            crate::ArkUINodeAttributeType::TextContentWithStyledString,
782            crate::ArkUINodeAttributeItem::Object(styled_string.raw().cast()),
783        )
784    }
785
786    #[cfg(feature = "drawing")]
787    pub fn get_text_content_with_styled_string_object(
788        &self,
789    ) -> crate::ArkUIResult<Option<crate::StyledString>> {
790        match <Self as crate::ArkUICommonAttribute>::get_attribute(
791            self,
792            crate::ArkUINodeAttributeType::TextContentWithStyledString,
793        )? {
794            crate::ArkUINodeAttributeItem::Object(ptr) => {
795                Ok(Some(crate::StyledString::from_raw(ptr.cast())))
796            }
797            _ => Ok(None),
798        }
799    }
800
801    pub fn on_text_detect_result_update<T: Fn(Option<String>) + 'static>(&mut self, cb: T) {
802        crate::ArkUIEvent::on_event(
803            self,
804            crate::NodeEventType::TextOnDetectResultUpdate,
805            move |event| {
806                cb(event.async_string());
807            },
808        );
809    }
810}
811
812#[cfg(feature = "api-22")]
813impl super::Text {
814    pub fn set_text_bind_selection_menu_object(
815        &self,
816        options: &crate::TextSelectionMenuOptions,
817    ) -> crate::ArkUIResult<()> {
818        <Self as crate::ArkUICommonAttribute>::set_attribute(
819            self,
820            crate::ArkUINodeAttributeType::TextBindSelectionMenu,
821            crate::ArkUINodeAttributeItem::Object(options.raw().cast()),
822        )
823    }
824
825    pub fn get_text_bind_selection_menu_object(
826        &self,
827    ) -> crate::ArkUIResult<Option<crate::TextSelectionMenuOptions>> {
828        match <Self as crate::ArkUICommonAttribute>::get_attribute(
829            self,
830            crate::ArkUINodeAttributeType::TextBindSelectionMenu,
831        )? {
832            crate::ArkUINodeAttributeItem::Object(ptr) => {
833                Ok(Some(crate::TextSelectionMenuOptions::from_raw(ptr.cast())))
834            }
835            _ => Ok(None),
836        }
837    }
838
839    pub fn set_text_edit_menu_options_object(
840        &self,
841        options: &crate::TextEditMenuOptions,
842    ) -> crate::ArkUIResult<()> {
843        <Self as crate::ArkUICommonAttribute>::set_attribute(
844            self,
845            crate::ArkUINodeAttributeType::TextEditMenuOptions,
846            crate::ArkUINodeAttributeItem::Object(options.raw().cast()),
847        )
848    }
849
850    pub fn get_text_edit_menu_options_object(
851        &self,
852    ) -> crate::ArkUIResult<Option<crate::TextEditMenuOptions>> {
853        match <Self as crate::ArkUICommonAttribute>::get_attribute(
854            self,
855            crate::ArkUINodeAttributeType::TextEditMenuOptions,
856        )? {
857            crate::ArkUINodeAttributeItem::Object(ptr) => {
858                Ok(Some(crate::TextEditMenuOptions::from_raw(ptr.cast())))
859            }
860            _ => Ok(None),
861        }
862    }
863
864    #[cfg(feature = "drawing")]
865    pub fn set_text_layout_manager_object(
866        &self,
867        manager: &crate::TextLayoutManager,
868    ) -> crate::ArkUIResult<()> {
869        <Self as crate::ArkUICommonAttribute>::set_attribute(
870            self,
871            crate::ArkUINodeAttributeType::TextLayoutManager,
872            crate::ArkUINodeAttributeItem::Object(manager.raw().cast()),
873        )
874    }
875
876    #[cfg(feature = "drawing")]
877    pub fn get_text_layout_manager_object(
878        &self,
879    ) -> crate::ArkUIResult<Option<crate::TextLayoutManager>> {
880        match <Self as crate::ArkUICommonAttribute>::get_attribute(
881            self,
882            crate::ArkUINodeAttributeType::TextLayoutManager,
883        )? {
884            crate::ArkUINodeAttributeItem::Object(ptr) => {
885                Ok(Some(crate::TextLayoutManager::from_raw(ptr.cast())))
886            }
887            _ => Ok(None),
888        }
889    }
890}