File indexing completed on 2024-05-19 04:28:53
0001 /* 0002 * SPDX-FileCopyrightText: 2006 Boudewijn Rempt <boud@valdyas.org> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef KIS_CANVAS_RESOURCE_PROVIDER_H_ 0008 #define KIS_CANVAS_RESOURCE_PROVIDER_H_ 0009 0010 #include <QObject> 0011 0012 #include <KoColor.h> 0013 #include <KoID.h> 0014 #include <KoCanvasResourceProvider.h> 0015 #include <KoResource.h> 0016 0017 #include "kis_types.h" 0018 #include "kritaui_export.h" 0019 0020 #include <KoPattern.h> 0021 #include <KoAbstractGradient.h> 0022 #include <resources/KoGamutMask.h> 0023 #include <kis_workspace_resource.h> 0024 #include "KisPresetShadowUpdater.h" 0025 0026 class KoColorProfile; 0027 class KoAbstractGradient; 0028 0029 class KoCanvasBase; 0030 class KisViewManager; 0031 0032 class KisFilterConfiguration; 0033 0034 #include <kis_abstract_perspective_grid.h> 0035 0036 /** 0037 * KisCanvasResourceProvider contains the per-window current settings that 0038 * influence painting, like paintop, color, gradients and so on. 0039 */ 0040 class KRITAUI_EXPORT KisCanvasResourceProvider : public QObject 0041 { 0042 Q_OBJECT 0043 0044 public: 0045 KisCanvasResourceProvider(KisViewManager * view); 0046 ~KisCanvasResourceProvider() override; 0047 0048 void setResourceManager(KoCanvasResourceProvider *resourceManager); 0049 KoCanvasResourceProvider* resourceManager(); 0050 0051 KoCanvasBase * canvas() const; 0052 0053 KoColor bgColor() const; 0054 void setBGColor(const KoColor& c); 0055 0056 KoColor fgColor() const; 0057 void setFGColor(const KoColor& c); 0058 0059 float HDRExposure() const; 0060 void setHDRExposure(float exposure); 0061 0062 float HDRGamma() const; 0063 void setHDRGamma(float gamma); 0064 0065 bool eraserMode() const; 0066 void setEraserMode(bool value); 0067 0068 KoPatternSP currentPattern() const; 0069 0070 KoAbstractGradientSP currentGradient() const; 0071 0072 KisImageWSP currentImage() const; 0073 0074 KisNodeSP currentNode() const; 0075 0076 KoGamutMaskSP currentGamutMask() const; 0077 bool gamutMaskActive() const; 0078 0079 KisPaintOpPresetSP currentPreset() const; 0080 void setPaintOpPreset(const KisPaintOpPresetSP preset); 0081 0082 KisPaintOpPresetSP previousPreset() const; 0083 void setPreviousPaintOpPreset(const KisPaintOpPresetSP preset); 0084 0085 void setCurrentCompositeOp(const QString& compositeOp); 0086 QString currentCompositeOp() const; 0087 0088 void setMirrorHorizontal(bool mirrorHorizontal); 0089 bool mirrorHorizontal() const; 0090 0091 void setMirrorVertical(bool mirrorVertical); 0092 bool mirrorVertical() const; 0093 0094 // options for horizontal and vertical mirror toolbar 0095 void setMirrorHorizontalLock(bool isLocked); 0096 bool mirrorHorizontalLock(); 0097 void setMirrorVerticalLock(bool isLocked); 0098 bool mirrorVerticalLock(); 0099 0100 void setMirrorVerticalHideDecorations(bool hide); 0101 bool mirrorVerticalHideDecorations(); 0102 0103 void setMirrorHorizontalHideDecorations(bool hide); 0104 bool mirrorHorizontalHideDecorations(); 0105 0106 void mirrorVerticalMoveCanvasToCenter(); 0107 void mirrorHorizontalMoveCanvasToCenter(); 0108 0109 void setOpacity(qreal opacity); 0110 qreal opacity() const; 0111 0112 void setFlow(qreal opacity); 0113 qreal flow() const; 0114 0115 void setSize(qreal size); 0116 qreal size() const; 0117 0118 void setBrushRotation(qreal rotation); 0119 qreal brushRotation() const; 0120 0121 void setPatternSize(qreal size); 0122 qreal patternSize() const; 0123 0124 void setGlobalAlphaLock(bool lock); 0125 bool globalAlphaLock() const; 0126 0127 void setDisablePressure(bool value); 0128 bool disablePressure() const; 0129 0130 ///Notify that the workspace is saved and settings should be saved to it 0131 void notifySavingWorkspace(KisWorkspaceResourceSP workspace); 0132 0133 ///Notify that the workspace is loaded and settings can be read 0134 void notifyLoadingWorkspace(KisWorkspaceResourceSP workspace); 0135 0136 public Q_SLOTS: 0137 0138 void slotSetFGColor(const KoColor& c); 0139 void slotSetBGColor(const KoColor& c); 0140 void slotPatternActivated(KoResourceSP pattern); 0141 void slotGradientActivated(KoResourceSP gradient); 0142 void slotNodeActivated(const KisNodeSP node); 0143 void slotPainting(); 0144 0145 void slotGamutMaskActivated(KoGamutMaskSP mask); 0146 void slotGamutMaskUnset(); 0147 void slotGamutMaskPreviewUpdate(); 0148 void slotGamutMaskDeactivate(); 0149 0150 /** 0151 * Set the image size in pixels. The resource provider will store 0152 * the image size in postscript points. 0153 */ 0154 // FIXME: this slot doesn't catch the case when image resolution is changed 0155 void slotImageSizeChanged(); 0156 void slotOnScreenResolutionChanged(); 0157 0158 private Q_SLOTS: 0159 0160 void slotCanvasResourceChanged(int key, const QVariant & res); 0161 0162 Q_SIGNALS: 0163 0164 void sigPaintOpPresetChanged(const KisPaintOpPresetSP); 0165 void sigFGColorChanged(const KoColor &); 0166 void sigBGColorChanged(const KoColor &); 0167 void sigGradientChanged(KoAbstractGradientSP); 0168 void sigPatternChanged(KoPatternSP); 0169 void sigNodeChanged(const KisNodeSP); 0170 void sigDisplayProfileChanged(const KoColorProfile *); 0171 void sigFGColorUsed(const KoColor&); 0172 void sigOnScreenResolutionChanged(qreal scaleX, qreal scaleY); 0173 void sigEffectiveCompositeOpChanged(); 0174 void sigOpacityChanged(qreal); 0175 void sigSavingWorkspace(KisWorkspaceResourceSP workspace); 0176 void sigLoadingWorkspace(KisWorkspaceResourceSP workspace); 0177 0178 void mirrorModeChanged(); 0179 void moveMirrorVerticalCenter(); 0180 void moveMirrorHorizontalCenter(); 0181 0182 void sigGamutMaskChanged(KoGamutMaskSP mask); 0183 void sigGamutMaskUnset(); 0184 void sigGamutMaskPreviewUpdate(); 0185 void sigGamutMaskDeactivated(); 0186 0187 private: 0188 0189 KisViewManager * m_view {nullptr}; 0190 KoCanvasResourceProvider *m_resourceManager {nullptr}; 0191 bool m_fGChanged {true}; 0192 KisPresetShadowUpdater m_presetShadowUpdater; 0193 }; 0194 0195 #endif