2
0
mirror of https://github.com/telegramdesktop/tdesktop synced 2025-08-23 02:37:11 +00:00

142 lines
3.7 KiB
C
Raw Permalink 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
2024-03-16 10:58:07 +04:00
enum class StickerType : uchar;
namespace base {
template <typename Enum>
class Flags;
} // namespace base
namespace Storage {
namespace Cache {
struct Key;
} // namespace Cache
} // namespace Storage
namespace Media::Clip {
class ReaderPointer;
enum class Notification;
} // namespace Media::Clip
namespace Lottie {
class SinglePlayer;
class MultiPlayer;
class FrameRenderer;
class Animation;
enum class Quality : char;
struct ColorReplacements;
} // namespace Lottie
namespace Main {
class Session;
} // namespace Main
namespace Ui {
class PathShiftGradient;
} // namespace Ui
namespace Data {
class DocumentMedia;
class StickersSetThumbnailView;
2024-03-16 10:58:07 +04:00
enum class StickersSetFlag : ushort;
using StickersSetFlags = base::flags<StickersSetFlag>;
} // namespace Data
namespace ChatHelpers {
2022-06-28 17:13:20 +04:00
enum class StickerLottieSize : uint8 {
MessageHistory,
StickerSet, // In Emoji used for forum topic profile cover icons.
StickersPanel,
StickersFooter,
SetsListThumbnail,
InlineResults,
2021-09-15 17:49:06 +03:00
EmojiInteraction,
2021-09-17 19:23:52 +03:00
EmojiInteractionReserved1,
EmojiInteractionReserved2,
EmojiInteractionReserved3,
EmojiInteractionReserved4,
EmojiInteractionReserved5,
EmojiInteractionReserved6,
EmojiInteractionReserved7,
ChatIntroHelloSticker,
2024-03-20 18:09:37 +04:00
StickerEmojiSize,
};
2022-06-28 17:13:20 +04:00
[[nodiscard]] uint8 LottieCacheKeyShift(
uint8 replacementsTag,
StickerLottieSize sizeTag);
[[nodiscard]] std::unique_ptr<Lottie::SinglePlayer> LottiePlayerFromDocument(
not_null<Data::DocumentMedia*> media,
StickerLottieSize sizeTag,
QSize box,
Lottie::Quality quality = Lottie::Quality(),
std::shared_ptr<Lottie::FrameRenderer> renderer = nullptr);
[[nodiscard]] std::unique_ptr<Lottie::SinglePlayer> LottiePlayerFromDocument(
not_null<Data::DocumentMedia*> media,
const Lottie::ColorReplacements *replacements,
StickerLottieSize sizeTag,
QSize box,
Lottie::Quality quality = Lottie::Quality(),
std::shared_ptr<Lottie::FrameRenderer> renderer = nullptr);
[[nodiscard]] not_null<Lottie::Animation*> LottieAnimationFromDocument(
not_null<Lottie::MultiPlayer*> player,
not_null<Data::DocumentMedia*> media,
StickerLottieSize sizeTag,
QSize box);
[[nodiscard]] bool HasLottieThumbnail(
2024-03-16 10:58:07 +04:00
StickerType thumbType,
Data::StickersSetThumbnailView *thumb,
Data::DocumentMedia *media);
[[nodiscard]] std::unique_ptr<Lottie::SinglePlayer> LottieThumbnail(
Data::StickersSetThumbnailView *thumb,
Data::DocumentMedia *media,
StickerLottieSize sizeTag,
QSize box,
std::shared_ptr<Lottie::FrameRenderer> renderer = nullptr);
[[nodiscard]] bool HasWebmThumbnail(
2024-03-16 10:58:07 +04:00
StickerType thumbType,
Data::StickersSetThumbnailView *thumb,
Data::DocumentMedia *media);
[[nodiscard]] Media::Clip::ReaderPointer WebmThumbnail(
Data::StickersSetThumbnailView *thumb,
Data::DocumentMedia *media,
Fn<void(Media::Clip::Notification)> callback);
bool PaintStickerThumbnailPath(
QPainter &p,
not_null<Data::DocumentMedia*> media,
QRect target,
QLinearGradient *gradient = nullptr,
bool mirrorHorizontal = false);
bool PaintStickerThumbnailPath(
QPainter &p,
not_null<Data::DocumentMedia*> media,
QRect target,
not_null<Ui::PathShiftGradient*> gradient,
bool mirrorHorizontal = false);
[[nodiscard]] QSize ComputeStickerSize(
not_null<DocumentData*> document,
QSize box);
2024-12-20 10:38:06 +04:00
[[nodiscard]] not_null<DocumentData*> GenerateLocalSticker(
not_null<Main::Session*> session,
const QString &path);
2024-08-05 11:53:42 +02:00
[[nodiscard]] not_null<DocumentData*> GenerateLocalTgsSticker(
not_null<Main::Session*> session,
const QString &name);
} // namespace ChatHelpers