/* 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 "ui/rp_widget.h" #include "editor/photo_editor_common.h" #include "editor/photo_editor_inner_common.h" #include "editor/scene/scene_item_base.h" class QGraphicsItem; class QGraphicsView; namespace Editor { struct Controllers; class Scene; // Paint control. class Paint final : public Ui::RpWidget { public: Paint( not_null parent, PhotoModifications &modifications, const QSize &imageSize, std::shared_ptr controllers); [[nodiscard]] std::shared_ptr saveScene() const; void restoreScene(); void applyTransform(QRect geometry, int angle, bool flipped); void applyBrush(const Brush &brush); void cancel(); void keepResult(); void updateUndoState(); void handleMimeData(const QMimeData *data); private: struct SavedItem { std::shared_ptr item; bool undid = false; }; ItemBase::Data itemBaseData() const; void clearRedoList(); const std::shared_ptr _controllers; const std::shared_ptr _scene; const base::unique_qptr _view; const QSize _imageSize; struct { int angle = 0; bool flipped = false; float64 zoom = 0.; } _transform; rpl::variable _hasUndo = true; rpl::variable _hasRedo = true; }; } // namespace Editor