Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_canvas_resource_provider.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2006 Boudewijn Rempt <boud@valdyas.org>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
7
8#include <QPainter>
9
10#include <KoCanvasBase.h>
11#include <KoID.h>
13#include <KoColorProfile.h>
19#include <KoResource.h>
21#include <KisUniqueColorSet.h>
22
23#include <resources/KoPattern.h>
24#include <kis_paint_device.h>
26#include <kis_image.h>
27#include <kis_group_layer.h>
31
32#include "kis_config.h"
33#include "KisViewManager.h"
34#include "canvas/kis_canvas2.h"
35#include <KoUnit.h>
36
37
39 : m_view(view),
40 m_presetShadowUpdater(view)
41{
42}
43
45{
46 disconnect(); // in case Qt gets confused
47}
48
53
88
89
94
96{
98 if (c.isValid()) {
99 return c.value<KoColor>();
100 }
101 else {
102 return KoColor();
103 }
104}
105
107{
109 if (c.isValid()) {
110 return c.value<KoColor>();
111 }
112 else {
113 return KoColor();
114 }
115}
116
122
127
132
134{
135 return static_cast<float>(m_resourceManager->resource(KoCanvasResource::HdrExposure).toDouble());
136}
137
139{
140 m_resourceManager->setResource(KoCanvasResource::HdrExposure, static_cast<double>(exposure));
141}
142
144{
145 return static_cast<float>(m_resourceManager->resource(KoCanvasResource::HdrGamma).toDouble());
146}
147
149{
150 m_resourceManager->setResource(KoCanvasResource::HdrGamma, static_cast<double>(gamma));
151}
152
153
163
173
178
183
193
198
204
206{
207 if (!preset) return;
208 QVariant v;
209 v.setValue(preset);
211
212 Q_EMIT sigPaintOpPresetChanged(preset);
213}
214
220
222{
223 if (!preset) return;
224
225 dbgUI << "setPreviousPaintOpPreset" << preset->paintOp();
226
227 QVariant v;
228 v.setValue(preset);
230}
231
233{
234 KoPatternSP pattern = res.dynamicCast<KoPattern>();
235 QVariant v;
236 v.setValue(pattern);
238 Q_EMIT sigPatternChanged(pattern);
239}
240
242{
243
244 KoAbstractGradientSP gradient = res.dynamicCast<KoAbstractGradient>();
245 QVariant v;
246 v.setValue(gradient);
248 Q_EMIT sigGradientChanged(gradient);
249}
250
251
253{
254 QVariant v;
255 v.setValue(c);
257 Q_EMIT sigBGColorChanged(c);
258}
259
261{
262 m_fGChanged = true;
263
264 QVariant v;
265 v.setValue(c);
267 Q_EMIT sigFGColorChanged(c);
268}
269
274
279
287
288
290{
291 if (KisImageWSP image = m_view->image()) {
292 float fw = image->width() / image->xRes();
293 float fh = image->height() / image->yRes();
294
295 QSizeF postscriptSize(fw, fh);
297 }
298}
299
301{
302 KisImageWSP image = m_view->image();
304
305 if(!image || !canvas) return;
306
307 // update KoUnit value for the document
309 setResource(KoCanvasResource::Unit, canvas->unit());
310
311 qreal scaleX, scaleY;
312 canvas->coordinatesConverter()->imageScale(&scaleX, &scaleY);
313
314 Q_EMIT sigOnScreenResolutionChanged(scaleX, scaleY);
315}
316
318{
319 switch (key) {
321 m_fGChanged = true;
322 Q_EMIT sigFGColorChanged(res.value<KoColor>());
323 break;
325 Q_EMIT sigBGColorChanged(res.value<KoColor>());
326 break;
328 Q_EMIT sigPatternChanged(res.value<KoPatternSP>());
329 break;
331 Q_EMIT sigGradientChanged(res.value<KoAbstractGradientSP>());
332 break;
334 Q_EMIT sigNodeChanged(currentNode());
335 break;
338 break;
340 {
341 Q_EMIT sigOpacityChanged(res.toDouble());
342 }
343 default:
344 ;
345 // Do nothing
346 };
347}
348
350{
352 QVariant::fromValue(compositeOp));
353}
354
359
364
370
372{
373 if (m_fGChanged) {
374 Q_EMIT sigFGColorUsed(fgColor());
375 m_fGChanged = false;
376 }
377}
378
389
396
401
407
413
418
424
429
435
439
445
446
447
451
457
458
462
468
469
473
477
481
482
483
488
493
498
503
508
513
518
523
528
533
538
543
548
553
558
563
569
574
580
585
590
595
float value(const T *src, size_t ch)
qreal v
const QString COMPOSITE_OVER
KoCanvasResourceProvider * resourceManager()
void notifyLoadingWorkspace(KisWorkspaceResourceSP workspace)
Notify that the workspace is loaded and settings can be read.
void sigOnScreenResolutionChanged(qreal scaleX, qreal scaleY)
void sigNodeChanged(const KisNodeSP)
QList< KoColor > colorHistoryColors() const
void notifySavingWorkspace(KisWorkspaceResourceSP workspace)
Notify that the workspace is saved and settings should be saved to it.
void slotPatternActivated(KoResourceSP pattern)
void sigPaintOpPresetChanged(const KisPaintOpPresetSP)
void sigPatternChanged(KoPatternSP)
void setColorHistoryColors(const QList< KoColor > &colors)
void sigFGColorChanged(const KoColor &)
void slotGradientActivated(KoResourceSP gradient)
KisPaintOpPresetSP currentPreset() const
KoCanvasResourceProvider * m_resourceManager
KisPaintOpPresetSP previousPreset() const
KisUniqueColorSet * colorHistoryModel() const
void slotGamutMaskActivated(KoGamutMaskSP mask)
void sigBGColorChanged(const KoColor &)
void sigFGColorUsed(const KoColor &)
KisPresetShadowUpdater m_presetShadowUpdater
void setTextPropertyData(KoSvgTextPropertyData data)
void slotCanvasResourceChanged(int key, const QVariant &res)
void sigSavingWorkspace(KisWorkspaceResourceSP workspace)
KoAbstractGradientSP currentGradient() const
void setCharacterPropertyData(KoSvgTextPropertyData data)
void setPreviousPaintOpPreset(const KisPaintOpPresetSP preset)
void setMirrorVertical(bool mirrorVertical)
void setMirrorHorizontal(bool mirrorHorizontal)
void setResourceManager(KoCanvasResourceProvider *resourceManager)
void sigLoadingWorkspace(KisWorkspaceResourceSP workspace)
KisCanvasResourceProvider(KisViewManager *view)
KoSvgTextPropertyData characterTextPropertyData() const
void slotNodeActivated(const KisNodeSP node)
void sigGamutMaskChanged(KoGamutMaskSP mask)
void setPaintOpPreset(const KisPaintOpPresetSP preset)
void sigGradientChanged(KoAbstractGradientSP)
KoSvgTextPropertyData textPropertyData() const
void setCurrentCompositeOp(const QString &compositeOp)
void setColorList(const QList< KoColor > &colors)
QList< KoColor > colorList() const
KisCanvas2 * canvasBase() const
Return the canvas base class.
KisNodeSP activeNode()
KisImageWSP image() const
Return the image this view is displaying.
virtual KoUnit unit() const =0
void setResource(int key, const QVariant &value)
Write API docs here.
Definition KoPattern.h:21
#define dbgUI
Definition kis_debug.h:52
KisWeakSharedPtr< KisNode > KisNodeWSP
Definition kis_types.h:87
@ EffectiveZoom
-Used only by painting tools for non-displaying purposes
@ PageSize
The size of the (current) page in postscript points.
@ EffectivePhysicalZoom
-Used by tool for displaying purposes
@ SvgCharacterTextPropertyData
KoSvgTextPropertyDataStruct.
@ SvgTextPropertyData
KoSvgTextPropertyDataStruct.
@ ColorHistoryModel
Color history if not per document.
@ Unit
The unit of this canvas.
@ BackgroundColor
The active background color selected for this canvas.
@ ForegroundColor
The active foreground color selected for this canvas.
static KoColorSpaceRegistry * instance()
The KoSvgTextPropertyData struct.