• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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