1/* 2 * Copyright (c) 2023 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#include <vector> 16 17#include "devicestatus_common.h" 18#include "devicestatus_define.h" 19#include "devicestatus_errors.h" 20#include "preview_style_packer.h" 21 22#undef LOG_TAG 23#define LOG_TAG "PreviewStylePacker" 24 25namespace OHOS { 26namespace Msdp { 27namespace DeviceStatus { 28 29int32_t PreviewStylePacker::Marshalling(const PreviewStyle &previewStyle, Parcel &data) 30{ 31 std::vector<int32_t> types; 32 for (const auto &elem : previewStyle.types) { 33 types.push_back(static_cast<int32_t>(elem)); 34 } 35 WRITEINT32VECTOR(data, types, ERR_INVALID_VALUE); 36 WRITEUINT32(data, previewStyle.foregroundColor, ERR_INVALID_VALUE); 37 WRITEINT32(data, previewStyle.opacity, ERR_INVALID_VALUE); 38 WRITEFLOAT(data, previewStyle.radius, ERR_INVALID_VALUE); 39 WRITEFLOAT(data, previewStyle.scale, ERR_INVALID_VALUE); 40 return RET_OK; 41} 42 43int32_t PreviewStylePacker::UnMarshalling(Parcel &data, PreviewStyle &previewStyle) 44{ 45 std::vector<int32_t> types; 46 READINT32VECTOR(data, types, ERR_INVALID_VALUE); 47 for (const auto &elem : types) { 48 previewStyle.types.push_back(static_cast<PreviewType>(elem)); 49 } 50 READUINT32(data, previewStyle.foregroundColor, ERR_INVALID_VALUE); 51 READINT32(data, previewStyle.opacity, ERR_INVALID_VALUE); 52 READFLOAT(data, previewStyle.radius, ERR_INVALID_VALUE); 53 READFLOAT(data, previewStyle.scale, ERR_INVALID_VALUE); 54 return RET_OK; 55} 56 57int32_t PreviewAnimationPacker::Marshalling(const PreviewAnimation &previewAnimation, Parcel &data) 58{ 59 WRITEINT32(data, previewAnimation.duration, ERR_INVALID_VALUE); 60 WRITESTRING(data, previewAnimation.curveName, ERR_INVALID_VALUE); 61 WRITEFLOATVECTOR(data, previewAnimation.curve, ERR_INVALID_VALUE); 62 return RET_OK; 63} 64 65int32_t PreviewAnimationPacker::UnMarshalling(Parcel &data, PreviewAnimation &previewAnimation) 66{ 67 READINT32(data, previewAnimation.duration, ERR_INVALID_VALUE); 68 if (previewAnimation.duration <= 0) { 69 FI_HILOGE("Invalid paramater duration:%{public}d", previewAnimation.duration); 70 return ERR_INVALID_VALUE; 71 } 72 if (previewAnimation.duration > MAX_ANIMATION_DURATION_MS) { 73 FI_HILOGW("Duration:%{public}d too long, use default value", previewAnimation.duration); 74 previewAnimation.duration = MAX_ANIMATION_DURATION_MS; 75 } 76 READSTRING(data, previewAnimation.curveName, ERR_INVALID_VALUE); 77 READFLOATVECTOR(data, previewAnimation.curve, ERR_INVALID_VALUE); 78 return RET_OK; 79} 80 81} // namespace DeviceStatus 82} // namespace Msdp 83} // namespace OHOS