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
47
52
87
88
93
95{
97 if (c.isValid()) {
98 return c.value<KoColor>();
99 }
100 else {
101 return KoColor();
102 }
103}
104
106{
108 if (c.isValid()) {
109 return c.value<KoColor>();
110 }
111 else {
112 return KoColor();
113 }
114}
115
121
126
131
133{
134 return static_cast<float>(m_resourceManager->resource(KoCanvasResource::HdrExposure).toDouble());
135}
136
138{
139 m_resourceManager->setResource(KoCanvasResource::HdrExposure, static_cast<double>(exposure));
140}
141
143{
144 return static_cast<float>(m_resourceManager->resource(KoCanvasResource::HdrGamma).toDouble());
145}
146
148{
149 m_resourceManager->setResource(KoCanvasResource::HdrGamma, static_cast<double>(gamma));
150}
151
152
162
172
177
182
192
197
203
205{
206 if (!preset) return;
207 QVariant v;
208 v.setValue(preset);
210
211 Q_EMIT sigPaintOpPresetChanged(preset);
212}
213
219
221{
222 if (!preset) return;
223
224 dbgUI << "setPreviousPaintOpPreset" << preset->paintOp();
225
226 QVariant v;
227 v.setValue(preset);
229}
230
232{
233 KoPatternSP pattern = res.dynamicCast<KoPattern>();
234 QVariant v;
235 v.setValue(pattern);
237 Q_EMIT sigPatternChanged(pattern);
238}
239
241{
242
243 KoAbstractGradientSP gradient = res.dynamicCast<KoAbstractGradient>();
244 QVariant v;
245 v.setValue(gradient);
247 Q_EMIT sigGradientChanged(gradient);
248}
249
250
252{
253 QVariant v;
254 v.setValue(c);
256 Q_EMIT sigBGColorChanged(c);
257}
258
260{
261 m_fGChanged = true;
262
263 QVariant v;
264 v.setValue(c);
266 Q_EMIT sigFGColorChanged(c);
267}
268
273
278
286
287
289{
290 if (KisImageWSP image = m_view->image()) {
291 float fw = image->width() / image->xRes();
292 float fh = image->height() / image->yRes();
293
294 QSizeF postscriptSize(fw, fh);
296 }
297}
298
300{
301 KisImageWSP image = m_view->image();
303
304 if(!image || !canvas) return;
305
306 // update KoUnit value for the document
308 setResource(KoCanvasResource::Unit, canvas->unit());
309
310 qreal scaleX, scaleY;
311 canvas->coordinatesConverter()->imageScale(&scaleX, &scaleY);
312
313 Q_EMIT sigOnScreenResolutionChanged(scaleX, scaleY);
314}
315
317{
318 switch (key) {
320 m_fGChanged = true;
321 Q_EMIT sigFGColorChanged(res.value<KoColor>());
322 break;
324 Q_EMIT sigBGColorChanged(res.value<KoColor>());
325 break;
327 Q_EMIT sigPatternChanged(res.value<KoPatternSP>());
328 break;
330 Q_EMIT sigGradientChanged(res.value<KoAbstractGradientSP>());
331 break;
333 Q_EMIT sigNodeChanged(currentNode());
334 break;
337 break;
339 {
340 Q_EMIT sigOpacityChanged(res.toDouble());
341 }
342 default:
343 ;
344 // Do nothing
345 };
346}
347
349{
351 QVariant::fromValue(compositeOp));
352}
353
358
363
369
371{
372 if (m_fGChanged) {
373 Q_EMIT sigFGColorUsed(fgColor());
374 m_fGChanged = false;
375 }
376}
377
388
395
400
406
412
417
423
428
434
438
444
445
446
450
456
457
461
467
468
472
476
480
481
482
487
492
497
502
507
512
517
522
527
532
537
542
547
552
557
562
568
573
579
584
589
594
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:56
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.