// Copyright (c) 2017-2024, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/blob/master/LICENSE.md #include "PixMap.hpp" #include namespace gui { PixMap::PixMap() { width = 0; height = 0; name = {}; type = Type::Pixmap; } PixMap::PixMap(std::uint16_t w, std::uint16_t h, std::uint8_t *pixMapData) : ImageMap(w, h, pixMapData) { data = new std::uint8_t[width * height]; type = Type::Pixmap; // No data provided - allocate buffer and clear it with white color if (pixMapData == nullptr) { std::memset(data, 0x0F, width * height); } else { std::memcpy(data, pixMapData, width * height); } } gui::Status PixMap::load(std::uint8_t *pixMapData, std::uint32_t size) { std::uint32_t offset = 0; // Read width and height of the image std::memcpy(&width, &pixMapData[offset], sizeof(std::uint16_t)); offset += sizeof(std::uint16_t); std::memcpy(&height, &pixMapData[offset], sizeof(std::uint16_t)); offset += sizeof(std::uint16_t); data = new (std::nothrow) std::uint8_t[width * height]; if (data == nullptr) { return Status::GUI_FAILURE; } std::memcpy(data, &pixMapData[offset], width * height); return gui::Status::GUI_SUCCESS; } } /* namespace gui */