File indexing completed on 2024-05-26 04:34:03

0001 /*
0002  *  SPDX-FileCopyrightText: 2022 Dmitry Kazakov <dimula73@gmail.com>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 #ifndef KISAUTOBRUSHMODEL_H
0007 #define KISAUTOBRUSHMODEL_H
0008 
0009 #include <lager/cursor.hpp>
0010 #include <lager/extra/qt.hpp>
0011 
0012 #include <KisBrushModel.h>
0013 #include <KisWidgetConnectionUtils.h>
0014 
0015 using namespace KisBrushModel;
0016 using namespace KisWidgetConnectionUtils;
0017 
0018 
0019 class KisAutoBrushModel : public QObject
0020 {
0021     Q_OBJECT
0022 public:
0023     KisAutoBrushModel(lager::cursor<CommonData> commonData,
0024                       lager::cursor<AutoBrushData> autoBrushData,
0025                       lager::cursor<qreal> commonBrushSizeData);
0026 
0027     // the state must be declared **before** any cursors or readers
0028     lager::cursor<KisBrushModel::CommonData> m_commonData;
0029     lager::cursor<KisBrushModel::AutoBrushData> m_autoBrushData;
0030     lager::cursor<qreal> m_commonBrushSizeData;
0031 
0032     LAGER_QT_CURSOR(qreal, diameter);
0033     LAGER_QT_CURSOR(qreal, ratio);
0034     LAGER_QT_CURSOR(qreal, horizontalFade);
0035     LAGER_QT_CURSOR(qreal, verticalFade);
0036     LAGER_QT_CURSOR(int, spikes);
0037     LAGER_QT_CURSOR(bool, antialiasEdges);
0038     LAGER_QT_CURSOR(int, shape);
0039     LAGER_QT_CURSOR(int, type);
0040     LAGER_QT_CURSOR(QString, curveString);
0041     LAGER_QT_CURSOR(qreal, randomness);
0042     LAGER_QT_CURSOR(qreal, density);
0043     LAGER_QT_CURSOR(qreal, angle);
0044     LAGER_QT_CURSOR(qreal, spacing);
0045     LAGER_QT_CURSOR(bool, useAutoSpacing);
0046     LAGER_QT_CURSOR(qreal, autoSpacingCoeff);
0047     LAGER_QT_CURSOR(SpacingState, aggregatedSpacing);
0048 
0049     AutoBrushData bakedOptionData() const;
0050 };
0051 
0052 #endif // KISAUTOBRUSHMODEL_H