tdesktop/Telegram/SourceFiles/lottie/lottie_common.h

67 lines
1.3 KiB
C
Raw Normal View History

/*
This file is part of Telegram Desktop,
the official desktop application for the Telegram messaging service.
For license and copyright information please follow this link:
https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
*/
#pragma once
#include "base/basic_types.h"
#include "base/variant.h"
#include <QSize>
#include <QColor>
#include <crl/crl_time.h>
2019-08-08 19:57:34 +00:00
#include <vector>
namespace Lottie {
inline constexpr auto kTimeUnknown = std::numeric_limits<crl::time>::min();
inline constexpr auto kMaxFileSize = 2 * 1024 * 1024;
2019-05-28 11:39:38 +00:00
class Animation;
struct Information {
int frameRate = 0;
int framesCount = 0;
QSize size;
};
enum class Error {
ParseFailed,
NotSupported,
};
struct FrameRequest {
2019-06-26 10:01:04 +00:00
QSize box;
std::optional<QColor> colored;
2019-06-26 10:01:04 +00:00
[[nodiscard]] bool empty() const {
return box.isEmpty();
}
2019-07-05 16:13:27 +00:00
[[nodiscard]] QSize size(const QSize &original) const;
2019-06-26 10:01:04 +00:00
[[nodiscard]] bool operator==(const FrameRequest &other) const {
return (box == other.box)
&& (colored == other.colored);
}
2019-06-26 10:01:04 +00:00
[[nodiscard]] bool operator!=(const FrameRequest &other) const {
return !(*this == other);
}
};
2019-07-05 17:15:25 +00:00
enum class Quality : char {
Default,
High,
};
2019-08-07 14:22:51 +00:00
struct ColorReplacements {
std::vector<std::pair<std::uint32_t, std::uint32_t>> replacements;
uint8 tag = 0;
};
QByteArray ReadContent(const QByteArray &data, const QString &filepath);
} // namespace Lottie