/* 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 "data/data_stories.h" #include "ui/effects/animations.h" #include "ui/userpic_view.h" namespace style { struct TextStyle; } // namespace style namespace Media::Stories { class Controller; struct SiblingView; struct SiblingLayout; class Sibling final { public: Sibling( not_null controller, const Data::StoriesList &list); ~Sibling(); [[nodiscard]] Data::FullStoryId shownId() const; [[nodiscard]] bool shows(const Data::StoriesList &list) const; [[nodiscard]] SiblingView view( const SiblingLayout &layout, float64 over); private: class Loader; class LoaderPhoto; class LoaderVideo; void check(); [[nodiscard]] QImage userpicImage(const SiblingLayout &layout); [[nodiscard]] QImage nameImage(const SiblingLayout &layout); [[nodiscard]] QPoint namePosition( const SiblingLayout &layout, const QImage &image) const; const not_null _controller; Data::FullStoryId _id; QImage _blurred; QImage _good; Ui::Animations::Simple _goodShown; QImage _userpicImage; InMemoryKey _userpicKey = {}; Ui::PeerUserpicView _userpicView; QImage _nameImage; std::unique_ptr _nameStyle; std::optional _name; QString _nameText; int _nameAvailableWidth = 0; int _nameFontSize = 0; std::unique_ptr _loader; }; } // namespace Media::Stories