1e0dac50fSopenharmony_ci/*
2e0dac50fSopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd.
3e0dac50fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4e0dac50fSopenharmony_ci * you may not use this file except in compliance with the License.
5e0dac50fSopenharmony_ci * You may obtain a copy of the License at,
6e0dac50fSopenharmony_ci *
7e0dac50fSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8e0dac50fSopenharmony_ci *
9e0dac50fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software,
10e0dac50fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11e0dac50fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12e0dac50fSopenharmony_ci * See the License for the specific language governing permissions and
13e0dac50fSopenharmony_ci * limitations under the License.
14e0dac50fSopenharmony_ci */
15e0dac50fSopenharmony_ci
16e0dac50fSopenharmony_ci#ifndef FOUNDATION_DM_DISPLAY_LITE_H
17e0dac50fSopenharmony_ci#define FOUNDATION_DM_DISPLAY_LITE_H
18e0dac50fSopenharmony_ci
19e0dac50fSopenharmony_ci#include <string>
20e0dac50fSopenharmony_ci#include "dm_common.h"
21e0dac50fSopenharmony_ci#include "noncopyable.h"
22e0dac50fSopenharmony_ci
23e0dac50fSopenharmony_cinamespace OHOS::Rosen {
24e0dac50fSopenharmony_ciclass DisplayInfo;
25e0dac50fSopenharmony_ciclass CutoutInfo;
26e0dac50fSopenharmony_ci
27e0dac50fSopenharmony_ciclass DisplayLite : public RefBase {
28e0dac50fSopenharmony_cifriend class DisplayManagerLite;
29e0dac50fSopenharmony_cipublic:
30e0dac50fSopenharmony_ci    ~DisplayLite();
31e0dac50fSopenharmony_ci    DisplayLite(const DisplayLite&) = delete;
32e0dac50fSopenharmony_ci    DisplayLite(DisplayLite&&) = delete;
33e0dac50fSopenharmony_ci    DisplayLite& operator=(const DisplayLite&) = delete;
34e0dac50fSopenharmony_ci    DisplayLite& operator=(DisplayLite&&) = delete;
35e0dac50fSopenharmony_ci
36e0dac50fSopenharmony_ci    /**
37e0dac50fSopenharmony_ci     * @brief Get id of the display.
38e0dac50fSopenharmony_ci     *
39e0dac50fSopenharmony_ci     * @return Display id.
40e0dac50fSopenharmony_ci     */
41e0dac50fSopenharmony_ci    DisplayId GetId() const;
42e0dac50fSopenharmony_ci
43e0dac50fSopenharmony_ci    /**
44e0dac50fSopenharmony_ci     * @brief Get info of the display.
45e0dac50fSopenharmony_ci     *
46e0dac50fSopenharmony_ci     * @return Info of the display.
47e0dac50fSopenharmony_ci     */
48e0dac50fSopenharmony_ci    sptr<DisplayInfo> GetDisplayInfo() const;
49e0dac50fSopenharmony_ci
50e0dac50fSopenharmony_ci    /**
51e0dac50fSopenharmony_ci     * @brief Get width of the display.
52e0dac50fSopenharmony_ci     *
53e0dac50fSopenharmony_ci     * @return Width of the display.
54e0dac50fSopenharmony_ci     */
55e0dac50fSopenharmony_ci    int32_t GetWidth() const;
56e0dac50fSopenharmony_ci
57e0dac50fSopenharmony_ci    /**
58e0dac50fSopenharmony_ci     * @brief Get height of the display.
59e0dac50fSopenharmony_ci     *
60e0dac50fSopenharmony_ci     * @return Height of the display.
61e0dac50fSopenharmony_ci     */
62e0dac50fSopenharmony_ci    int32_t GetHeight() const;
63e0dac50fSopenharmony_ci
64e0dac50fSopenharmony_ci    /**
65e0dac50fSopenharmony_ci     * @brief Get cutout info of the display.
66e0dac50fSopenharmony_ci     *
67e0dac50fSopenharmony_ci     * @return Cutout info of the display.
68e0dac50fSopenharmony_ci     */
69e0dac50fSopenharmony_ci    sptr<CutoutInfo> GetCutoutInfo() const;
70e0dac50fSopenharmony_ci
71e0dac50fSopenharmony_ci    /**
72e0dac50fSopenharmony_ci     * @brief Get the rotation of the display.
73e0dac50fSopenharmony_ci     *
74e0dac50fSopenharmony_ci     * @return Rotation of the display..
75e0dac50fSopenharmony_ci     */
76e0dac50fSopenharmony_ci    Rotation GetRotation() const;
77e0dac50fSopenharmony_ciprotected:
78e0dac50fSopenharmony_ci    // No more methods or variables can be defined here.
79e0dac50fSopenharmony_ci    DisplayLite(const std::string& name, sptr<DisplayInfo> info);
80e0dac50fSopenharmony_ciprivate:
81e0dac50fSopenharmony_ci    // No more methods or variables can be defined here.
82e0dac50fSopenharmony_ci    void UpdateDisplayInfo(sptr<DisplayInfo>) const;
83e0dac50fSopenharmony_ci    void UpdateDisplayInfo() const;
84e0dac50fSopenharmony_ci    class Impl;
85e0dac50fSopenharmony_ci    sptr<Impl> pImpl_;
86e0dac50fSopenharmony_ci};
87e0dac50fSopenharmony_ci} // namespace OHOS::Rosen
88e0dac50fSopenharmony_ci
89e0dac50fSopenharmony_ci#endif // FOUNDATION_DM_DISPLAY_LITE_H