Files
Leeksov 4647310322 GLEGram 12.5 — Initial public release
Based on Swiftgram 12.5 (Telegram iOS 12.5).
All GLEGram features ported and organized in GLEGram/ folder.

Features: Ghost Mode, Saved Deleted Messages, Content Protection Bypass,
Font Replacement, Fake Profile, Chat Export, Plugin System, and more.

See CHANGELOG_12.5.md for full details.
2026-04-06 09:48:12 +03:00

126 lines
3.4 KiB
C++

#ifndef ImageAsset_hpp
#define ImageAsset_hpp
#include "Lottie/Private/Model/Assets/Asset.hpp"
#include "Lottie/Private/Parsing/JsonParsing.hpp"
namespace lottie {
class Image {
public:
Image() {
}
};
class ImageAsset: public Asset {
public:
ImageAsset(
std::string id_,
std::string name_,
std::string directory_,
float width_,
float height_
) : Asset(id_),
name(name_),
directory(directory_),
width(width_),
height(height_) {
}
virtual ~ImageAsset() = default;
explicit ImageAsset(lottiejson11::Json::object const &json) noexcept(false) :
Asset(json) {
name = getString(json, "p");
directory = getString(json, "u");
width = (float)getDouble(json, "w");
height = (float)getDouble(json, "h");
_e = getOptionalInt(json, "e");
_t = getOptionalString(json, "t");
}
virtual void toJson(lottiejson11::Json::object &json) const override {
Asset::toJson(json);
json.insert(std::make_pair("p", name));
json.insert(std::make_pair("u", directory));
json.insert(std::make_pair("w", width));
json.insert(std::make_pair("h", height));
if (_e.has_value()) {
json.insert(std::make_pair("e", _e.value()));
}
if (_t.has_value()) {
json.insert(std::make_pair("t", _t.value()));
}
}
public:
/// Image name
std::string name;
/// Image Directory
std::string directory;
/// Image Size
float width;
float height;
std::optional<int> _e;
std::optional<std::string> _t;
};
/*extension Data {
// MARK: Lifecycle
/// Initializes `Data` from an `ImageAsset`.
///
/// Returns nil when the input is not recognized as valid Data URL.
/// - parameter imageAsset: The image asset that contains Data URL.
internal init?(imageAsset: ImageAsset) {
self.init(dataString: imageAsset.name)
}
/// Initializes `Data` from a [Data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs) String.
///
/// Returns nil when the input is not recognized as valid Data URL.
/// - parameter dataString: The data string to parse.
/// - parameter options: Options for the string parsing. Default value is `[]`.
internal init?(dataString: String, options: DataURLReadOptions = []) {
guard
dataString.hasPrefix("data:"),
let url = URL(string: dataString)
else {
return nil
}
// The code below is needed because Data(contentsOf:) floods logs
// with messages since url doesn't have a host. This only fixes flooding logs
// when data inside Data URL is base64 encoded.
if
let base64Range = dataString.range(of: ";base64,"),
!options.contains(DataURLReadOptions.legacy)
{
let encodedString = String(dataString[base64Range.upperBound...])
self.init(base64Encoded: encodedString)
} else {
try? self.init(contentsOf: url)
}
}
// MARK: Internal
internal struct DataURLReadOptions: OptionSet {
let rawValue: Int
/// Will read Data URL using Data(contentsOf:)
static let legacy = DataURLReadOptions(rawValue: 1 << 0)
}
};*/
}
#endif /* ImageAsset_hpp */