/* 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/flags.h" namespace Data { class DocumentMedia final { public: explicit DocumentMedia(not_null owner); ~DocumentMedia(); void goodThumbnailWanted(); [[nodiscard]] Image *goodThumbnail() const; void setGoodThumbnail(QImage thumbnail); // For DocumentData. void validateGoodThumbnail(); static void CheckGoodThumbnail(not_null document); private: enum class Flag : uchar { GoodThumbnailWanted = 0x01, }; inline constexpr bool is_flag_type(Flag) { return true; }; using Flags = base::flags; static void ReadOrGenerateThumbnail(not_null document); static void GenerateGoodThumbnail(not_null document); const not_null _owner; std::unique_ptr _goodThumbnail; Flags _flags; }; } // namespace Data