File indexing completed on 2024-06-09 04:28:10

0001 /*
0002  *  SPDX-FileCopyrightText: 2005 Bart Coppens <kde@bartcoppens.be>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #ifndef KIS_CUSTOM_BRUSH_H_
0008 #define KIS_CUSTOM_BRUSH_H_
0009 
0010 #include <QObject>
0011 #include <QShowEvent>
0012 
0013 #include "ui_wdgcustombrush.h"
0014 #include <kis_types.h>
0015 #include <kis_brush.h>
0016 #include <KoResourceServer.h>
0017 
0018 const QString TEMPORARY_FILENAME = "/tmp/temporaryKritaBrush.gbr";
0019 const QString TEMPORARY_BRUSH_NAME = "Temporary custom brush";
0020 const double DEFAULT_SPACING = 0.25;
0021 
0022 
0023 class KoResource;
0024 
0025 
0026 class KisWdgCustomBrush : public QDialog, public Ui::KisWdgCustomBrush
0027 {
0028     Q_OBJECT
0029 
0030 public:
0031     KisWdgCustomBrush(QWidget *parent) : QDialog(parent) {
0032         setupUi(this);
0033     }
0034 };
0035 
0036 class KisCustomBrushWidget : public KisWdgCustomBrush
0037 {
0038     Q_OBJECT
0039 public:
0040     KisCustomBrushWidget(QWidget *parent, const QString& caption, KisImageWSP image);
0041     virtual ~KisCustomBrushWidget();
0042     KisBrushSP brush();
0043 
0044     void setImage(KisImageWSP image);
0045 
0046 protected:
0047     void showEvent(QShowEvent *) override;
0048 
0049 private Q_SLOTS:
0050     void slotAddPredefined();
0051     void slotUpdateCurrentBrush(int i = 0); // To connect with activated(int)
0052     void slotSpacingChanged();
0053     void slotUpdateUseColorAsMask(bool useColorAsMask);
0054     void slotUpdateSaveButton();
0055 
0056 Q_SIGNALS:
0057     void sigNewPredefinedBrush(KoResourceSP );
0058 
0059 private:
0060     void createBrush();
0061     void updatePreviewImage();
0062 
0063     KisImageWSP m_image;
0064     KisBrushSP m_brush;
0065 
0066     KoResourceServer<KisBrush> *m_rServer {0};
0067 };
0068 
0069 
0070 #endif // KIS_CUSTOM_BRUSH_H_