File indexing completed on 2025-02-02 04:11:04
0001 /* 0002 * SPDX-FileCopyrightText: 2019-2023 Mattia Basaglia <dev@dragon.best> 0003 * 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include <QBrush> 0010 #include <QPixmap> 0011 0012 #include "model/assets/asset.hpp" 0013 0014 namespace glaxnimate::model { 0015 0016 class BrushStyle : public Asset 0017 { 0018 Q_OBJECT 0019 0020 public: 0021 using User = ReferenceProperty<BrushStyle>; 0022 0023 using Asset::Asset; 0024 0025 QIcon instance_icon() const override; 0026 0027 virtual QBrush brush_style(FrameTime t) const = 0; 0028 virtual QBrush constrained_brush_style(FrameTime t, const QRectF& bounds) const; 0029 0030 Q_SIGNALS: 0031 void style_changed(); 0032 0033 protected: 0034 virtual void fill_icon(QPixmap& icon) const = 0; 0035 0036 void invalidate_icon() 0037 { 0038 icon = {}; 0039 Q_EMIT style_changed(); 0040 } 0041 0042 private: 0043 mutable QPixmap icon; 0044 }; 0045 0046 } // namespace glaxnimate::model