| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- /*
- 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 "media/clip/media_clip_reader.h"
- class Painter;
- namespace Data {
- class PhotoMedia;
- } // namespace Data
- namespace Ui {
- struct PeerUserpicView;
- } // namespace Ui
- namespace Dialogs {
- class Entry;
- } // namespace Dialogs
- namespace Dialogs::Ui {
- using namespace ::Ui;
- struct PaintContext;
- class VideoUserpic final {
- public:
- VideoUserpic(not_null<PeerData*> peer, Fn<void()> repaint);
- ~VideoUserpic();
- [[nodiscard]] int frameIndex() const;
- void paintLeft(
- Painter &p,
- PeerUserpicView &view,
- int x,
- int y,
- int w,
- int size,
- bool paused);
- private:
- void clipCallback(Media::Clip::Notification notification);
- [[nodiscard]] Media::Clip::FrameRequest request(int size) const;
- bool startReady(int size = 0);
- const not_null<PeerData*> _peer;
- const Fn<void()> _repaint;
- Media::Clip::ReaderPointer _video;
- int _lastSize = 0;
- std::shared_ptr<Data::PhotoMedia> _videoPhotoMedia;
- PhotoId _videoPhotoId = 0;
- };
- void PaintUserpic(
- Painter &p,
- not_null<Entry*> entry,
- PeerData *peer,
- VideoUserpic *videoUserpic,
- PeerUserpicView &view,
- const Ui::PaintContext &context);
- void PaintUserpic(
- Painter &p,
- not_null<PeerData*> peer,
- VideoUserpic *videoUserpic,
- PeerUserpicView &view,
- int x,
- int y,
- int outerWidth,
- int size,
- bool paused);
- } // namespace Dialogs::Ui
|