1/*
2 * Copyright (c) 2020-2021 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/**
17 * @addtogroup UI_Common
18 * @{
19 *
20 * @brief Defines common UI capabilities, such as image and text processing.
21 *
22 * @since 1.0
23 * @version 1.0
24 */
25
26/**
27 * @file task.h
28 *
29 * @brief Declares the <b>Task</b> class of the graphics module, which provides functions for setting the running period
30 * and time of a task.
31 *
32 * @since 1.0
33 * @version 1.0
34 */
35
36#ifndef GRAPHIC_LITE_TASK_H
37#define GRAPHIC_LITE_TASK_H
38
39#include <cstdint>
40
41#include "gfx_utils/heap_base.h"
42
43namespace OHOS {
44/**
45 * @brief Represents the <b>Task</b> class of the graphics module.
46 *        This class provides functions for setting the running period and time of a task.
47 *
48 * @since 1.0
49 * @version 1.0
50 */
51class Task : public HeapBase {
52public:
53    /**
54     * @brief A constructor used to create a <b>Task</b> instance.
55     */
56    Task() : period_(DEFAULT_TASK_PERIOD), lastRun_(0) {}
57
58    /**
59     * @brief A constructor used to create a <b>Task</b> instance with the specified running period.
60     * @param period Indicates the running period of this task.
61     */
62    Task(uint32_t period) : period_(period), lastRun_(0) {}
63
64    /**
65     * @brief A destructor used to delete the <b>Task</b> instance.
66     */
67    virtual ~Task() {}
68
69    /**
70     * @brief Sets the running period for this task.
71     * @param period Indicates the running period to set.
72     */
73    void SetPeriod(uint32_t period)
74    {
75        period_ = period;
76    }
77
78    /**
79     * @brief Sets the end time for this task.
80     * @param lastRun Indicates the end time to set.
81     */
82    void SetLastRun(uint32_t lastRun)
83    {
84        lastRun_ = lastRun;
85    }
86
87    /**
88     * @brief Obtains the running period of this task.
89     * @return Returns the running period.
90     */
91    uint32_t GetPeriod() const
92    {
93        return period_;
94    }
95
96    /**
97     * @brief Obtains the end time of this task.
98     * @return Returns the end time.
99     */
100    uint32_t GetLastRun() const
101    {
102        return lastRun_;
103    }
104
105    /**
106     * @brief Executes this task.
107     */
108    void TaskExecute();
109
110    /**
111     * @brief Called when this task is executed.
112     */
113    virtual void Callback() = 0;
114
115    /**
116     * @brief Initializes this task.
117     */
118    virtual void Init();
119
120protected:
121    uint32_t period_;  /* call period in ms unit */
122    uint32_t lastRun_; /* last run time */
123};
124} // namespace OHOS
125#endif // GRAPHIC_LITE_TASK_H
126