1e0dac50fSopenharmony_ci/*
2e0dac50fSopenharmony_ci * Copyright (c) 2021-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#include "window_property.h"
17e0dac50fSopenharmony_ci#include "window_helper.h"
18e0dac50fSopenharmony_ci#include "wm_common.h"
19e0dac50fSopenharmony_ci
20e0dac50fSopenharmony_cinamespace OHOS {
21e0dac50fSopenharmony_cinamespace Rosen {
22e0dac50fSopenharmony_cinamespace {
23e0dac50fSopenharmony_ciconstexpr uint32_t SYSTEM_BAR_PROPERTY_MAX_NUM = 2;
24e0dac50fSopenharmony_ciconstexpr uint32_t TOUCH_HOT_AREA_MAX_NUM = 50;
25e0dac50fSopenharmony_ci}
26e0dac50fSopenharmony_ciWindowProperty::WindowProperty(const sptr<WindowProperty>& property)
27e0dac50fSopenharmony_ci{
28e0dac50fSopenharmony_ci    CopyFrom(property);
29e0dac50fSopenharmony_ci}
30e0dac50fSopenharmony_ci
31e0dac50fSopenharmony_civoid WindowProperty::SetWindowName(const std::string& name)
32e0dac50fSopenharmony_ci{
33e0dac50fSopenharmony_ci    windowName_ = name;
34e0dac50fSopenharmony_ci}
35e0dac50fSopenharmony_ci
36e0dac50fSopenharmony_civoid WindowProperty::SetAbilityInfo(const AbilityInfo& info)
37e0dac50fSopenharmony_ci{
38e0dac50fSopenharmony_ci    abilityInfo_ = info;
39e0dac50fSopenharmony_ci}
40e0dac50fSopenharmony_ci
41e0dac50fSopenharmony_civoid WindowProperty::SetWindowRect(const struct Rect& rect)
42e0dac50fSopenharmony_ci{
43e0dac50fSopenharmony_ci    ComputeTransform();
44e0dac50fSopenharmony_ci    windowRect_ = rect;
45e0dac50fSopenharmony_ci}
46e0dac50fSopenharmony_ci
47e0dac50fSopenharmony_civoid WindowProperty::SetDecoStatus(bool decoStatus)
48e0dac50fSopenharmony_ci{
49e0dac50fSopenharmony_ci    decoStatus_ = decoStatus;
50e0dac50fSopenharmony_ci}
51e0dac50fSopenharmony_ci
52e0dac50fSopenharmony_civoid WindowProperty::SetRequestRect(const Rect& requestRect)
53e0dac50fSopenharmony_ci{
54e0dac50fSopenharmony_ci    requestRect_ = requestRect;
55e0dac50fSopenharmony_ci}
56e0dac50fSopenharmony_ci
57e0dac50fSopenharmony_civoid WindowProperty::SetWindowType(WindowType type)
58e0dac50fSopenharmony_ci{
59e0dac50fSopenharmony_ci    type_ = type;
60e0dac50fSopenharmony_ci}
61e0dac50fSopenharmony_ci
62e0dac50fSopenharmony_civoid WindowProperty::SetWindowMode(WindowMode mode)
63e0dac50fSopenharmony_ci{
64e0dac50fSopenharmony_ci    if (!WindowHelper::IsValidWindowMode(mode) || !WindowHelper::IsWindowModeSupported(modeSupportInfo_, mode)) {
65e0dac50fSopenharmony_ci        return;
66e0dac50fSopenharmony_ci    }
67e0dac50fSopenharmony_ci    if (!WindowHelper::IsSplitWindowMode(mode_)) {
68e0dac50fSopenharmony_ci        lastMode_ = mode_;
69e0dac50fSopenharmony_ci    }
70e0dac50fSopenharmony_ci    mode_ = mode;
71e0dac50fSopenharmony_ci}
72e0dac50fSopenharmony_ci
73e0dac50fSopenharmony_civoid WindowProperty::SetLastWindowMode(WindowMode mode)
74e0dac50fSopenharmony_ci{
75e0dac50fSopenharmony_ci    if (!WindowHelper::IsWindowModeSupported(modeSupportInfo_, mode)) {
76e0dac50fSopenharmony_ci        return;
77e0dac50fSopenharmony_ci    }
78e0dac50fSopenharmony_ci    lastMode_ = mode;
79e0dac50fSopenharmony_ci}
80e0dac50fSopenharmony_ci
81e0dac50fSopenharmony_civoid WindowProperty::SetFullScreen(bool isFullScreen)
82e0dac50fSopenharmony_ci{
83e0dac50fSopenharmony_ci    isFullScreen_ = isFullScreen;
84e0dac50fSopenharmony_ci}
85e0dac50fSopenharmony_ci
86e0dac50fSopenharmony_civoid WindowProperty::SetFocusable(bool isFocusable)
87e0dac50fSopenharmony_ci{
88e0dac50fSopenharmony_ci    focusable_ = isFocusable;
89e0dac50fSopenharmony_ci}
90e0dac50fSopenharmony_ci
91e0dac50fSopenharmony_civoid WindowProperty::SetTouchable(bool isTouchable)
92e0dac50fSopenharmony_ci{
93e0dac50fSopenharmony_ci    touchable_ = isTouchable;
94e0dac50fSopenharmony_ci}
95e0dac50fSopenharmony_ci
96e0dac50fSopenharmony_civoid WindowProperty::SetPrivacyMode(bool isPrivate)
97e0dac50fSopenharmony_ci{
98e0dac50fSopenharmony_ci    isPrivacyMode_ = isPrivate;
99e0dac50fSopenharmony_ci}
100e0dac50fSopenharmony_ci
101e0dac50fSopenharmony_civoid WindowProperty::SetSnapshotSkip(bool isSkip)
102e0dac50fSopenharmony_ci{
103e0dac50fSopenharmony_ci    isSnapshotSkip_ = isSkip;
104e0dac50fSopenharmony_ci}
105e0dac50fSopenharmony_ci
106e0dac50fSopenharmony_civoid WindowProperty::SetSystemPrivacyMode(bool isSystemPrivate)
107e0dac50fSopenharmony_ci{
108e0dac50fSopenharmony_ci    isSystemPrivacyMode_ = isSystemPrivate;
109e0dac50fSopenharmony_ci}
110e0dac50fSopenharmony_ci
111e0dac50fSopenharmony_civoid WindowProperty::SetTransparent(bool isTransparent)
112e0dac50fSopenharmony_ci{
113e0dac50fSopenharmony_ci    isTransparent_ = isTransparent;
114e0dac50fSopenharmony_ci}
115e0dac50fSopenharmony_ci
116e0dac50fSopenharmony_civoid WindowProperty::SetAlpha(float alpha)
117e0dac50fSopenharmony_ci{
118e0dac50fSopenharmony_ci    alpha_ = alpha;
119e0dac50fSopenharmony_ci}
120e0dac50fSopenharmony_ci
121e0dac50fSopenharmony_civoid WindowProperty::SetTransform(const Transform& trans)
122e0dac50fSopenharmony_ci{
123e0dac50fSopenharmony_ci    recomputeTransformMat_ = true;
124e0dac50fSopenharmony_ci    trans_ = trans;
125e0dac50fSopenharmony_ci}
126e0dac50fSopenharmony_ci
127e0dac50fSopenharmony_civoid WindowProperty::HandleComputeTransform(const Transform& trans)
128e0dac50fSopenharmony_ci{
129e0dac50fSopenharmony_ci    TransformHelper::Vector3 pivotPos = { windowRect_.posX_ + trans.pivotX_ * windowRect_.width_,
130e0dac50fSopenharmony_ci        windowRect_.posY_ + trans.pivotY_ * windowRect_.height_, 0 };
131e0dac50fSopenharmony_ci    worldTransformMat_ = TransformHelper::CreateTranslation(-pivotPos) *
132e0dac50fSopenharmony_ci                            WindowHelper::ComputeWorldTransformMat4(trans) *
133e0dac50fSopenharmony_ci                            TransformHelper::CreateTranslation(pivotPos);
134e0dac50fSopenharmony_ci    // transformMat = worldTransformMat * viewProjectionMat
135e0dac50fSopenharmony_ci    transformMat_ = worldTransformMat_;
136e0dac50fSopenharmony_ci    // Z component of camera position is constant value
137e0dac50fSopenharmony_ci    constexpr float cameraZ = -576.f;
138e0dac50fSopenharmony_ci    TransformHelper::Vector3 cameraPos(pivotPos.x_ + trans.translateX_, pivotPos.y_ + trans.translateY_, cameraZ);
139e0dac50fSopenharmony_ci    // Concatenate with view projection matrix
140e0dac50fSopenharmony_ci    transformMat_ *= TransformHelper::CreateLookAt(cameraPos,
141e0dac50fSopenharmony_ci        TransformHelper::Vector3(cameraPos.x_, cameraPos.y_, 0), TransformHelper::Vector3(0, 1, 0)) *
142e0dac50fSopenharmony_ci        TransformHelper::CreatePerspective(cameraPos);
143e0dac50fSopenharmony_ci}
144e0dac50fSopenharmony_ci
145e0dac50fSopenharmony_civoid WindowProperty::ComputeTransform()
146e0dac50fSopenharmony_ci{
147e0dac50fSopenharmony_ci    if (isDisplayZoomOn_) {
148e0dac50fSopenharmony_ci        if (reCalcuZoomTransformMat_) {
149e0dac50fSopenharmony_ci            HandleComputeTransform(zoomTrans_);
150e0dac50fSopenharmony_ci            reCalcuZoomTransformMat_ = false;
151e0dac50fSopenharmony_ci        }
152e0dac50fSopenharmony_ci    } else if (recomputeTransformMat_) {
153e0dac50fSopenharmony_ci        HandleComputeTransform(trans_);
154e0dac50fSopenharmony_ci        recomputeTransformMat_ = false;
155e0dac50fSopenharmony_ci    }
156e0dac50fSopenharmony_ci}
157e0dac50fSopenharmony_ci
158e0dac50fSopenharmony_civoid WindowProperty::SetZoomTransform(const Transform& trans)
159e0dac50fSopenharmony_ci{
160e0dac50fSopenharmony_ci    zoomTrans_ = trans;
161e0dac50fSopenharmony_ci    reCalcuZoomTransformMat_ = true;
162e0dac50fSopenharmony_ci}
163e0dac50fSopenharmony_ci
164e0dac50fSopenharmony_civoid WindowProperty::ClearTransformZAxisOffset(Transform& trans)
165e0dac50fSopenharmony_ci{
166e0dac50fSopenharmony_ci    // replace Z axis translation by scaling
167e0dac50fSopenharmony_ci    TransformHelper::Matrix4 preTransformMat = transformMat_;
168e0dac50fSopenharmony_ci    HandleComputeTransform(trans);
169e0dac50fSopenharmony_ci    Rect rect = WindowHelper::TransformRect(transformMat_, windowRect_);
170e0dac50fSopenharmony_ci    float translateZ = trans.translateZ_;
171e0dac50fSopenharmony_ci    trans.translateZ_ = 0.f;
172e0dac50fSopenharmony_ci    HandleComputeTransform(trans);
173e0dac50fSopenharmony_ci    Rect rectWithoutZAxisOffset = WindowHelper::TransformRect(transformMat_, windowRect_);
174e0dac50fSopenharmony_ci    if (rectWithoutZAxisOffset.width_ == 0) {
175e0dac50fSopenharmony_ci        trans.translateZ_ = translateZ;
176e0dac50fSopenharmony_ci        return;
177e0dac50fSopenharmony_ci    }
178e0dac50fSopenharmony_ci    float scale = rect.width_ * 1.0f / rectWithoutZAxisOffset.width_;
179e0dac50fSopenharmony_ci    trans.scaleX_ *= scale;
180e0dac50fSopenharmony_ci    trans.scaleY_ *= scale;
181e0dac50fSopenharmony_ci    transformMat_ = preTransformMat;
182e0dac50fSopenharmony_ci}
183e0dac50fSopenharmony_ci
184e0dac50fSopenharmony_civoid WindowProperty::UpdatePointerEvent(const std::shared_ptr<MMI::PointerEvent>& pointerEvent)
185e0dac50fSopenharmony_ci{
186e0dac50fSopenharmony_ci    if (trans_ == Transform::Identity() && zoomTrans_ == Transform::Identity()) {
187e0dac50fSopenharmony_ci        return;
188e0dac50fSopenharmony_ci    }
189e0dac50fSopenharmony_ci    ComputeTransform();
190e0dac50fSopenharmony_ci    MMI::PointerEvent::PointerItem pointerItem;
191e0dac50fSopenharmony_ci    if (!pointerEvent->GetPointerItem(pointerEvent->GetPointerId(), pointerItem)) {
192e0dac50fSopenharmony_ci        return;
193e0dac50fSopenharmony_ci    }
194e0dac50fSopenharmony_ci    PointInfo originPos =
195e0dac50fSopenharmony_ci        WindowHelper::CalculateOriginPosition(transformMat_,
196e0dac50fSopenharmony_ci        { pointerItem.GetDisplayX(), pointerItem.GetDisplayY() });
197e0dac50fSopenharmony_ci    pointerItem.SetDisplayX(originPos.x);
198e0dac50fSopenharmony_ci    pointerItem.SetDisplayY(originPos.y);
199e0dac50fSopenharmony_ci    pointerItem.SetWindowX(originPos.x - windowRect_.posX_);
200e0dac50fSopenharmony_ci    pointerItem.SetWindowY(originPos.y - windowRect_.posY_);
201e0dac50fSopenharmony_ci    pointerEvent->UpdatePointerItem(pointerEvent->GetPointerId(), pointerItem);
202e0dac50fSopenharmony_ci}
203e0dac50fSopenharmony_ci
204e0dac50fSopenharmony_cibool WindowProperty::isNeedComputerTransform()
205e0dac50fSopenharmony_ci{
206e0dac50fSopenharmony_ci    return ((!isDisplayZoomOn_ && trans_ != Transform::Identity()) || zoomTrans_ != Transform::Identity());
207e0dac50fSopenharmony_ci}
208e0dac50fSopenharmony_ci
209e0dac50fSopenharmony_civoid WindowProperty::SetAnimateWindowFlag(bool isAnimateWindow)
210e0dac50fSopenharmony_ci{
211e0dac50fSopenharmony_ci    isAnimateWindow_ = isAnimateWindow;
212e0dac50fSopenharmony_ci}
213e0dac50fSopenharmony_ci
214e0dac50fSopenharmony_civoid WindowProperty::SetDisplayZoomState(bool isDisplayZoomOn)
215e0dac50fSopenharmony_ci{
216e0dac50fSopenharmony_ci    isDisplayZoomOn_ = isDisplayZoomOn;
217e0dac50fSopenharmony_ci}
218e0dac50fSopenharmony_ci
219e0dac50fSopenharmony_cibool WindowProperty::IsDisplayZoomOn() const
220e0dac50fSopenharmony_ci{
221e0dac50fSopenharmony_ci    return isDisplayZoomOn_;
222e0dac50fSopenharmony_ci}
223e0dac50fSopenharmony_ci
224e0dac50fSopenharmony_cibool WindowProperty::IsAnimateWindow() const
225e0dac50fSopenharmony_ci{
226e0dac50fSopenharmony_ci    return isAnimateWindow_;
227e0dac50fSopenharmony_ci}
228e0dac50fSopenharmony_ci
229e0dac50fSopenharmony_ciconst Transform& WindowProperty::GetZoomTransform() const
230e0dac50fSopenharmony_ci{
231e0dac50fSopenharmony_ci    return zoomTrans_;
232e0dac50fSopenharmony_ci}
233e0dac50fSopenharmony_ci
234e0dac50fSopenharmony_civoid WindowProperty::SetBrightness(float brightness)
235e0dac50fSopenharmony_ci{
236e0dac50fSopenharmony_ci    brightness_ = brightness;
237e0dac50fSopenharmony_ci}
238e0dac50fSopenharmony_ci
239e0dac50fSopenharmony_civoid WindowProperty::SetTurnScreenOn(bool turnScreenOn)
240e0dac50fSopenharmony_ci{
241e0dac50fSopenharmony_ci    turnScreenOn_ = turnScreenOn;
242e0dac50fSopenharmony_ci}
243e0dac50fSopenharmony_ci
244e0dac50fSopenharmony_civoid WindowProperty::SetKeepScreenOn(bool keepScreenOn)
245e0dac50fSopenharmony_ci{
246e0dac50fSopenharmony_ci    keepScreenOn_ = keepScreenOn;
247e0dac50fSopenharmony_ci}
248e0dac50fSopenharmony_ci
249e0dac50fSopenharmony_civoid WindowProperty::SetCallingWindow(uint32_t windowId)
250e0dac50fSopenharmony_ci{
251e0dac50fSopenharmony_ci    callingWindow_ = windowId;
252e0dac50fSopenharmony_ci}
253e0dac50fSopenharmony_ci
254e0dac50fSopenharmony_civoid WindowProperty::SetDisplayId(DisplayId displayId)
255e0dac50fSopenharmony_ci{
256e0dac50fSopenharmony_ci    displayId_ = displayId;
257e0dac50fSopenharmony_ci}
258e0dac50fSopenharmony_ci
259e0dac50fSopenharmony_civoid WindowProperty::SetWindowFlags(uint32_t flags)
260e0dac50fSopenharmony_ci{
261e0dac50fSopenharmony_ci    flags_ = flags;
262e0dac50fSopenharmony_ci}
263e0dac50fSopenharmony_ci
264e0dac50fSopenharmony_civoid WindowProperty::SetSizeLimits(const WindowLimits& sizeLimits)
265e0dac50fSopenharmony_ci{
266e0dac50fSopenharmony_ci    sizeLimits_ = sizeLimits;
267e0dac50fSopenharmony_ci}
268e0dac50fSopenharmony_ci
269e0dac50fSopenharmony_civoid WindowProperty::SetUpdatedSizeLimits(const WindowLimits& sizeLimits)
270e0dac50fSopenharmony_ci{
271e0dac50fSopenharmony_ci    updatedSizeLimits_ = sizeLimits;
272e0dac50fSopenharmony_ci}
273e0dac50fSopenharmony_ci
274e0dac50fSopenharmony_civoid WindowProperty::AddWindowFlag(WindowFlag flag)
275e0dac50fSopenharmony_ci{
276e0dac50fSopenharmony_ci    flags_ |= static_cast<uint32_t>(flag);
277e0dac50fSopenharmony_ci}
278e0dac50fSopenharmony_ci
279e0dac50fSopenharmony_civoid WindowProperty::SetSystemBarProperty(WindowType type, const SystemBarProperty& property)
280e0dac50fSopenharmony_ci{
281e0dac50fSopenharmony_ci    if (type == WindowType::WINDOW_TYPE_STATUS_BAR || type == WindowType::WINDOW_TYPE_NAVIGATION_BAR) {
282e0dac50fSopenharmony_ci        sysBarPropMap_[type] = property;
283e0dac50fSopenharmony_ci    }
284e0dac50fSopenharmony_ci}
285e0dac50fSopenharmony_ci
286e0dac50fSopenharmony_civoid WindowProperty::SetDecorEnable(bool decorEnable)
287e0dac50fSopenharmony_ci{
288e0dac50fSopenharmony_ci    isDecorEnable_ = decorEnable;
289e0dac50fSopenharmony_ci}
290e0dac50fSopenharmony_ci
291e0dac50fSopenharmony_civoid WindowProperty::SetHitOffset(const PointInfo& offset)
292e0dac50fSopenharmony_ci{
293e0dac50fSopenharmony_ci    hitOffset_ = offset;
294e0dac50fSopenharmony_ci}
295e0dac50fSopenharmony_ci
296e0dac50fSopenharmony_civoid WindowProperty::SetAnimationFlag(uint32_t animationFlag)
297e0dac50fSopenharmony_ci{
298e0dac50fSopenharmony_ci    animationFlag_ = animationFlag;
299e0dac50fSopenharmony_ci}
300e0dac50fSopenharmony_ci
301e0dac50fSopenharmony_civoid WindowProperty::SetWindowSizeChangeReason(WindowSizeChangeReason reason)
302e0dac50fSopenharmony_ci{
303e0dac50fSopenharmony_ci    windowSizeChangeReason_ = reason;
304e0dac50fSopenharmony_ci}
305e0dac50fSopenharmony_ci
306e0dac50fSopenharmony_civoid WindowProperty::SetDragType(DragType dragType)
307e0dac50fSopenharmony_ci{
308e0dac50fSopenharmony_ci    dragType_ = dragType;
309e0dac50fSopenharmony_ci}
310e0dac50fSopenharmony_ci
311e0dac50fSopenharmony_civoid WindowProperty::SetStretchable(bool stretchable)
312e0dac50fSopenharmony_ci{
313e0dac50fSopenharmony_ci    isStretchable_ = stretchable;
314e0dac50fSopenharmony_ci}
315e0dac50fSopenharmony_ci
316e0dac50fSopenharmony_civoid WindowProperty::SetOriginRect(const Rect& rect)
317e0dac50fSopenharmony_ci{
318e0dac50fSopenharmony_ci    originRect_ = rect;
319e0dac50fSopenharmony_ci}
320e0dac50fSopenharmony_ci
321e0dac50fSopenharmony_civoid WindowProperty::SetAccessTokenId(uint32_t accessTokenId)
322e0dac50fSopenharmony_ci{
323e0dac50fSopenharmony_ci    accessTokenId_ = accessTokenId;
324e0dac50fSopenharmony_ci}
325e0dac50fSopenharmony_ci
326e0dac50fSopenharmony_ciWindowSizeChangeReason WindowProperty::GetWindowSizeChangeReason() const
327e0dac50fSopenharmony_ci{
328e0dac50fSopenharmony_ci    return windowSizeChangeReason_;
329e0dac50fSopenharmony_ci}
330e0dac50fSopenharmony_ci
331e0dac50fSopenharmony_civoid WindowProperty::ResumeLastWindowMode()
332e0dac50fSopenharmony_ci{
333e0dac50fSopenharmony_ci    // if lastMode isn't supported, get supported mode from supportModeInfo
334e0dac50fSopenharmony_ci    if (!WindowHelper::IsWindowModeSupported(modeSupportInfo_, lastMode_)) {
335e0dac50fSopenharmony_ci        auto mode = WindowHelper::GetWindowModeFromModeSupportInfo(modeSupportInfo_);
336e0dac50fSopenharmony_ci        if (!WindowHelper::IsSplitWindowMode(mode)) {
337e0dac50fSopenharmony_ci            mode_ = mode;
338e0dac50fSopenharmony_ci        }
339e0dac50fSopenharmony_ci        return;
340e0dac50fSopenharmony_ci    }
341e0dac50fSopenharmony_ci    mode_ = lastMode_;
342e0dac50fSopenharmony_ci}
343e0dac50fSopenharmony_ci
344e0dac50fSopenharmony_ciconst std::string& WindowProperty::GetWindowName() const
345e0dac50fSopenharmony_ci{
346e0dac50fSopenharmony_ci    return windowName_ ;
347e0dac50fSopenharmony_ci}
348e0dac50fSopenharmony_ci
349e0dac50fSopenharmony_ciconst AbilityInfo& WindowProperty::GetAbilityInfo() const
350e0dac50fSopenharmony_ci{
351e0dac50fSopenharmony_ci    return abilityInfo_ ;
352e0dac50fSopenharmony_ci}
353e0dac50fSopenharmony_ci
354e0dac50fSopenharmony_ciRect WindowProperty::GetWindowRect() const
355e0dac50fSopenharmony_ci{
356e0dac50fSopenharmony_ci    return windowRect_;
357e0dac50fSopenharmony_ci}
358e0dac50fSopenharmony_ci
359e0dac50fSopenharmony_cibool WindowProperty::GetDecoStatus() const
360e0dac50fSopenharmony_ci{
361e0dac50fSopenharmony_ci    return decoStatus_;
362e0dac50fSopenharmony_ci}
363e0dac50fSopenharmony_ci
364e0dac50fSopenharmony_ciRect WindowProperty::GetRequestRect() const
365e0dac50fSopenharmony_ci{
366e0dac50fSopenharmony_ci    return requestRect_;
367e0dac50fSopenharmony_ci}
368e0dac50fSopenharmony_ci
369e0dac50fSopenharmony_ciWindowType WindowProperty::GetWindowType() const
370e0dac50fSopenharmony_ci{
371e0dac50fSopenharmony_ci    return type_;
372e0dac50fSopenharmony_ci}
373e0dac50fSopenharmony_ci
374e0dac50fSopenharmony_ciWindowMode WindowProperty::GetWindowMode() const
375e0dac50fSopenharmony_ci{
376e0dac50fSopenharmony_ci    return mode_;
377e0dac50fSopenharmony_ci}
378e0dac50fSopenharmony_ci
379e0dac50fSopenharmony_ciWindowMode WindowProperty::GetLastWindowMode() const
380e0dac50fSopenharmony_ci{
381e0dac50fSopenharmony_ci    return lastMode_;
382e0dac50fSopenharmony_ci}
383e0dac50fSopenharmony_ci
384e0dac50fSopenharmony_cibool WindowProperty::GetFullScreen() const
385e0dac50fSopenharmony_ci{
386e0dac50fSopenharmony_ci    return isFullScreen_;
387e0dac50fSopenharmony_ci}
388e0dac50fSopenharmony_ci
389e0dac50fSopenharmony_cibool WindowProperty::GetFocusable() const
390e0dac50fSopenharmony_ci{
391e0dac50fSopenharmony_ci    return focusable_;
392e0dac50fSopenharmony_ci}
393e0dac50fSopenharmony_ci
394e0dac50fSopenharmony_cibool WindowProperty::GetTouchable() const
395e0dac50fSopenharmony_ci{
396e0dac50fSopenharmony_ci    return touchable_;
397e0dac50fSopenharmony_ci}
398e0dac50fSopenharmony_ci
399e0dac50fSopenharmony_ciuint32_t WindowProperty::GetCallingWindow() const
400e0dac50fSopenharmony_ci{
401e0dac50fSopenharmony_ci    return callingWindow_;
402e0dac50fSopenharmony_ci}
403e0dac50fSopenharmony_ci
404e0dac50fSopenharmony_cibool WindowProperty::GetPrivacyMode() const
405e0dac50fSopenharmony_ci{
406e0dac50fSopenharmony_ci    return isPrivacyMode_;
407e0dac50fSopenharmony_ci}
408e0dac50fSopenharmony_ci
409e0dac50fSopenharmony_cibool WindowProperty::GetSystemPrivacyMode() const
410e0dac50fSopenharmony_ci{
411e0dac50fSopenharmony_ci    return isSystemPrivacyMode_;
412e0dac50fSopenharmony_ci}
413e0dac50fSopenharmony_ci
414e0dac50fSopenharmony_cibool WindowProperty::GetSnapshotSkip() const
415e0dac50fSopenharmony_ci{
416e0dac50fSopenharmony_ci    return isSnapshotSkip_;
417e0dac50fSopenharmony_ci}
418e0dac50fSopenharmony_ci
419e0dac50fSopenharmony_cibool WindowProperty::GetTransparent() const
420e0dac50fSopenharmony_ci{
421e0dac50fSopenharmony_ci    return isTransparent_;
422e0dac50fSopenharmony_ci}
423e0dac50fSopenharmony_ci
424e0dac50fSopenharmony_cifloat WindowProperty::GetAlpha() const
425e0dac50fSopenharmony_ci{
426e0dac50fSopenharmony_ci    return alpha_;
427e0dac50fSopenharmony_ci}
428e0dac50fSopenharmony_ci
429e0dac50fSopenharmony_ciconst Transform& WindowProperty::GetTransform() const
430e0dac50fSopenharmony_ci{
431e0dac50fSopenharmony_ci    return trans_;
432e0dac50fSopenharmony_ci}
433e0dac50fSopenharmony_ci
434e0dac50fSopenharmony_cifloat WindowProperty::GetBrightness() const
435e0dac50fSopenharmony_ci{
436e0dac50fSopenharmony_ci    return brightness_;
437e0dac50fSopenharmony_ci}
438e0dac50fSopenharmony_ci
439e0dac50fSopenharmony_cibool WindowProperty::IsTurnScreenOn() const
440e0dac50fSopenharmony_ci{
441e0dac50fSopenharmony_ci    return turnScreenOn_;
442e0dac50fSopenharmony_ci}
443e0dac50fSopenharmony_ci
444e0dac50fSopenharmony_cibool WindowProperty::IsKeepScreenOn() const
445e0dac50fSopenharmony_ci{
446e0dac50fSopenharmony_ci    return keepScreenOn_;
447e0dac50fSopenharmony_ci}
448e0dac50fSopenharmony_ci
449e0dac50fSopenharmony_ciDisplayId WindowProperty::GetDisplayId() const
450e0dac50fSopenharmony_ci{
451e0dac50fSopenharmony_ci    return displayId_;
452e0dac50fSopenharmony_ci}
453e0dac50fSopenharmony_ci
454e0dac50fSopenharmony_ciuint32_t WindowProperty::GetWindowFlags() const
455e0dac50fSopenharmony_ci{
456e0dac50fSopenharmony_ci    return flags_;
457e0dac50fSopenharmony_ci}
458e0dac50fSopenharmony_ci
459e0dac50fSopenharmony_ciconst std::unordered_map<WindowType, SystemBarProperty>& WindowProperty::GetSystemBarProperty() const
460e0dac50fSopenharmony_ci{
461e0dac50fSopenharmony_ci    return sysBarPropMap_;
462e0dac50fSopenharmony_ci}
463e0dac50fSopenharmony_ci
464e0dac50fSopenharmony_cibool WindowProperty::GetDecorEnable() const
465e0dac50fSopenharmony_ci{
466e0dac50fSopenharmony_ci    return isDecorEnable_;
467e0dac50fSopenharmony_ci}
468e0dac50fSopenharmony_ci
469e0dac50fSopenharmony_civoid WindowProperty::SetWindowId(uint32_t windowId)
470e0dac50fSopenharmony_ci{
471e0dac50fSopenharmony_ci    windowId_ = windowId;
472e0dac50fSopenharmony_ci}
473e0dac50fSopenharmony_ci
474e0dac50fSopenharmony_civoid WindowProperty::SetParentId(uint32_t parentId)
475e0dac50fSopenharmony_ci{
476e0dac50fSopenharmony_ci    parentId_ = parentId;
477e0dac50fSopenharmony_ci}
478e0dac50fSopenharmony_ci
479e0dac50fSopenharmony_civoid WindowProperty::SetTokenState(bool hasToken)
480e0dac50fSopenharmony_ci{
481e0dac50fSopenharmony_ci    tokenState_ = hasToken;
482e0dac50fSopenharmony_ci}
483e0dac50fSopenharmony_ci
484e0dac50fSopenharmony_civoid WindowProperty::SetModeSupportInfo(uint32_t modeSupportInfo)
485e0dac50fSopenharmony_ci{
486e0dac50fSopenharmony_ci    modeSupportInfo_ = modeSupportInfo;
487e0dac50fSopenharmony_ci}
488e0dac50fSopenharmony_ci
489e0dac50fSopenharmony_civoid WindowProperty::SetRequestModeSupportInfo(uint32_t requestModeSupportInfo)
490e0dac50fSopenharmony_ci{
491e0dac50fSopenharmony_ci    requestModeSupportInfo_ = requestModeSupportInfo;
492e0dac50fSopenharmony_ci}
493e0dac50fSopenharmony_ci
494e0dac50fSopenharmony_ciuint32_t WindowProperty::GetWindowId() const
495e0dac50fSopenharmony_ci{
496e0dac50fSopenharmony_ci    return windowId_;
497e0dac50fSopenharmony_ci}
498e0dac50fSopenharmony_ci
499e0dac50fSopenharmony_ciuint32_t WindowProperty::GetParentId() const
500e0dac50fSopenharmony_ci{
501e0dac50fSopenharmony_ci    return parentId_;
502e0dac50fSopenharmony_ci}
503e0dac50fSopenharmony_ci
504e0dac50fSopenharmony_ciconst PointInfo& WindowProperty::GetHitOffset() const
505e0dac50fSopenharmony_ci{
506e0dac50fSopenharmony_ci    return hitOffset_;
507e0dac50fSopenharmony_ci}
508e0dac50fSopenharmony_ci
509e0dac50fSopenharmony_ciuint32_t WindowProperty::GetAnimationFlag() const
510e0dac50fSopenharmony_ci{
511e0dac50fSopenharmony_ci    return animationFlag_;
512e0dac50fSopenharmony_ci}
513e0dac50fSopenharmony_ci
514e0dac50fSopenharmony_ciuint32_t WindowProperty::GetModeSupportInfo() const
515e0dac50fSopenharmony_ci{
516e0dac50fSopenharmony_ci    return modeSupportInfo_;
517e0dac50fSopenharmony_ci}
518e0dac50fSopenharmony_ci
519e0dac50fSopenharmony_ciuint32_t WindowProperty::GetRequestModeSupportInfo() const
520e0dac50fSopenharmony_ci{
521e0dac50fSopenharmony_ci    return requestModeSupportInfo_;
522e0dac50fSopenharmony_ci}
523e0dac50fSopenharmony_ci
524e0dac50fSopenharmony_cibool WindowProperty::GetTokenState() const
525e0dac50fSopenharmony_ci{
526e0dac50fSopenharmony_ci    return tokenState_;
527e0dac50fSopenharmony_ci}
528e0dac50fSopenharmony_ci
529e0dac50fSopenharmony_ciDragType WindowProperty::GetDragType() const
530e0dac50fSopenharmony_ci{
531e0dac50fSopenharmony_ci    return dragType_;
532e0dac50fSopenharmony_ci}
533e0dac50fSopenharmony_ci
534e0dac50fSopenharmony_ciconst Rect& WindowProperty::GetOriginRect() const
535e0dac50fSopenharmony_ci{
536e0dac50fSopenharmony_ci    return originRect_;
537e0dac50fSopenharmony_ci}
538e0dac50fSopenharmony_ci
539e0dac50fSopenharmony_cibool WindowProperty::GetStretchable() const
540e0dac50fSopenharmony_ci{
541e0dac50fSopenharmony_ci    return isStretchable_;
542e0dac50fSopenharmony_ci}
543e0dac50fSopenharmony_ci
544e0dac50fSopenharmony_ciWindowLimits WindowProperty::GetSizeLimits() const
545e0dac50fSopenharmony_ci{
546e0dac50fSopenharmony_ci    return sizeLimits_;
547e0dac50fSopenharmony_ci}
548e0dac50fSopenharmony_ci
549e0dac50fSopenharmony_ciWindowLimits WindowProperty::GetUpdatedSizeLimits() const
550e0dac50fSopenharmony_ci{
551e0dac50fSopenharmony_ci    return updatedSizeLimits_;
552e0dac50fSopenharmony_ci}
553e0dac50fSopenharmony_ci
554e0dac50fSopenharmony_ciconst TransformHelper::Matrix4& WindowProperty::GetTransformMat() const
555e0dac50fSopenharmony_ci{
556e0dac50fSopenharmony_ci    return transformMat_;
557e0dac50fSopenharmony_ci}
558e0dac50fSopenharmony_ci
559e0dac50fSopenharmony_ciconst TransformHelper::Matrix4& WindowProperty::GetWorldTransformMat() const
560e0dac50fSopenharmony_ci{
561e0dac50fSopenharmony_ci    return worldTransformMat_;
562e0dac50fSopenharmony_ci}
563e0dac50fSopenharmony_ci
564e0dac50fSopenharmony_civoid WindowProperty::SetTouchHotAreas(const std::vector<Rect>& rects)
565e0dac50fSopenharmony_ci{
566e0dac50fSopenharmony_ci    touchHotAreas_ = rects;
567e0dac50fSopenharmony_ci}
568e0dac50fSopenharmony_ci
569e0dac50fSopenharmony_civoid WindowProperty::GetTouchHotAreas(std::vector<Rect>& rects) const
570e0dac50fSopenharmony_ci{
571e0dac50fSopenharmony_ci    rects = touchHotAreas_;
572e0dac50fSopenharmony_ci}
573e0dac50fSopenharmony_ci
574e0dac50fSopenharmony_civoid WindowProperty::SetAspectRatio(float ratio)
575e0dac50fSopenharmony_ci{
576e0dac50fSopenharmony_ci    aspectRatio_ = ratio;
577e0dac50fSopenharmony_ci}
578e0dac50fSopenharmony_ci
579e0dac50fSopenharmony_civoid WindowProperty::SetMaximizeMode(MaximizeMode maximizeMode)
580e0dac50fSopenharmony_ci{
581e0dac50fSopenharmony_ci    maximizeMode_ = maximizeMode;
582e0dac50fSopenharmony_ci}
583e0dac50fSopenharmony_ci
584e0dac50fSopenharmony_cifloat WindowProperty::GetAspectRatio() const
585e0dac50fSopenharmony_ci{
586e0dac50fSopenharmony_ci    return aspectRatio_;
587e0dac50fSopenharmony_ci}
588e0dac50fSopenharmony_ci
589e0dac50fSopenharmony_ciMaximizeMode WindowProperty::GetMaximizeMode() const
590e0dac50fSopenharmony_ci{
591e0dac50fSopenharmony_ci    return maximizeMode_;
592e0dac50fSopenharmony_ci}
593e0dac50fSopenharmony_ci
594e0dac50fSopenharmony_ciuint32_t WindowProperty::GetAccessTokenId() const
595e0dac50fSopenharmony_ci{
596e0dac50fSopenharmony_ci    return accessTokenId_;
597e0dac50fSopenharmony_ci}
598e0dac50fSopenharmony_ci
599e0dac50fSopenharmony_civoid WindowProperty::SetWindowGravity(WindowGravity gravity, uint32_t percent)
600e0dac50fSopenharmony_ci{
601e0dac50fSopenharmony_ci    windowGravity_ = gravity;
602e0dac50fSopenharmony_ci    windowGravitySizePercent_ = percent;
603e0dac50fSopenharmony_ci}
604e0dac50fSopenharmony_ci
605e0dac50fSopenharmony_civoid WindowProperty::GetWindowGravity(WindowGravity& gravity, uint32_t& percent) const
606e0dac50fSopenharmony_ci{
607e0dac50fSopenharmony_ci    gravity = windowGravity_;
608e0dac50fSopenharmony_ci    percent = windowGravitySizePercent_;
609e0dac50fSopenharmony_ci}
610e0dac50fSopenharmony_ci
611e0dac50fSopenharmony_cibool WindowProperty::MapMarshalling(Parcel& parcel) const
612e0dac50fSopenharmony_ci{
613e0dac50fSopenharmony_ci    auto size = sysBarPropMap_.size();
614e0dac50fSopenharmony_ci    if (!parcel.WriteUint32(static_cast<uint32_t>(size))) {
615e0dac50fSopenharmony_ci        return false;
616e0dac50fSopenharmony_ci    }
617e0dac50fSopenharmony_ci    for (auto it : sysBarPropMap_) {
618e0dac50fSopenharmony_ci        // write key(type)
619e0dac50fSopenharmony_ci        if (!parcel.WriteUint32(static_cast<uint32_t>(it.first))) {
620e0dac50fSopenharmony_ci            return false;
621e0dac50fSopenharmony_ci        }
622e0dac50fSopenharmony_ci        // write val(sysBarProps)
623e0dac50fSopenharmony_ci        if (!(parcel.WriteBool(it.second.enable_) && parcel.WriteUint32(it.second.backgroundColor_) &&
624e0dac50fSopenharmony_ci            parcel.WriteUint32(it.second.contentColor_))) {
625e0dac50fSopenharmony_ci            return false;
626e0dac50fSopenharmony_ci        }
627e0dac50fSopenharmony_ci    }
628e0dac50fSopenharmony_ci    return true;
629e0dac50fSopenharmony_ci}
630e0dac50fSopenharmony_ci
631e0dac50fSopenharmony_civoid WindowProperty::MapUnmarshalling(Parcel& parcel, WindowProperty* property)
632e0dac50fSopenharmony_ci{
633e0dac50fSopenharmony_ci    uint32_t size = parcel.ReadUint32();
634e0dac50fSopenharmony_ci    if (size > SYSTEM_BAR_PROPERTY_MAX_NUM) {
635e0dac50fSopenharmony_ci        return;
636e0dac50fSopenharmony_ci    }
637e0dac50fSopenharmony_ci    for (uint32_t i = 0; i < size; i++) {
638e0dac50fSopenharmony_ci        WindowType type = static_cast<WindowType>(parcel.ReadUint32());
639e0dac50fSopenharmony_ci        SystemBarProperty prop = { parcel.ReadBool(), parcel.ReadUint32(), parcel.ReadUint32() };
640e0dac50fSopenharmony_ci        property->SetSystemBarProperty(type, prop);
641e0dac50fSopenharmony_ci    }
642e0dac50fSopenharmony_ci}
643e0dac50fSopenharmony_ci
644e0dac50fSopenharmony_cibool WindowProperty::MarshallingTouchHotAreas(Parcel& parcel) const
645e0dac50fSopenharmony_ci{
646e0dac50fSopenharmony_ci    auto size = touchHotAreas_.size();
647e0dac50fSopenharmony_ci    if (!parcel.WriteUint32(static_cast<uint32_t>(size))) {
648e0dac50fSopenharmony_ci        return false;
649e0dac50fSopenharmony_ci    }
650e0dac50fSopenharmony_ci    for (const auto& rect : touchHotAreas_) {
651e0dac50fSopenharmony_ci        if (!(parcel.WriteInt32(rect.posX_) && parcel.WriteInt32(rect.posY_) &&
652e0dac50fSopenharmony_ci            parcel.WriteUint32(rect.width_) && parcel.WriteUint32(rect.height_))) {
653e0dac50fSopenharmony_ci            return false;
654e0dac50fSopenharmony_ci        }
655e0dac50fSopenharmony_ci    }
656e0dac50fSopenharmony_ci    return true;
657e0dac50fSopenharmony_ci}
658e0dac50fSopenharmony_ci
659e0dac50fSopenharmony_civoid WindowProperty::UnmarshallingTouchHotAreas(Parcel& parcel, WindowProperty* property)
660e0dac50fSopenharmony_ci{
661e0dac50fSopenharmony_ci    uint32_t size = parcel.ReadUint32();
662e0dac50fSopenharmony_ci    if (size > TOUCH_HOT_AREA_MAX_NUM) {
663e0dac50fSopenharmony_ci        return;
664e0dac50fSopenharmony_ci    }
665e0dac50fSopenharmony_ci    for (uint32_t i = 0; i < size; i++) {
666e0dac50fSopenharmony_ci        property->touchHotAreas_.emplace_back(
667e0dac50fSopenharmony_ci            Rect{ parcel.ReadInt32(), parcel.ReadInt32(), parcel.ReadUint32(), parcel.ReadUint32() });
668e0dac50fSopenharmony_ci    }
669e0dac50fSopenharmony_ci}
670e0dac50fSopenharmony_ci
671e0dac50fSopenharmony_cibool WindowProperty::MarshallingTransform(Parcel& parcel) const
672e0dac50fSopenharmony_ci{
673e0dac50fSopenharmony_ci    return parcel.WriteFloat(trans_.pivotX_) && parcel.WriteFloat(trans_.pivotY_) &&
674e0dac50fSopenharmony_ci        parcel.WriteFloat(trans_.scaleX_) && parcel.WriteFloat(trans_.scaleY_) &&
675e0dac50fSopenharmony_ci        parcel.WriteFloat(trans_.rotationX_) && parcel.WriteFloat(trans_.rotationY_) &&
676e0dac50fSopenharmony_ci        parcel.WriteFloat(trans_.rotationZ_) && parcel.WriteFloat(trans_.translateX_) &&
677e0dac50fSopenharmony_ci        parcel.WriteFloat(trans_.translateY_) && parcel.WriteFloat(trans_.translateZ_);
678e0dac50fSopenharmony_ci}
679e0dac50fSopenharmony_ci
680e0dac50fSopenharmony_civoid WindowProperty::UnmarshallingTransform(Parcel& parcel, WindowProperty* property)
681e0dac50fSopenharmony_ci{
682e0dac50fSopenharmony_ci    Transform trans;
683e0dac50fSopenharmony_ci    trans.pivotX_ = parcel.ReadFloat();
684e0dac50fSopenharmony_ci    trans.pivotY_ = parcel.ReadFloat();
685e0dac50fSopenharmony_ci    trans.scaleX_ = parcel.ReadFloat();
686e0dac50fSopenharmony_ci    trans.scaleY_ = parcel.ReadFloat();
687e0dac50fSopenharmony_ci    trans.rotationX_ = parcel.ReadFloat();
688e0dac50fSopenharmony_ci    trans.rotationY_ = parcel.ReadFloat();
689e0dac50fSopenharmony_ci    trans.rotationZ_ = parcel.ReadFloat();
690e0dac50fSopenharmony_ci    trans.translateX_ = parcel.ReadFloat();
691e0dac50fSopenharmony_ci    trans.translateY_ = parcel.ReadFloat();
692e0dac50fSopenharmony_ci    trans.translateZ_ = parcel.ReadFloat();
693e0dac50fSopenharmony_ci    property->SetTransform(trans);
694e0dac50fSopenharmony_ci}
695e0dac50fSopenharmony_ci
696e0dac50fSopenharmony_cibool WindowProperty::MarshallingWindowSizeLimits(Parcel& parcel) const
697e0dac50fSopenharmony_ci{
698e0dac50fSopenharmony_ci    if (parcel.WriteUint32(sizeLimits_.maxWidth_) &&
699e0dac50fSopenharmony_ci        parcel.WriteUint32(sizeLimits_.maxHeight_) && parcel.WriteUint32(sizeLimits_.minWidth_) &&
700e0dac50fSopenharmony_ci        parcel.WriteUint32(sizeLimits_.minHeight_) && parcel.WriteFloat(sizeLimits_.maxRatio_) &&
701e0dac50fSopenharmony_ci        parcel.WriteFloat(sizeLimits_.minRatio_)) {
702e0dac50fSopenharmony_ci        return true;
703e0dac50fSopenharmony_ci    }
704e0dac50fSopenharmony_ci    return false;
705e0dac50fSopenharmony_ci}
706e0dac50fSopenharmony_ci
707e0dac50fSopenharmony_civoid WindowProperty::UnmarshallingWindowSizeLimits(Parcel& parcel, WindowProperty* property)
708e0dac50fSopenharmony_ci{
709e0dac50fSopenharmony_ci    WindowLimits sizeLimits = { parcel.ReadUint32(), parcel.ReadUint32(), parcel.ReadUint32(),
710e0dac50fSopenharmony_ci                                parcel.ReadUint32(), parcel.ReadFloat(), parcel.ReadFloat() };
711e0dac50fSopenharmony_ci    property->SetSizeLimits(sizeLimits);
712e0dac50fSopenharmony_ci}
713e0dac50fSopenharmony_ci
714e0dac50fSopenharmony_cibool WindowProperty::Marshalling(Parcel& parcel) const
715e0dac50fSopenharmony_ci{
716e0dac50fSopenharmony_ci    return parcel.WriteString(windowName_) && parcel.WriteInt32(windowRect_.posX_) &&
717e0dac50fSopenharmony_ci        parcel.WriteInt32(windowRect_.posY_) && parcel.WriteUint32(windowRect_.width_) &&
718e0dac50fSopenharmony_ci        parcel.WriteUint32(windowRect_.height_) && parcel.WriteInt32(requestRect_.posX_) &&
719e0dac50fSopenharmony_ci        parcel.WriteInt32(requestRect_.posY_) && parcel.WriteUint32(requestRect_.width_) &&
720e0dac50fSopenharmony_ci        parcel.WriteUint32(requestRect_.height_) && parcel.WriteBool(decoStatus_) &&
721e0dac50fSopenharmony_ci        parcel.WriteUint32(static_cast<uint32_t>(type_)) &&
722e0dac50fSopenharmony_ci        parcel.WriteUint32(static_cast<uint32_t>(mode_)) && parcel.WriteUint32(static_cast<uint32_t>(lastMode_)) &&
723e0dac50fSopenharmony_ci        parcel.WriteUint32(flags_) &&
724e0dac50fSopenharmony_ci        parcel.WriteBool(isFullScreen_) && parcel.WriteBool(focusable_) && parcel.WriteBool(touchable_) &&
725e0dac50fSopenharmony_ci        parcel.WriteBool(isPrivacyMode_) && parcel.WriteBool(isTransparent_) && parcel.WriteFloat(alpha_) &&
726e0dac50fSopenharmony_ci        parcel.WriteFloat(brightness_) && parcel.WriteUint64(displayId_) && parcel.WriteUint32(windowId_) &&
727e0dac50fSopenharmony_ci        parcel.WriteUint32(parentId_) && MapMarshalling(parcel) && parcel.WriteBool(isDecorEnable_) &&
728e0dac50fSopenharmony_ci        parcel.WriteInt32(hitOffset_.x) && parcel.WriteInt32(hitOffset_.y) && parcel.WriteUint32(animationFlag_) &&
729e0dac50fSopenharmony_ci        parcel.WriteUint32(static_cast<uint32_t>(windowSizeChangeReason_)) && parcel.WriteBool(tokenState_) &&
730e0dac50fSopenharmony_ci        parcel.WriteUint32(callingWindow_) && parcel.WriteUint32(static_cast<uint32_t>(requestedOrientation_)) &&
731e0dac50fSopenharmony_ci        parcel.WriteBool(turnScreenOn_) && parcel.WriteBool(keepScreenOn_) &&
732e0dac50fSopenharmony_ci        parcel.WriteUint32(modeSupportInfo_) && parcel.WriteUint32(requestModeSupportInfo_) &&
733e0dac50fSopenharmony_ci        parcel.WriteUint32(static_cast<uint32_t>(dragType_)) &&
734e0dac50fSopenharmony_ci        parcel.WriteUint32(originRect_.width_) && parcel.WriteUint32(originRect_.height_) &&
735e0dac50fSopenharmony_ci        parcel.WriteBool(isStretchable_) && MarshallingTouchHotAreas(parcel) && parcel.WriteUint32(accessTokenId_) &&
736e0dac50fSopenharmony_ci        MarshallingTransform(parcel) && MarshallingWindowSizeLimits(parcel) && zoomTrans_.Marshalling(parcel) &&
737e0dac50fSopenharmony_ci        parcel.WriteBool(isDisplayZoomOn_) && parcel.WriteString(abilityInfo_.bundleName_) &&
738e0dac50fSopenharmony_ci        parcel.WriteString(abilityInfo_.abilityName_) && parcel.WriteInt32(abilityInfo_.missionId_) &&
739e0dac50fSopenharmony_ci        parcel.WriteBool(isSnapshotSkip_) &&
740e0dac50fSopenharmony_ci        parcel.WriteDouble(textFieldPositionY_) && parcel.WriteDouble(textFieldHeight_);
741e0dac50fSopenharmony_ci}
742e0dac50fSopenharmony_ci
743e0dac50fSopenharmony_ciWindowProperty* WindowProperty::Unmarshalling(Parcel& parcel)
744e0dac50fSopenharmony_ci{
745e0dac50fSopenharmony_ci    WindowProperty* property = new(std::nothrow) WindowProperty();
746e0dac50fSopenharmony_ci    if (property == nullptr) {
747e0dac50fSopenharmony_ci        return nullptr;
748e0dac50fSopenharmony_ci    }
749e0dac50fSopenharmony_ci    property->SetWindowName(parcel.ReadString());
750e0dac50fSopenharmony_ci    Rect rect = { parcel.ReadInt32(), parcel.ReadInt32(), parcel.ReadUint32(), parcel.ReadUint32() };
751e0dac50fSopenharmony_ci    property->SetWindowRect(rect);
752e0dac50fSopenharmony_ci    Rect reqRect = { parcel.ReadInt32(), parcel.ReadInt32(), parcel.ReadUint32(), parcel.ReadUint32() };
753e0dac50fSopenharmony_ci    property->SetRequestRect(reqRect);
754e0dac50fSopenharmony_ci    property->SetDecoStatus(parcel.ReadBool());
755e0dac50fSopenharmony_ci    property->SetWindowType(static_cast<WindowType>(parcel.ReadUint32()));
756e0dac50fSopenharmony_ci    property->SetWindowMode(static_cast<WindowMode>(parcel.ReadUint32()));
757e0dac50fSopenharmony_ci    property->SetLastWindowMode(static_cast<WindowMode>(parcel.ReadUint32()));
758e0dac50fSopenharmony_ci    property->SetWindowFlags(parcel.ReadUint32());
759e0dac50fSopenharmony_ci    property->SetFullScreen(parcel.ReadBool());
760e0dac50fSopenharmony_ci    property->SetFocusable(parcel.ReadBool());
761e0dac50fSopenharmony_ci    property->SetTouchable(parcel.ReadBool());
762e0dac50fSopenharmony_ci    property->SetPrivacyMode(parcel.ReadBool());
763e0dac50fSopenharmony_ci    property->SetTransparent(parcel.ReadBool());
764e0dac50fSopenharmony_ci    property->SetAlpha(parcel.ReadFloat());
765e0dac50fSopenharmony_ci    property->SetBrightness(parcel.ReadFloat());
766e0dac50fSopenharmony_ci    property->SetDisplayId(parcel.ReadUint64());
767e0dac50fSopenharmony_ci    property->SetWindowId(parcel.ReadUint32());
768e0dac50fSopenharmony_ci    property->SetParentId(parcel.ReadUint32());
769e0dac50fSopenharmony_ci    MapUnmarshalling(parcel, property);
770e0dac50fSopenharmony_ci    property->SetDecorEnable(parcel.ReadBool());
771e0dac50fSopenharmony_ci    PointInfo offset = {parcel.ReadInt32(), parcel.ReadInt32()};
772e0dac50fSopenharmony_ci    property->SetHitOffset(offset);
773e0dac50fSopenharmony_ci    property->SetAnimationFlag(parcel.ReadUint32());
774e0dac50fSopenharmony_ci    property->SetWindowSizeChangeReason(static_cast<WindowSizeChangeReason>(parcel.ReadUint32()));
775e0dac50fSopenharmony_ci    property->SetTokenState(parcel.ReadBool());
776e0dac50fSopenharmony_ci    property->SetCallingWindow(parcel.ReadUint32());
777e0dac50fSopenharmony_ci    property->SetRequestedOrientation(static_cast<Orientation>(parcel.ReadUint32()));
778e0dac50fSopenharmony_ci    property->SetTurnScreenOn(parcel.ReadBool());
779e0dac50fSopenharmony_ci    property->SetKeepScreenOn(parcel.ReadBool());
780e0dac50fSopenharmony_ci    property->SetModeSupportInfo(parcel.ReadUint32());
781e0dac50fSopenharmony_ci    property->SetRequestModeSupportInfo(parcel.ReadUint32());
782e0dac50fSopenharmony_ci    property->SetDragType(static_cast<DragType>(parcel.ReadUint32()));
783e0dac50fSopenharmony_ci    uint32_t w = parcel.ReadUint32();
784e0dac50fSopenharmony_ci    uint32_t h = parcel.ReadUint32();
785e0dac50fSopenharmony_ci    property->SetOriginRect(Rect { 0, 0, w, h });
786e0dac50fSopenharmony_ci    property->SetStretchable(parcel.ReadBool());
787e0dac50fSopenharmony_ci    UnmarshallingTouchHotAreas(parcel, property);
788e0dac50fSopenharmony_ci    property->SetAccessTokenId(parcel.ReadUint32());
789e0dac50fSopenharmony_ci    UnmarshallingTransform(parcel, property);
790e0dac50fSopenharmony_ci    UnmarshallingWindowSizeLimits(parcel, property);
791e0dac50fSopenharmony_ci    Transform zoomTrans;
792e0dac50fSopenharmony_ci    zoomTrans.Unmarshalling(parcel);
793e0dac50fSopenharmony_ci    property->SetZoomTransform(zoomTrans);
794e0dac50fSopenharmony_ci    property->SetDisplayZoomState(parcel.ReadBool());
795e0dac50fSopenharmony_ci    AbilityInfo info = { parcel.ReadString(), parcel.ReadString(), parcel.ReadInt32() };
796e0dac50fSopenharmony_ci    property->SetAbilityInfo(info);
797e0dac50fSopenharmony_ci    property->SetSnapshotSkip(parcel.ReadBool());
798e0dac50fSopenharmony_ci    property->SetTextFieldPositionY(parcel.ReadDouble());
799e0dac50fSopenharmony_ci    property->SetTextFieldHeight(parcel.ReadDouble());
800e0dac50fSopenharmony_ci    return property;
801e0dac50fSopenharmony_ci}
802e0dac50fSopenharmony_ci
803e0dac50fSopenharmony_cibool WindowProperty::Write(Parcel& parcel, PropertyChangeAction action)
804e0dac50fSopenharmony_ci{
805e0dac50fSopenharmony_ci    bool ret = parcel.WriteUint32(static_cast<uint32_t>(windowId_));
806e0dac50fSopenharmony_ci    switch (action) {
807e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_RECT:
808e0dac50fSopenharmony_ci            ret = ret && parcel.WriteBool(decoStatus_) && parcel.WriteUint32(static_cast<uint32_t>(dragType_)) &&
809e0dac50fSopenharmony_ci                parcel.WriteInt32(originRect_.posX_) && parcel.WriteInt32(originRect_.posY_) &&
810e0dac50fSopenharmony_ci                parcel.WriteUint32(originRect_.width_) && parcel.WriteUint32(originRect_.height_) &&
811e0dac50fSopenharmony_ci                parcel.WriteInt32(requestRect_.posX_) && parcel.WriteInt32(requestRect_.posY_) &&
812e0dac50fSopenharmony_ci                parcel.WriteUint32(requestRect_.width_) && parcel.WriteUint32(requestRect_.height_) &&
813e0dac50fSopenharmony_ci                parcel.WriteUint32(static_cast<uint32_t>(windowSizeChangeReason_));
814e0dac50fSopenharmony_ci            break;
815e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_MODE:
816e0dac50fSopenharmony_ci            ret = ret && parcel.WriteUint32(static_cast<uint32_t>(mode_)) && parcel.WriteBool(isDecorEnable_);
817e0dac50fSopenharmony_ci            break;
818e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_FLAGS:
819e0dac50fSopenharmony_ci            ret = ret && parcel.WriteUint32(flags_);
820e0dac50fSopenharmony_ci            break;
821e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_OTHER_PROPS:
822e0dac50fSopenharmony_ci            ret = ret && MapMarshalling(parcel);
823e0dac50fSopenharmony_ci            break;
824e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_FOCUSABLE:
825e0dac50fSopenharmony_ci            ret = ret && parcel.WriteBool(focusable_);
826e0dac50fSopenharmony_ci            break;
827e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_TOUCHABLE:
828e0dac50fSopenharmony_ci            ret = ret && parcel.WriteBool(touchable_);
829e0dac50fSopenharmony_ci            break;
830e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_CALLING_WINDOW:
831e0dac50fSopenharmony_ci            ret = ret && parcel.WriteUint32(callingWindow_);
832e0dac50fSopenharmony_ci            break;
833e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_ORIENTATION:
834e0dac50fSopenharmony_ci            ret = ret && parcel.WriteUint32(static_cast<uint32_t>(requestedOrientation_));
835e0dac50fSopenharmony_ci            break;
836e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_TURN_SCREEN_ON:
837e0dac50fSopenharmony_ci            ret = ret && parcel.WriteBool(turnScreenOn_);
838e0dac50fSopenharmony_ci            break;
839e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_KEEP_SCREEN_ON:
840e0dac50fSopenharmony_ci            ret = ret && parcel.WriteBool(keepScreenOn_);
841e0dac50fSopenharmony_ci            break;
842e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_SET_BRIGHTNESS:
843e0dac50fSopenharmony_ci            ret = ret && parcel.WriteFloat(brightness_);
844e0dac50fSopenharmony_ci            break;
845e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_MODE_SUPPORT_INFO:
846e0dac50fSopenharmony_ci            ret = ret && parcel.WriteUint32(modeSupportInfo_);
847e0dac50fSopenharmony_ci            break;
848e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_TOUCH_HOT_AREA:
849e0dac50fSopenharmony_ci            ret = ret && MarshallingTouchHotAreas(parcel);
850e0dac50fSopenharmony_ci            break;
851e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_TRANSFORM_PROPERTY:
852e0dac50fSopenharmony_ci            ret = ret && MarshallingTransform(parcel);
853e0dac50fSopenharmony_ci            break;
854e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_ANIMATION_FLAG:
855e0dac50fSopenharmony_ci            ret = ret && parcel.WriteUint32(animationFlag_);
856e0dac50fSopenharmony_ci            break;
857e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_PRIVACY_MODE:
858e0dac50fSopenharmony_ci            ret = ret && parcel.WriteBool(isPrivacyMode_) && parcel.WriteBool(isSystemPrivacyMode_);
859e0dac50fSopenharmony_ci            break;
860e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_SYSTEM_PRIVACY_MODE:
861e0dac50fSopenharmony_ci            ret = ret && parcel.WriteBool(isPrivacyMode_) && parcel.WriteBool(isSystemPrivacyMode_);
862e0dac50fSopenharmony_ci            break;
863e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_SNAPSHOT_SKIP:
864e0dac50fSopenharmony_ci            ret = ret && parcel.WriteBool(isSnapshotSkip_) && parcel.WriteBool(isSystemPrivacyMode_);
865e0dac50fSopenharmony_ci            break;
866e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_ASPECT_RATIO:
867e0dac50fSopenharmony_ci            ret = ret && parcel.WriteFloat(aspectRatio_);
868e0dac50fSopenharmony_ci            break;
869e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_MAXIMIZE_STATE:
870e0dac50fSopenharmony_ci            ret = ret && parcel.WriteUint32(static_cast<uint32_t>(maximizeMode_));
871e0dac50fSopenharmony_ci            break;
872e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_TEXTFIELD_AVOID_INFO:
873e0dac50fSopenharmony_ci            ret = ret && parcel.WriteDouble(textFieldPositionY_) && parcel.WriteDouble(textFieldHeight_);
874e0dac50fSopenharmony_ci            break;
875e0dac50fSopenharmony_ci        default:
876e0dac50fSopenharmony_ci            break;
877e0dac50fSopenharmony_ci    }
878e0dac50fSopenharmony_ci    return ret;
879e0dac50fSopenharmony_ci}
880e0dac50fSopenharmony_ci
881e0dac50fSopenharmony_civoid WindowProperty::Read(Parcel& parcel, PropertyChangeAction action)
882e0dac50fSopenharmony_ci{
883e0dac50fSopenharmony_ci    SetWindowId(parcel.ReadUint32());
884e0dac50fSopenharmony_ci    switch (action) {
885e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_RECT:
886e0dac50fSopenharmony_ci            SetDecoStatus(parcel.ReadBool());
887e0dac50fSopenharmony_ci            SetDragType(static_cast<DragType>(parcel.ReadUint32()));
888e0dac50fSopenharmony_ci            SetOriginRect(Rect { parcel.ReadInt32(), parcel.ReadInt32(), parcel.ReadUint32(), parcel.ReadUint32() });
889e0dac50fSopenharmony_ci            SetRequestRect(Rect { parcel.ReadInt32(), parcel.ReadInt32(), parcel.ReadUint32(), parcel.ReadUint32() });
890e0dac50fSopenharmony_ci            SetWindowSizeChangeReason(static_cast<WindowSizeChangeReason>(parcel.ReadUint32()));
891e0dac50fSopenharmony_ci            break;
892e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_MODE:
893e0dac50fSopenharmony_ci            SetWindowMode(static_cast<WindowMode>(parcel.ReadUint32()));
894e0dac50fSopenharmony_ci            SetDecorEnable(parcel.ReadBool());
895e0dac50fSopenharmony_ci            break;
896e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_FLAGS:
897e0dac50fSopenharmony_ci            SetWindowFlags(parcel.ReadUint32());
898e0dac50fSopenharmony_ci            break;
899e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_OTHER_PROPS:
900e0dac50fSopenharmony_ci            MapUnmarshalling(parcel, this);
901e0dac50fSopenharmony_ci            break;
902e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_FOCUSABLE:
903e0dac50fSopenharmony_ci            SetFocusable(parcel.ReadBool());
904e0dac50fSopenharmony_ci            break;
905e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_TOUCHABLE:
906e0dac50fSopenharmony_ci            SetTouchable(parcel.ReadBool());
907e0dac50fSopenharmony_ci            break;
908e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_CALLING_WINDOW:
909e0dac50fSopenharmony_ci            SetCallingWindow(parcel.ReadUint32());
910e0dac50fSopenharmony_ci            break;
911e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_ORIENTATION:
912e0dac50fSopenharmony_ci            SetRequestedOrientation(static_cast<Orientation>(parcel.ReadUint32()));
913e0dac50fSopenharmony_ci            break;
914e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_TURN_SCREEN_ON:
915e0dac50fSopenharmony_ci            SetTurnScreenOn(parcel.ReadBool());
916e0dac50fSopenharmony_ci            break;
917e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_KEEP_SCREEN_ON:
918e0dac50fSopenharmony_ci            SetKeepScreenOn(parcel.ReadBool());
919e0dac50fSopenharmony_ci            break;
920e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_SET_BRIGHTNESS:
921e0dac50fSopenharmony_ci            SetBrightness(parcel.ReadFloat());
922e0dac50fSopenharmony_ci            break;
923e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_MODE_SUPPORT_INFO:
924e0dac50fSopenharmony_ci            SetModeSupportInfo(parcel.ReadUint32());
925e0dac50fSopenharmony_ci            break;
926e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_TOUCH_HOT_AREA:
927e0dac50fSopenharmony_ci            UnmarshallingTouchHotAreas(parcel, this);
928e0dac50fSopenharmony_ci            break;
929e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_TRANSFORM_PROPERTY:
930e0dac50fSopenharmony_ci            UnmarshallingTransform(parcel, this);
931e0dac50fSopenharmony_ci            break;
932e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_ANIMATION_FLAG: {
933e0dac50fSopenharmony_ci            SetAnimationFlag(parcel.ReadUint32());
934e0dac50fSopenharmony_ci            break;
935e0dac50fSopenharmony_ci        }
936e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_PRIVACY_MODE:
937e0dac50fSopenharmony_ci            SetPrivacyMode(parcel.ReadBool());
938e0dac50fSopenharmony_ci            SetSystemPrivacyMode(parcel.ReadBool());
939e0dac50fSopenharmony_ci            break;
940e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_SYSTEM_PRIVACY_MODE:
941e0dac50fSopenharmony_ci            SetPrivacyMode(parcel.ReadBool());
942e0dac50fSopenharmony_ci            SetSystemPrivacyMode(parcel.ReadBool());
943e0dac50fSopenharmony_ci            break;
944e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_SNAPSHOT_SKIP:
945e0dac50fSopenharmony_ci            SetSnapshotSkip(parcel.ReadBool());
946e0dac50fSopenharmony_ci            SetSystemPrivacyMode(parcel.ReadBool());
947e0dac50fSopenharmony_ci            break;
948e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_ASPECT_RATIO:
949e0dac50fSopenharmony_ci            SetAspectRatio(parcel.ReadFloat());
950e0dac50fSopenharmony_ci            break;
951e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_MAXIMIZE_STATE:
952e0dac50fSopenharmony_ci            SetMaximizeMode(static_cast<MaximizeMode>(parcel.ReadUint32()));
953e0dac50fSopenharmony_ci            break;
954e0dac50fSopenharmony_ci        case PropertyChangeAction::ACTION_UPDATE_TEXTFIELD_AVOID_INFO:
955e0dac50fSopenharmony_ci            SetTextFieldPositionY(parcel.ReadDouble());
956e0dac50fSopenharmony_ci            SetTextFieldHeight(parcel.ReadDouble());
957e0dac50fSopenharmony_ci            break;
958e0dac50fSopenharmony_ci        default:
959e0dac50fSopenharmony_ci            break;
960e0dac50fSopenharmony_ci    }
961e0dac50fSopenharmony_ci}
962e0dac50fSopenharmony_ci
963e0dac50fSopenharmony_civoid WindowProperty::CopyFrom(const sptr<WindowProperty>& property)
964e0dac50fSopenharmony_ci{
965e0dac50fSopenharmony_ci    windowName_ = property->windowName_;
966e0dac50fSopenharmony_ci    windowRect_ = property->windowRect_;
967e0dac50fSopenharmony_ci    requestRect_ = property->requestRect_;
968e0dac50fSopenharmony_ci    decoStatus_ = property->decoStatus_;
969e0dac50fSopenharmony_ci    type_ = property->type_;
970e0dac50fSopenharmony_ci    mode_ = property->mode_;
971e0dac50fSopenharmony_ci    lastMode_ = property->lastMode_;
972e0dac50fSopenharmony_ci    flags_ = property->flags_;
973e0dac50fSopenharmony_ci    isFullScreen_ = property->isFullScreen_;
974e0dac50fSopenharmony_ci    focusable_ = property->focusable_;
975e0dac50fSopenharmony_ci    touchable_ = property->touchable_;
976e0dac50fSopenharmony_ci    isPrivacyMode_ = property->isPrivacyMode_;
977e0dac50fSopenharmony_ci    isTransparent_ = property->isTransparent_;
978e0dac50fSopenharmony_ci    alpha_ = property->alpha_;
979e0dac50fSopenharmony_ci    brightness_ = property->brightness_;
980e0dac50fSopenharmony_ci    displayId_ = property->displayId_;
981e0dac50fSopenharmony_ci    windowId_ = property->windowId_;
982e0dac50fSopenharmony_ci    parentId_ = property->parentId_;
983e0dac50fSopenharmony_ci    hitOffset_ = property->hitOffset_;
984e0dac50fSopenharmony_ci    animationFlag_ = property->animationFlag_;
985e0dac50fSopenharmony_ci    windowSizeChangeReason_ = property->windowSizeChangeReason_;
986e0dac50fSopenharmony_ci    sysBarPropMap_ = property->sysBarPropMap_;
987e0dac50fSopenharmony_ci    isDecorEnable_ = property->isDecorEnable_;
988e0dac50fSopenharmony_ci    tokenState_ = property->tokenState_;
989e0dac50fSopenharmony_ci    callingWindow_ = property->callingWindow_;
990e0dac50fSopenharmony_ci    requestedOrientation_ = property->requestedOrientation_;
991e0dac50fSopenharmony_ci    turnScreenOn_ = property->turnScreenOn_;
992e0dac50fSopenharmony_ci    keepScreenOn_ = property->keepScreenOn_;
993e0dac50fSopenharmony_ci    modeSupportInfo_ = property->modeSupportInfo_;
994e0dac50fSopenharmony_ci    requestModeSupportInfo_ = property->requestModeSupportInfo_;
995e0dac50fSopenharmony_ci    dragType_ = property->dragType_;
996e0dac50fSopenharmony_ci    originRect_ = property->originRect_;
997e0dac50fSopenharmony_ci    isStretchable_ = property->isStretchable_;
998e0dac50fSopenharmony_ci    touchHotAreas_ = property->touchHotAreas_;
999e0dac50fSopenharmony_ci    accessTokenId_ = property->accessTokenId_;
1000e0dac50fSopenharmony_ci    trans_ = property->trans_;
1001e0dac50fSopenharmony_ci    sizeLimits_ = property->sizeLimits_;
1002e0dac50fSopenharmony_ci    zoomTrans_ = property->zoomTrans_;
1003e0dac50fSopenharmony_ci    isDisplayZoomOn_ = property->isDisplayZoomOn_;
1004e0dac50fSopenharmony_ci    reCalcuZoomTransformMat_ = true;
1005e0dac50fSopenharmony_ci    abilityInfo_ = property->abilityInfo_;
1006e0dac50fSopenharmony_ci    isSnapshotSkip_ = property->isSnapshotSkip_;
1007e0dac50fSopenharmony_ci    textFieldPositionY_ = property->textFieldPositionY_;
1008e0dac50fSopenharmony_ci    textFieldHeight_ = property->textFieldHeight_;
1009e0dac50fSopenharmony_ci}
1010e0dac50fSopenharmony_civoid WindowProperty::SetTextFieldPositionY(double textFieldPositionY)
1011e0dac50fSopenharmony_ci{
1012e0dac50fSopenharmony_ci    textFieldPositionY_ = textFieldPositionY;
1013e0dac50fSopenharmony_ci}
1014e0dac50fSopenharmony_ci
1015e0dac50fSopenharmony_civoid WindowProperty::SetTextFieldHeight(double textFieldHeight)
1016e0dac50fSopenharmony_ci{
1017e0dac50fSopenharmony_ci    textFieldHeight_ = textFieldHeight;
1018e0dac50fSopenharmony_ci}
1019e0dac50fSopenharmony_ci
1020e0dac50fSopenharmony_cidouble WindowProperty::GetTextFieldPositionY() const
1021e0dac50fSopenharmony_ci{
1022e0dac50fSopenharmony_ci    return textFieldPositionY_;
1023e0dac50fSopenharmony_ci}
1024e0dac50fSopenharmony_ci
1025e0dac50fSopenharmony_cidouble WindowProperty::GetTextFieldHeight() const
1026e0dac50fSopenharmony_ci{
1027e0dac50fSopenharmony_ci    return textFieldHeight_;
1028e0dac50fSopenharmony_ci}
1029e0dac50fSopenharmony_ci}
1030e0dac50fSopenharmony_ci}
1031