1 /*
2  * Copyright (c) 2022 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_PAGE_TRANSITION_PAGE_TRANSITION_COMMON_H
17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_PAGE_TRANSITION_PAGE_TRANSITION_COMMON_H
18 
19 #include "frameworks/base/memory/referenced.h"
20 
21 namespace OHOS::Ace {
22 
23 class Curve;
24 
25 enum class PageTransitionType {
26     ENTER,      // current page enter not specify route type.
27     EXIT,       // current page exit not specify route type.
28     ENTER_POP,  // top page pop from route stack, current page on top.
29     ENTER_PUSH, // current page push into route stack.
30     EXIT_POP,   // current page pop from route stack.
31     EXIT_PUSH,  // another page push info route stack.
32     NONE,
33 };
34 
35 enum class RouteType {
36     NONE,
37     PUSH,
38     POP,
39 };
40 
41 enum class SlideEffect {
42     NONE,
43     LEFT,
44     RIGHT,
45     TOP,
46     BOTTOM,
47     START,
48     END,
49 };
50 
51 struct PageTransitionOption {
52     RouteType routeType = RouteType::NONE;
53     int32_t duration = 0;
54     int32_t delay = 0;
55     RefPtr<Curve> curve;
56 };
57 
58 } // namespace OHOS::Ace
59 
60 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_PAGE_TRANSITION_PAGE_TRANSITION_COMMON_H