| 81 | bool save() { return this->saveAs(_params->fontAsset); } |
| 82 | |
| 83 | bool saveAs(std::string_view path) |
| 84 | { |
| 85 | std::string storePath; |
| 86 | auto fu = FileUtils::getInstance(); |
| 87 | if (fu->isAbsolutePath(path)) |
| 88 | { |
| 89 | storePath = path; |
| 90 | } |
| 91 | else |
| 92 | { |
| 93 | storePath = fu->getDefaultResourceRootPath(); |
| 94 | storePath += path; |
| 95 | } |
| 96 | |
| 97 | auto start = yasio::highp_clock(); |
| 98 | |
| 99 | JsonWriter<> xasset; |
| 100 | |
| 101 | xasset.writeStartObject(); |
| 102 | |
| 103 | xasset.writeString("version"sv, AX_VERSION_STR_FULL); |
| 104 | xasset.writeString("type"sv, "fontatlas"sv); |
| 105 | xasset.writeString("sourceFont"sv, _params->sourceFont); |
| 106 | xasset.writeString("atlasName"sv, _atlasName); |
| 107 | xasset.writeNumber("spread"sv, 6); |
| 108 | xasset.writeNumber("faceSize"sv, _params->faceSize); |
| 109 | |
| 110 | xasset.writeNumberArray("atlasDim"sv, _params->atlasDim); |
| 111 | |
| 112 | xasset.writeStartObject("letters"sv); |
| 113 | std::string charCode; |
| 114 | for (auto& letterInfo : getLetterDefinitions()) |
| 115 | { |
| 116 | charCode.clear(); |
| 117 | fmt::format_to(charCode, "{}", (int32_t)letterInfo.first); |
| 118 | |
| 119 | xasset.writeStartObject(charCode); |
| 120 | xasset.writeNumber("U", letterInfo.second.U); |
| 121 | xasset.writeNumber("V", letterInfo.second.V); |
| 122 | xasset.writeNumber("width", letterInfo.second.width); |
| 123 | xasset.writeNumber("height", letterInfo.second.height); |
| 124 | xasset.writeNumber("offsetX", letterInfo.second.offsetX); |
| 125 | xasset.writeNumber("offsetY", letterInfo.second.offsetY); |
| 126 | xasset.writeNumber("page", letterInfo.second.textureID); |
| 127 | xasset.writeNumber("advance", letterInfo.second.xAdvance); |
| 128 | xasset.writeEndObject(); |
| 129 | } |
| 130 | xasset.writeEndObject(); |
| 131 | |
| 132 | xasset.writeStartArray("pages"); |
| 133 | for (auto& data : _pageDatas) |
| 134 | { |
| 135 | auto compData = ZipUtils::compressGZ(std::span{data}); |
| 136 | auto pixels = utils::base64Encode(std::span{compData}); |
| 137 | xasset.writeStringValue(pixels); |
| 138 | } |
| 139 | xasset.writeEndArray(); |
| 140 |
no test coverage detected