mirror of
https://github.com/openharmony/windowmanager.git
synced 2026-07-24 23:55:27 -04:00
3e57e78e47
Signed-off-by: xpeng <pengxin33@huawei.com> Change-Id: I48a0528b519516f2b094f237e02960bcd82c9057
85 lines
2.7 KiB
C++
85 lines
2.7 KiB
C++
/*
|
|
* Copyright (c) 2022 Huawei Device Co., Ltd.
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#ifndef FOUNDATION_DMSERVER_CUTOUT_INFO_H
|
|
#define FOUNDATION_DMSERVER_CUTOUT_INFO_H
|
|
|
|
#include <parcel.h>
|
|
|
|
#include "class_var_definition.h"
|
|
#include "display.h"
|
|
#include "dm_common.h"
|
|
|
|
namespace OHOS::Rosen {
|
|
struct Rect {
|
|
int32_t posX_;
|
|
int32_t posY_;
|
|
uint32_t width_;
|
|
uint32_t height_;
|
|
|
|
bool operator==(const Rect& a) const
|
|
{
|
|
return (posX_ == a.posX_ && posY_ == a.posY_ && width_ == a.width_ && height_ == a.height_);
|
|
}
|
|
|
|
bool operator!=(const Rect& a) const
|
|
{
|
|
return !this->operator==(a);
|
|
}
|
|
|
|
bool isUninitializedRect() const
|
|
{
|
|
return (posX_ == 0 && posY_ == 0 && width_ == 0 && height_ == 0);
|
|
}
|
|
|
|
bool IsInsideOf(const Rect& a) const
|
|
{
|
|
return (posX_ >= a.posX_ && posY_ >= a.posY_ &&
|
|
posX_ + width_ <= a.posX_ + a.width_ && posY_ + height_ <= a.posY_ + a.height_);
|
|
}
|
|
};
|
|
|
|
struct WaterfallDisplayAreaRects {
|
|
Rect left;
|
|
Rect top;
|
|
Rect right;
|
|
Rect bottom;
|
|
|
|
bool isUninitialized() const
|
|
{
|
|
return (left.isUninitializedRect() && top.isUninitializedRect() && right.isUninitializedRect() &&
|
|
bottom.isUninitializedRect());
|
|
}
|
|
};
|
|
|
|
class CutoutInfo : public Parcelable {
|
|
public:
|
|
CutoutInfo() = default;
|
|
CutoutInfo(const std::vector<Rect>& boudingRects, WaterfallDisplayAreaRects waterfallDisplayAreaRects);
|
|
~CutoutInfo() = default;
|
|
WM_DISALLOW_COPY_AND_MOVE(CutoutInfo);
|
|
|
|
virtual bool Marshalling(Parcel& parcel) const override;
|
|
static CutoutInfo *Unmarshalling(Parcel& parcel);
|
|
|
|
DEFINE_VAR_FUNC_GET_SET(WaterfallDisplayAreaRects, WaterfallDisplayAreaRects, waterfallDisplayAreaRects);
|
|
DEFINE_VAR_FUNC_GET_SET(std::vector<Rect>, BoundingRects, boundingRects);
|
|
private:
|
|
bool WriteBoundingRectsVector(const std::vector<Rect>& boundingRects, Parcel &parcel) const;
|
|
static bool ReadBoundingRectsVector(std::vector<Rect>& unmarBoundingRects, Parcel &parcel);
|
|
static bool ReadWaterfallDisplayAreaRects(WaterfallDisplayAreaRects& waterfallDisplayAreaRects, Parcel &parcel);
|
|
};
|
|
} // namespace OHOS::Rosen
|
|
#endif // FOUNDATION_DMSERVER_CUTOUT_INFO_H
|