File indexing completed on 2024-06-16 04:12:11

0001 /*
0002  *  SPDX-FileCopyrightText: 2015 Dmitry Kazakov <dimula73@gmail.com>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #ifndef __KIS_LAYER_STYLE_FILTER_ENVIRONMENT_H
0008 #define __KIS_LAYER_STYLE_FILTER_ENVIRONMENT_H
0009 
0010 #include <QScopedPointer>
0011 #include <QRect>
0012 
0013 #include <kritaimage_export.h>
0014 #include "kis_types.h"
0015 #include <KoPattern.h>
0016 
0017 class KisPainter;
0018 class KisLayer;
0019 class QPainterPath;
0020 class QBitArray;
0021 class KisCachedPaintDevice;
0022 class KisCachedSelection;
0023 
0024 
0025 class KRITAIMAGE_EXPORT KisLayerStyleFilterEnvironment
0026 {
0027 public:
0028     KisLayerStyleFilterEnvironment(KisLayer *sourceLayer);
0029     ~KisLayerStyleFilterEnvironment();
0030 
0031     QRect layerBounds() const;
0032     QRect defaultBounds() const;
0033     int currentLevelOfDetail() const;
0034 
0035     void setupFinalPainter(KisPainter *gc,
0036                            quint8 opacity,
0037                            const QBitArray &channelFlags) const;
0038 
0039     KisPixelSelectionSP cachedRandomSelection(const QRect &requestedRect) const;
0040 
0041     KoPatternSP cachedFlattenedPattern(KoPatternSP pattern) const;
0042 
0043     KisCachedSelection* cachedSelection();
0044     KisCachedPaintDevice* cachedPaintDevice();
0045 
0046 private:
0047     struct Private;
0048     const QScopedPointer<Private> m_d;
0049 };
0050 
0051 #endif /* __KIS_LAYER_STYLE_FILTER_ENVIRONMENT_H */