1 /* 2 * Copyright (C) 2024 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 #include "box/item_property_basic_box.h" 17 18 namespace OHOS { 19 namespace ImagePlugin { ParseContent(HeifStreamReader & reader)20heif_error HeifIspeBox::ParseContent(HeifStreamReader &reader) 21 { 22 ParseFullHeader(reader); 23 width_ = reader.Read32(); 24 height_ = reader.Read32(); 25 return reader.GetError(); 26 } 27 Write(HeifStreamWriter & writer) const28heif_error HeifIspeBox::Write(HeifStreamWriter &writer) const 29 { 30 size_t boxStart = ReserveHeader(writer); 31 32 writer.Write32(width_); 33 writer.Write32(height_); 34 35 WriteCalculatedHeader(writer, boxStart); 36 return heif_error_ok; 37 } 38 ParseContent(HeifStreamReader & reader)39heif_error HeifPixiBox::ParseContent(HeifStreamReader &reader) 40 { 41 ParseFullHeader(reader); 42 uint8_t channelNum = reader.Read8(); 43 if (!reader.CheckSize(channelNum)) { 44 return heif_error_eof; 45 } 46 bitNums_.resize(channelNum); 47 for (int i = 0; i < channelNum; i++) { 48 bitNums_[i] = reader.Read8(); 49 } 50 return reader.GetError(); 51 } 52 Write(HeifStreamWriter & writer) const53heif_error HeifPixiBox::Write(HeifStreamWriter &writer) const 54 { 55 size_t boxStart = ReserveHeader(writer); 56 57 writer.Write8((uint8_t) (bitNums_.size())); 58 for (uint8_t bitNum : bitNums_) { 59 writer.Write8(bitNum); 60 } 61 62 WriteCalculatedHeader(writer, boxStart); 63 return heif_error_ok; 64 } 65 ParseContent(HeifStreamReader & reader)66heif_error HeifRlocBox::ParseContent(HeifStreamReader &reader) 67 { 68 ParseFullHeader(reader); 69 horizontalOffset_ = reader.Read32(); 70 verticalOffset_ = reader.Read32(); 71 return reader.GetError(); 72 } 73 Write(HeifStreamWriter & writer) const74heif_error HeifRlocBox::Write(HeifStreamWriter &writer) const 75 { 76 size_t boxStart = ReserveHeader(writer); 77 78 writer.Write32(horizontalOffset_); 79 writer.Write32(verticalOffset_); 80 81 WriteCalculatedHeader(writer, boxStart); 82 return heif_error_ok; 83 } 84 } // namespace ImagePlugin 85 } // namespace OHOS 86