1 /*
2 * Copyright (c) 2021-2023 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 FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_BASE_LAYOUT_CONSTANTS_H
17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_BASE_LAYOUT_CONSTANTS_H
18
19 #include <cstdint>
20 #include <string>
21
22 #include "ui/properties/flex.h"
23
24 #include "base/utils/linear_map.h"
25 #include "base/utils/utils.h"
26
27 namespace OHOS::Ace {
28
29 enum class LineCap {
30 BUTT,
31 ROUND,
32 SQUARE,
33 };
34
35 enum class ButtonType {
36 NORMAL,
37 CAPSULE,
38 CIRCLE,
39 TEXT,
40 ARC,
41 DOWNLOAD,
42 ICON,
43 CUSTOM,
44 ROUNDED_RECTANGLE,
45 };
46
47 enum class RectWidthStyle {
48 TIGHT,
49 MAX,
50 };
51
52 enum class RectHeightStyle {
53 TIGHT,
54 MAX,
55 INCLUDE_LINE_SPACE_MIDDLE,
56 INCLUDE_LINE_SPACE_TOP,
57 INCLUDE_LINE_SPACE_BOTTOM,
58 STRUT,
59 };
60
61 // Type of hover mode area.
62 enum class HoverModeAreaType {
63 TOP_SCREEN = 0,
64 BOTTOM_SCREEN = 1,
65 };
66
67 enum class AccessibilityRoleType {
68 ACTION_SHEET = 0,
69 ALERT_DIALOG = 1,
70 INDEXER_COMPONENT = 2,
71 BADGE_COMPONENT = 3,
72 BLANK = 4,
73 BUTTON = 5,
74 BACK_BUTTON = 6,
75 SHEET_DRAG_BAR = 7,
76 CALENDAR_PICKER = 8,
77 CALENDAR = 9,
78 CANVAS = 10,
79 CANVAS_GRADIENT = 11,
80 CANVAS_PATTERN = 12,
81 CHECKBOX = 13,
82 CHECKBOX_GROUP = 14,
83 CIRCLE = 15,
84 COLUMN_SPLIT = 16,
85 COLUMN = 17,
86 CANVAS_RENDERING_CONTEXT_2D = 18,
87 CHART = 19,
88 COUNTER = 20,
89 CONTAINER_MODAL = 21,
90 DATA_PANEL = 22,
91 DATE_PICKER = 23,
92 DIALOG = 24,
93 DIVIDER = 25,
94 DRAG_BAR = 26,
95 EFFECT_COMPONENT = 27,
96 ELLIPSE = 28,
97 FLEX = 29,
98 FLOW_ITEM = 30,
99 FORM_COMPONENT = 31,
100 FORM_LINK = 32,
101 GAUGE = 33,
102 GRID = 34,
103 GRID_COL = 35,
104 GRID_CONTAINER = 36,
105 GRID_ITEM = 37,
106 GRID_ROW = 38,
107 HYPERLINK = 39,
108 IMAGE = 40,
109 IMAGE_ANIMATOR = 41,
110 ROLE_IMAGE_BITMAP = 42,
111 IMAGE_DATA = 43,
112 IMAGE_SPAN = 44,
113 LABEL = 45,
114 LINE = 46,
115 LIST = 47,
116 LIST_ITEM = 48,
117 LIST_ITEM_GROUP = 49,
118 LOADING_PROGRESS = 50,
119 MARQUEE = 51,
120 MATRIX2D = 52,
121 MENU = 53,
122 MENU_ITEM = 54,
123 MENU_ITEM_GROUP = 55,
124 NAV_DESTINATION = 56,
125 NAV_ROUTER = 57,
126 NAVIGATION = 58,
127 NAVIGATION_BAR = 59,
128 NAVIGATION_MENU = 60,
129 NAVIGATOR = 61,
130 OFFSCREEN_CANVAS = 62,
131 OFFSCREEN_CANVAS_RENDERING_CONTEXT2D = 63,
132 OPTION = 64,
133 PANEL = 65,
134 PAPER_PAGE = 66,
135 PATH = 67,
136 PATH2D = 68,
137 PATTERN_LOCK = 69,
138 PICKER = 70,
139 PICKER_VIEW = 71,
140 PLUGIN_COMPONENT = 72,
141 POLYGON = 73,
142 POLYLINE = 74,
143 POPUP = 75,
144 PROGRESS = 76,
145 QRCODE = 77,
146 RADIO = 78,
147 RATING = 79,
148 RECT = 80,
149 REFRESH = 81,
150 RELATIVE_CONTAINER = 82,
151 REMOTE_WINDOW = 83,
152 RICH_EDITOR = 84,
153 RICH_TEXT = 85,
154 ROLE_PAGER = 86,
155 ROW = 87,
156 ROW_SPLIT = 88,
157 SCROLL = 89,
158 SCROLL_BAR = 90,
159 SEARCH = 91,
160 SEARCH_FIELD = 92,
161 SELECT = 93,
162 SHAPE = 94,
163 SIDEBAR_CONTAINER = 95,
164 SLIDER = 96,
165 SPAN = 97,
166 STACK = 98,
167 STEPPER = 99,
168 STEPPER_ITEM = 100,
169 SWIPER = 101,
170 SWIPER_INDICATOR = 102,
171 SWITCH = 103,
172 SYMBOL_GLYPH = 104,
173 TAB_CONTENT = 105,
174 TAB_BAR = 106,
175 TABS = 107,
176 TEXT = 108,
177 TEXT_CLOCK = 109,
178 TEXT_ENTRY = 110,
179 TEXT_INPUT = 111,
180 TEXT_PICKER = 112,
181 TEXT_TIMER = 113,
182 TEXT_AREA = 114,
183 TEXT_FIELD = 115,
184 TIME_PICKER = 116,
185 TITLE_BAR = 117,
186 TOGGLER = 118,
187 UI_EXTENSION_COMPONENT = 119,
188 VIDEO = 120,
189 WATER_FLOW = 121,
190 WEB = 122,
191 XCOMPONENT = 123,
192 ROLE_NONE = 124,
193 };
194
195 enum class AccessibilitySamePageMode {
196 SEMI_SILENT = 0,
197 FULL_SILENT = 1,
198 };
199
200 enum class FocusDrawLevel {
201 SELF = 0,
202 TOP = 1,
203 };
204
205 enum class ButtonStyleMode { NORMAL, EMPHASIZE, TEXT };
206
207 enum class ControlSize { SMALL, NORMAL };
208
209 enum class ButtonRole { NORMAL, ERROR };
210
211 // Flex Styles
212 enum class FlexDirection {
213 ROW = 0,
214 COLUMN,
215 ROW_REVERSE,
216 COLUMN_REVERSE,
217 };
218
219 enum class MainAxisSize {
220 // default setting, fill the max size of the layout param. Only under MAX, mainAxisAlign and FlexItem are valid
221 MAX,
222
223 // make the size of row/column as large as its children's size.
224 MIN,
225 };
226
227 enum class CrossAxisSize {
228 // fill the max size of the layout param in cross size of row/column.
229 MAX,
230
231 // make the cross size of row/column as large as its children's size.
232 MIN,
233 };
234
235 enum class FlexLayoutMode {
236 // If children do not contains flex weight, use this mode. It is the default mode.
237 FLEX_ITEM_MODE,
238
239 // If all the children contains flex weight, use this mode.
240 FLEX_WEIGHT_MODE,
241 };
242
243 // Box Style
244 enum class BoxFlex {
245 // width and height do not extend to box's parent
246 FLEX_NO,
247
248 // width extends to box's parent, height does not extend to box's parent
249 FLEX_X,
250
251 // height extends to box's parent, width does not extend to box's parent
252 FLEX_Y,
253
254 // width and height extend to box's parent
255 FLEX_XY,
256 };
257
258 enum class BoxSizing {
259 // The width and height properties includes only the content. Border and padding are not included.
260 CONTENT_BOX,
261
262 // The width and height properties includes content, padding and border.
263 BORDER_BOX,
264 };
265
266 // Stack Styles
267 enum class StackFit {
268 // keep the child component's size as it is.
269 KEEP,
270
271 // keep the child component's size as the parent's.
272 STRETCH,
273
274 // use parent's layoutParam to layout the child
275 INHERIT,
276
277 // use first child's size as layoutPram max size.
278 FIRST_CHILD,
279 };
280
281 enum class Overflow {
282 // when the size overflows, clip the exceeding.
283 CLIP,
284
285 // when the size overflows, observe the exceeding.
286 OBSERVABLE,
287
288 // when the size overflows, scroll the exceeding.
289 SCROLL,
290
291 // force clip the exceeding.
292 FORCE_CLIP,
293 };
294
295 enum class MainStackSize { MAX, MIN, NORMAL, LAST_CHILD_HEIGHT, MATCH_CHILDREN, MAX_X, MAX_Y };
296
297 enum class MainSwiperSize { MAX, MAX_X, MAX_Y, MIN, AUTO };
298
299 enum class PositionType {
300 PTRELATIVE = 0,
301 PTFIXED,
302 PTABSOLUTE,
303 PTOFFSET, // percentage layout based on RELATIVE
304 PTSEMI_RELATIVE, // absolute offset based on RELATIVE
305 };
306
307 enum class TextAlign {
308 LEFT = 4,
309 RIGHT = 5,
310 CENTER = 1,
311 /*
312 render the text to fit the size of the text container by adding space
313 */
314 JUSTIFY = 3,
315 /*
316 align the text from the start of the text container
317
318 For Direction.ltr, from left side
319 For Direction.rtl, from right side
320 */
321 START = 0,
322 /*
323 align the text from the end of the text container
324
325 For Direction.ltr, from right side
326 For Direction.rtl, from left side
327 */
328 END = 2,
329 };
330
331 namespace StringUtils {
ToString(const TextAlign & textAlign)332 inline std::string ToString(const TextAlign& textAlign)
333 {
334 static const LinearEnumMapNode<TextAlign, std::string> table[] = {
335 { TextAlign::LEFT, "LEFT" },
336 { TextAlign::RIGHT, "RIGHT" },
337 { TextAlign::CENTER, "CENTER" },
338 { TextAlign::JUSTIFY, "JUSTIFY" },
339 { TextAlign::START, "START" },
340 { TextAlign::END, "END" },
341 };
342 auto iter = BinarySearchFindIndex(table, ArraySize(table), textAlign);
343 return iter != -1 ? table[iter].value : "";
344 }
345 } // namespace StringUtils
346
347 enum class TextMarqueeState {
348 START = 0,
349 BOUNCE,
350 FINISH,
351 };
352
353 enum class MarqueeStartPolicy {
354 DEFAULT = 0,
355 ON_FOCUS,
356 };
357
358 enum class TextDataDetectType {
359 PHONE_NUMBER = 0,
360 URL,
361 EMAIL,
362 ADDRESS,
363 DATE_TIME,
364 };
365
366 enum class LineBreakStrategy {
367 GREEDY = 0,
368 HIGH_QUALITY,
369 BALANCED,
370 };
371
372 enum class WhiteSpace {
373 NORMAL,
374 PRE,
375 PRE_WRAP,
376 NOWRAP,
377 PRE_LINE,
378 INHERIT,
379 };
380
381 enum class TextOverflow {
382 NONE,
383 CLIP,
384 ELLIPSIS,
385 MARQUEE,
386 DEFAULT,
387 };
388
389 enum class TextSelectableMode {
390 SELECTABLE_UNFOCUSABLE = 0,
391 SELECTABLE_FOCUSABLE,
392 UNSELECTABLE,
393 };
394
395 namespace StringUtils {
ToString(const TextOverflow & textOverflow)396 inline std::string ToString(const TextOverflow& textOverflow)
397 {
398 static const LinearEnumMapNode<TextOverflow, std::string> table[] = {
399 { TextOverflow::NONE, "NONE" },
400 { TextOverflow::CLIP, "CLIP" },
401 { TextOverflow::ELLIPSIS, "ELLIPSIS" },
402 { TextOverflow::MARQUEE, "MARQUEE" },
403 };
404 auto iter = BinarySearchFindIndex(table, ArraySize(table), textOverflow);
405 return iter != -1 ? table[iter].value : "";
406 }
407 } // namespace StringUtils
408
409 // overflow-x: visible|hidden|scroll|auto|no-display|no-content;
410 enum class TextFieldOverflowX {
411 VISIBLE,
412 HIDDEN,
413 SCROLL,
414 AUTO,
415 NO_DISPLAY,
416 NO_CONTENT,
417 };
418
419 enum class TextDirection {
420 LTR,
421 RTL,
422 INHERIT,
423 AUTO,
424 };
425
426 enum class TextDecoration {
427 NONE,
428 UNDERLINE,
429 OVERLINE,
430 LINE_THROUGH,
431 INHERIT,
432 };
433
434 namespace StringUtils {
ToString(const TextDecoration & textDecoration)435 inline std::string ToString(const TextDecoration& textDecoration)
436 {
437 static const LinearEnumMapNode<TextDecoration, std::string> table[] = {
438 { TextDecoration::NONE, "NONE" },
439 { TextDecoration::UNDERLINE, "UNDERLINE" },
440 { TextDecoration::OVERLINE, "OVERLINE" },
441 { TextDecoration::LINE_THROUGH, "LINE_THROUGH" },
442 { TextDecoration::INHERIT, "INHERIT" },
443 };
444 auto iter = BinarySearchFindIndex(table, ArraySize(table), textDecoration);
445 return iter != -1 ? table[iter].value : "";
446 }
447 } // namespace StringUtils
448
449 enum class TextDecorationStyle {
450 SOLID,
451 DOUBLE,
452 DOTTED,
453 DASHED,
454 WAVY,
455 INITIAL,
456 INHERIT,
457 };
458
459 enum class TextHeightAdaptivePolicy {
460 MAX_LINES_FIRST,
461 MIN_FONT_SIZE_FIRST,
462 LAYOUT_CONSTRAINT_FIRST,
463 };
464
465 enum class MarqueeDirection {
466 LEFT,
467 RIGHT,
468 DEFAULT,
469 DEFAULT_REVERSE,
470 };
471
472 enum class ImageRepeat {
473 NO_REPEAT = 0,
474 REPEAT_X,
475 REPEAT_Y,
476 REPEAT,
477 };
478
479 enum class ImageFit {
480 FILL,
481 CONTAIN,
482 COVER,
483 FITWIDTH,
484 FITHEIGHT,
485 NONE,
486 SCALE_DOWN,
487 TOP_LEFT,
488 TOP,
489 TOP_END,
490 START,
491 CENTER,
492 END,
493 BOTTOM_START,
494 BOTTOM,
495 BOTTOM_END,
496 COVER_TOP_LEFT,
497 MATRIX,
498 };
499
500 enum class KeyboardAppearance {
501 NONE_IMMERSIVE = 0,
502 IMMERSIVE = 1,
503 LIGHT_IMMERSIVE = 2,
504 DARK_IMMERSIVE = 3
505 };
506
507 namespace StringUtils {
ToString(const ImageFit & imageFit)508 inline std::string ToString(const ImageFit& imageFit)
509 {
510 static const LinearEnumMapNode<ImageFit, std::string> table[] = {
511 { ImageFit::FILL, "FILL" },
512 { ImageFit::CONTAIN, "CONTAIN" },
513 { ImageFit::COVER, "COVER" },
514 { ImageFit::FITWIDTH, "FITWIDTH" },
515 { ImageFit::FITHEIGHT, "FITHEIGHT" },
516 { ImageFit::NONE, "NONE" },
517 { ImageFit::SCALE_DOWN, "SCALE_DOWN" },
518 { ImageFit::TOP_LEFT, "TOP_LEFT" },
519 { ImageFit::TOP, "TOP" },
520 { ImageFit::TOP_END, "TOP_END" },
521 { ImageFit::START, "START" },
522 { ImageFit::CENTER, "CENTER" },
523 { ImageFit::END, "END" },
524 { ImageFit::BOTTOM_START, "BOTTOM_START" },
525 { ImageFit::BOTTOM, "BOTTOM" },
526 { ImageFit::BOTTOM_END, "BOTTOM_END" },
527 };
528 auto iter = BinarySearchFindIndex(table, ArraySize(table), imageFit);
529 return iter != -1 ? table[iter].value : "";
530 }
531 } // namespace StringUtils
532
533 enum class DynamicRangeMode {
534 HIGH = 0,
535 CONSTRAINT,
536 STANDARD,
537 };
538
539 enum class AIImageQuality {
540 NONE = 0,
541 LOW,
542 NORMAL,
543 HIGH,
544 };
545
546 enum class ImageRotateOrientation {
547 AUTO = 0,
548 UP = 1,
549 RIGHT = 2,
550 DOWN = 3,
551 LEFT = 4,
552 };
553
554 enum class ImageRenderMode {
555 ORIGINAL = 0,
556 TEMPLATE,
557 };
558
559 enum class ImageInterpolation {
560 NONE = 0,
561 LOW,
562 MEDIUM,
563 HIGH,
564 };
565
566 enum class EdgeEffect {
567 SPRING = 0,
568 FADE,
569 NONE,
570 };
571
572 enum class EffectEdge {
573 START = 1,
574 END = 2,
575 ALL = 3,
576 };
577
578 enum class BorderStyle {
579 SOLID,
580 DASHED,
581 DOTTED,
582 NONE,
583 };
584
585 enum class BorderImageRepeat {
586 SPACE,
587 STRETCH,
588 REPEAT,
589 ROUND,
590 };
591
592 enum class BorderImageDirection {
593 LEFT,
594 RIGHT,
595 TOP,
596 BOTTOM,
597 START,
598 END,
599 };
600
601 enum class TimePickerFormat { HOUR_MINUTE, HOUR_MINUTE_SECOND };
602
603 enum class SrcType {
604 UNSUPPORTED = -1,
605 FILE = 0,
606 ASSET,
607 NETWORK,
608 MEMORY,
609 BASE64,
610 INTERNAL, // internal cached file resource
611 RESOURCE,
612 DATA_ABILITY,
613 DATA_ABILITY_DECODED,
614 RESOURCE_ID, // default resource which src is internal resource id
615 PIXMAP,
616 ASTC,
617 };
618
619 enum class WrapAlignment {
620 START,
621 CENTER,
622 END,
623 SPACE_AROUND,
624 SPACE_BETWEEN,
625 STRETCH,
626 SPACE_EVENLY,
627 BASELINE,
628 };
629
630 enum class WrapDirection {
631 HORIZONTAL,
632 VERTICAL,
633 HORIZONTAL_REVERSE,
634 VERTICAL_REVERSE,
635 };
636
637 enum class FlexWrap {
638 NO_WRAP,
639 WRAP,
640 WRAP_REVERSE,
641 };
642
643 enum class KeyDirection {
644 UP = 0,
645 DOWN,
646 LEFT,
647 RIGHT,
648 };
649
650 enum class PixelRoundPolicy {
651 ALL_FORCE_ROUND = 0,
652 FORCE_CEIL_START = 1,
653 FORCE_FLOOR_START = 1 << 1,
654 NO_FORCE_ROUND_START = 1 << 2,
655 FORCE_CEIL_TOP = 1 << 3,
656 FORCE_FLOOR_TOP = 1 << 4,
657 NO_FORCE_ROUND_TOP = 1 << 5,
658 FORCE_CEIL_END = 1 << 6,
659 FORCE_FLOOR_END = 1 << 7,
660 NO_FORCE_ROUND_END = 1 << 8,
661 FORCE_CEIL_BOTTOM = 1 << 9,
662 FORCE_FLOOR_BOTTOM = 1 << 10,
663 NO_FORCE_ROUND_BOTTOM = 1 << 11,
664 };
665
666 enum class PixelRoundCalcPolicy {
667 NO_FORCE_ROUND = 0,
668 FORCE_CEIL = 1,
669 FORCE_FLOOR = 2,
670 };
671
672 enum class PixelRoundMode {
673 PIXEL_ROUND_ON_LAYOUT_FINISH = 0,
674 PIXEL_ROUND_AFTER_MEASURE = 1,
675 };
676
677 enum class LayoutCalPolicy {
678 NO_MATCH = 0,
679 MATCH_PARENT = 1,
680 };
681
682 const ImageRepeat IMAGE_REPEATS[] = {
683 ImageRepeat::REPEAT,
684 ImageRepeat::REPEAT_X,
685 ImageRepeat::REPEAT_Y,
686 ImageRepeat::NO_REPEAT,
687 };
688
689 enum class WindowModal : int32_t {
690 NORMAL = 0,
691 SEMI_MODAL = 1,
692 SEMI_MODAL_FULL_SCREEN = 2,
693 DIALOG_MODAL = 3,
694 CONTAINER_MODAL = 4,
695 FIRST_VALUE = NORMAL,
696 LAST_VALUE = CONTAINER_MODAL,
697 };
698
699 enum class WindowMode : uint32_t {
700 WINDOW_MODE_UNDEFINED = 0,
701 WINDOW_MODE_FULLSCREEN = 1,
702 WINDOW_MODE_SPLIT_PRIMARY = 100,
703 WINDOW_MODE_SPLIT_SECONDARY,
704 WINDOW_MODE_FLOATING,
705 WINDOW_MODE_PIP
706 };
707
708 enum class WindowType : uint32_t {
709 WINDOW_TYPE_UNDEFINED = 0,
710 WINDOW_TYPE_APP_BASE = 1,
711 WINDOW_TYPE_APP_END = 1003,
712 WINDOW_TYPE_FLOAT = 2106,
713 };
714
715 enum class PanelType {
716 MINI_BAR,
717 FOLDABLE_BAR,
718 TEMP_DISPLAY,
719 CUSTOM,
720 };
721
722 enum class PanelMode {
723 MINI,
724 HALF,
725 FULL,
726 AUTO,
727 CUSTOM,
728 };
729
730 enum class ColorScheme : int32_t {
731 SCHEME_LIGHT = 0,
732 SCHEME_TRANSPARENT = 1,
733 SCHEME_DARK = 2,
734 FIRST_VALUE = SCHEME_LIGHT,
735 LAST_VALUE = SCHEME_DARK,
736 };
737
738 enum class RenderStatus : int32_t {
739 UNKNOWN = -1,
740 DEFAULT = 0,
741 ACTIVITY = 1,
742 FOCUS = 2,
743 BLUR = 3,
744 DISABLE = 4,
745 WAITING = 5,
746 };
747
748 enum class BadgePosition {
749 RIGHT_TOP,
750 RIGHT,
751 LEFT,
752 };
753
754 enum class QrcodeType {
755 RECT,
756 CIRCLE,
757 };
758
759 enum class AnimationCurve {
760 FRICTION,
761 STANDARD,
762 };
763
764 enum class WindowBlurStyle {
765 STYLE_BACKGROUND_SMALL_LIGHT = 100,
766 STYLE_BACKGROUND_MEDIUM_LIGHT = 101,
767 STYLE_BACKGROUND_LARGE_LIGHT = 102,
768 STYLE_BACKGROUND_XLARGE_LIGHT = 103,
769 STYLE_BACKGROUND_SMALL_DARK = 104,
770 STYLE_BACKGROUND_MEDIUM_DARK = 105,
771 STYLE_BACKGROUND_LARGE_DARK = 106,
772 STYLE_BACKGROUND_XLARGE_DARK = 107,
773 };
774
775 enum class DisplayType { NO_SETTING = 0, FLEX, GRID, NONE, BLOCK, INLINE, INLINE_BLOCK, INLINE_FLEX };
776
777 enum class VisibilityType {
778 NO_SETTING = 0,
779 VISIBLE,
780 HIDDEN,
781 };
782
783 enum class RefreshType {
784 AUTO,
785 PULL_DOWN,
786 };
787
788 enum class TabBarMode {
789 FIXED,
790 SCROLLABLE,
791 FIXED_START,
792 };
793
794 enum class TabAnimateMode {
795 CONTENT_FIRST = 0,
796 ACTION_FIRST,
797 NO_ANIMATION,
798 CONTENT_FIRST_WITH_JUMP,
799 ACTION_FIRST_WITH_JUMP,
800 MAX_VALUE,
801 };
802
803 enum class ShowInNavigationBar {
804 SHOW = 0,
805 POPUP,
806 };
807
808 enum class HorizontalAlign {
809 START = 1,
810 CENTER,
811 END,
812 };
813
814 enum class VerticalAlign {
815 TOP = 1,
816 CENTER,
817 BOTTOM,
818 BASELINE,
819 NONE,
820 };
821
822 enum class SwiperDynamicSyncSceneType {
823 GESTURE = 0,
824 ANIMATE,
825 };
826
827 enum class MarqueeDynamicSyncSceneType {
828 ANIMATE = 1,
829 };
830
831 namespace StringUtils {
ToString(const VerticalAlign & verticalAlign)832 inline std::string ToString(const VerticalAlign& verticalAlign)
833 {
834 static const LinearEnumMapNode<VerticalAlign, std::string> table[] = {
835 { VerticalAlign::TOP, "TOP" },
836 { VerticalAlign::CENTER, "CENTER" },
837 { VerticalAlign::BOTTOM, "BOTTOM" },
838 { VerticalAlign::BASELINE, "BASELINE" },
839 { VerticalAlign::NONE, "NONE" },
840 };
841 auto iter = BinarySearchFindIndex(table, ArraySize(table), verticalAlign);
842 return iter != -1 ? table[iter].value : "";
843 }
844 } // namespace StringUtils
845
846 enum class BarPosition {
847 START,
848 END,
849 };
850
851 enum class CalendarType {
852 NORMAL = 0,
853 SIMPLE,
854 };
855
856 enum class SideBarContainerType { EMBED, OVERLAY, AUTO };
857
858 enum class SideBarPosition { START, END };
859
860 enum class SideBarStatus {
861 SHOW,
862 HIDDEN,
863 CHANGING,
864 AUTO,
865 };
866
867 enum class HitTestMode {
868 /**
869 * Both self and children respond to the hit test for touch events,
870 * but block hit test of the other nodes which is masked by this node.
871 */
872 HTMDEFAULT = 0,
873
874 /**
875 * Self respond to the hit test for touch events,
876 * but block hit test of children and other nodes which is masked by this node.
877 */
878 HTMBLOCK,
879
880 /**
881 * Self and child respond to the hit test for touch events,
882 * and allow hit test of other nodes which is masked by this node.
883 */
884 HTMTRANSPARENT,
885
886 /**
887 * Self not respond to the hit test for touch events,
888 * but children respond to the hit test for touch events.
889 */
890 HTMNONE
891 };
892
893 enum class CopyOptions {
894 None = 0,
895 InApp,
896 Local,
897 Distributed,
898 };
899
900 enum class VisibleType {
901 VISIBLE = 0,
902 INVISIBLE,
903 GONE,
904 };
905
906 enum class ShapeMode {
907 /*
908 * unspecified, follow theme.
909 */
910 DEFAULT = 0,
911 /*
912 * rect scrollbar.
913 */
914 RECT,
915 /*
916 * round scrollbar.
917 */
918 ROUND,
919 };
920
921 enum class DisplayMode {
922 /*
923 * do not display scrollbar.
924 */
925 OFF = 0,
926 /*
927 * display scrollbar on demand.
928 */
929 AUTO,
930 /*
931 * always display scrollbar.
932 */
933 ON,
934 };
935
936 enum class PositionMode {
937 /*
938 * display scrollbar on right.
939 */
940 RIGHT = 0,
941 /*
942 * display scrollbar on left.
943 */
944 LEFT,
945 /*
946 * display scrollbar on bottom.
947 */
948 BOTTOM,
949 };
950
951 enum class XComponentType {
952 UNKNOWN = -1,
953 SURFACE = 0,
954 COMPONENT,
955 TEXTURE,
956 NODE,
957 };
958
959 enum class XComponentNodeType {
960 UNKNOWN = -1,
961 TYPE_NODE = 0,
962 DECLARATIVE_NODE,
963 CNODE,
964 };
965
966 enum class RenderMode { ASYNC_RENDER = 0, SYNC_RENDER };
967
968 inline constexpr uint32_t STATE_NORMAL = 0;
969 inline constexpr uint32_t STATE_PRESSED = 1;
970 inline constexpr uint32_t STATE_FOCUS = 1 << 1;
971 inline constexpr uint32_t STATE_CHECKED = 1 << 2;
972 inline constexpr uint32_t STATE_DISABLED = 1 << 3;
973 inline constexpr uint32_t STATE_WAITING = 1 << 4;
974 inline constexpr uint32_t STATE_HOVERED = 1 << 5;
975 inline constexpr uint32_t STATE_ACTIVE = 1 << 6;
976
977 enum class TabBarStyle {
978 NOSTYLE = 0,
979 SUBTABBATSTYLE,
980 BOTTOMTABBATSTYLE,
981 };
982
983 enum class GestureJudgeResult {
984 CONTINUE = 0,
985 REJECT = 1,
986 };
987
988 enum class GestureTypeName {
989 UNKNOWN = -1,
990 TAP_GESTURE = 0,
991 LONG_PRESS_GESTURE = 1,
992 PAN_GESTURE = 2,
993 PINCH_GESTURE = 3,
994 SWIPE_GESTURE = 4,
995 ROTATION_GESTURE = 5,
996 DRAG = 6,
997 CLICK = 7,
998 BOXSELECT = 8,
999 WEBSCROLL = 9,
1000 TEXTFIELD_BOXSELECT = 10
1001 };
1002
1003 enum class ModifierKey {
1004 CTRL = 0,
1005 SHIFT = 1,
1006 ALT = 2,
1007 };
1008
1009 enum class FunctionKey {
1010 ESC = 0,
1011 F1 = 1,
1012 F2 = 2,
1013 F3 = 3,
1014 F4 = 4,
1015 F5 = 5,
1016 F6 = 6,
1017 F7 = 7,
1018 F8 = 8,
1019 F9 = 9,
1020 F10 = 10,
1021 F11 = 11,
1022 F12 = 12,
1023 TAB = 13,
1024 DPAD_UP = 14,
1025 DPAD_DOWN = 15,
1026 DPAD_LEFT = 16,
1027 DPAD_RIGHT = 17,
1028 };
1029
1030 enum class ObscuredReasons {
1031 PLACEHOLDER = 0,
1032 };
1033
1034 enum class MaximizeMode : uint32_t {
1035 MODE_AVOID_SYSTEM_BAR,
1036 MODE_FULL_FILL,
1037 MODE_RECOVER,
1038 };
1039
1040 enum class RenderFit : int32_t {
1041 CENTER = 0,
1042 TOP,
1043 BOTTOM,
1044 LEFT,
1045 RIGHT,
1046 TOP_LEFT,
1047 TOP_RIGHT,
1048 BOTTOM_LEFT,
1049 BOTTOM_RIGHT,
1050 RESIZE_FILL,
1051 RESIZE_CONTAIN,
1052 RESIZE_CONTAIN_TOP_LEFT,
1053 RESIZE_CONTAIN_BOTTOM_RIGHT,
1054 RESIZE_COVER,
1055 RESIZE_COVER_TOP_LEFT,
1056 RESIZE_COVER_BOTTOM_RIGHT,
1057 };
1058
1059 enum class KeyBoardAvoidMode : int32_t {
1060 OFFSET = 0,
1061 RESIZE = 1,
1062 OFFSET_WITH_CARET = 2,
1063 RESIZE_WITH_CARET = 3,
1064 NONE = 4,
1065 };
1066
1067 enum class SwipeActionState : uint32_t {
1068 COLLAPSED = 0,
1069 EXPANDED,
1070 ACTIONING,
1071 };
1072 /**
1073 * souce is Rosen::Orientation
1074 */
1075 enum class Orientation : uint32_t {
1076 BEGIN = 0,
1077 UNSPECIFIED = BEGIN,
1078 VERTICAL = 1,
1079 HORIZONTAL = 2,
1080 REVERSE_VERTICAL = 3,
1081 REVERSE_HORIZONTAL = 4,
1082 SENSOR = 5,
1083 SENSOR_VERTICAL = 6,
1084 SENSOR_HORIZONTAL = 7,
1085 AUTO_ROTATION_RESTRICTED = 8,
1086 AUTO_ROTATION_PORTRAIT_RESTRICTED = 9,
1087 AUTO_ROTATION_LANDSCAPE_RESTRICTED = 10,
1088 LOCKED = 11,
1089 END = LOCKED,
1090 };
1091
1092 enum class NodeRenderType : uint32_t {
1093 RENDER_TYPE_DISPLAY = 0,
1094 RENDER_TYPE_TEXTURE,
1095 };
1096
1097 enum class MarqueeUpdateStrategy : uint32_t {
1098 DEFAULT = 0,
1099 PRESERVE_POSITION,
1100 };
1101
1102 enum class EdgeType {
1103 MARGIN,
1104 PADDING,
1105 SAFE_AREA_PADDING,
1106 };
1107
1108 enum class SafeAreaSyncType : uint32_t {
1109 SYNC_TYPE_NONE = 0,
1110 SYNC_TYPE_KEYBOARD,
1111 SYNC_TYPE_AVOID_AREA,
1112 SYNC_TYPE_WINDOW_IGNORE
1113 };
1114
1115 enum class SwiperAnimationMode {
1116 NO_ANIMATION = 0,
1117 DEFAULT_ANIMATION,
1118 FAST_ANIMATION,
1119 MAX_VALUE,
1120 };
1121
1122 enum class DividerMode {
1123 FLOATING_ABOVE_MENU = 0,
1124 EMBEDDED_IN_MENU = 1,
1125 };
1126 } // namespace OHOS::Ace
1127
1128 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_BASE_LAYOUT_CONSTANTS_H
1129