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