Krita Source Code Documentation
Loading...
Searching...
No Matches
View.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2016 Boudewijn Rempt <boud@valdyas.org>
3 *
4 * SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6#include "View.h"
7#include <QPointer>
8
9#include <KoPattern.h>
10#include <KoAbstractGradient.h>
11#include <kis_paintop_preset.h>
12#include <KisView.h>
13#include <KisViewManager.h>
14#include <kis_node_manager.h>
18#include <kis_paintop_box.h>
19#include <KisMainWindow.h>
20#include <KoCanvasBase.h>
21#include <kis_canvas2.h>
22#include <KisResourceTypes.h>
23#include <KisDocument.h>
24#include "Document.h"
25#include "Canvas.h"
26#include "Window.h"
27#include "Resource.h"
28#include "ManagedColor.h"
29
30#include "LibKisUtils.h"
31
32
37
38View::View(KisView* view, QObject *parent)
39 : QObject(parent)
40 , d(new Private)
41{
42 d->view = view;
43}
44
46{
47 delete d;
48}
49
50bool View::operator==(const View &other) const
51{
52 return (d->view == other.d->view);
53}
54
55bool View::operator!=(const View &other) const
56{
57 return !(operator==(other));
58}
59
61{
62 if (!d->view) return 0;
63 KisMainWindow *mainwin = d->view->mainWindow();
64 Window *win = new Window(mainwin);
65 return win;
66}
67
68
70{
71 if (!d->view) return 0;
72 Document *doc = new Document(d->view->document(), false);
73 return doc;
74}
75
77{
78 if (!d->view || !document || !document->document()) return;
79 d->view = d->view->replaceBy(document->document());
80}
81
82bool View::visible() const
83{
84 if (!d->view) return false;
85 return d->view->isVisible();
86}
87
89{
90 if (!d->view) return;
91 KisMainWindow *mainwin = d->view->mainWindow();
92 mainwin->setActiveView(d->view);
93 mainwin->subWindowActivated();
94}
95
97{
98 if (!d->view) return 0;
99 Canvas *c = new Canvas(d->view->canvasBase());
100 return c;
101}
102
104{
105 return d->view;
106}
107
109{
110 if (!d->view) return;
111 if (!resource) return;
112
113 KoResourceSP r = resource->resource();
114 if (!r) return;
115
116 if (KoPatternSP pattern = r.dynamicCast<KoPattern>()) {
117 QVariant value = QVariant::fromValue(pattern);
118 d->view->canvasBase()->resourceManager()->setResource(KoCanvasResource::CurrentPattern, value);
119 } else if (KoAbstractGradientSP gradient = r.dynamicCast<KoAbstractGradient>()) {
120 QVariant value = QVariant::fromValue(gradient);
121 d->view->canvasBase()->resourceManager()->setResource(KoCanvasResource::CurrentGradient, value);
122 } else if (KoResourceSP preset = r.dynamicCast<KisPaintOpPreset>()) {
123 d->view->viewManager()->paintOpBox()->resourceSelected(preset);
124 }
125}
126
127
129{
130 if (!d->view) return 0;
131 return new ManagedColor(d->view->resourceProvider()->fgColor());
132}
133
135{
136 if (!d->view) return;
137 d->view->resourceProvider()->setFGColor(color->color());
138}
139
141{
142 if (!d->view) return 0;
143 return new ManagedColor(d->view->resourceProvider()->bgColor());
144}
145
147{
148 if (!d->view) return;
149 d->view->resourceProvider()->setBGColor(color->color());
150}
151
153{
154 if (!d->view) return 0;
155 return new Resource(d->view->resourceProvider()->currentPreset(), ResourceType::PaintOpPresets);
156}
157
159{
160 activateResource(resource);
161}
162
164{
165 if (!d->view) return 0;
166 return new Resource(d->view->resourceProvider()->currentPattern(), ResourceType::Patterns);
167}
168
170{
171 activateResource(resource);
172}
173
175{
176 if (!d->view) return 0;
177 return new Resource(d->view->resourceProvider()->currentGradient(), ResourceType::Gradients);
178}
179
181{
182 activateResource(resource);
183}
184
186{
187 if (!d->view) return "";
188 return d->view->resourceProvider()->currentCompositeOp();
189}
190
191void View::setCurrentBlendingMode(const QString &blendingMode)
192{
193 if (!d->view) return;
194 d->view->resourceProvider()->setCurrentCompositeOp(blendingMode);
195}
196
197float View::HDRExposure() const
198{
199 if (!d->view) return 0.0;
200 KisExposureGammaCorrectionInterface *iface = d->view->canvasBase()->exposureGammaCorrectionInterface();
201 return iface->currentExposure();
202}
203
204void View::setHDRExposure(float exposure)
205{
206 if (!d->view) return;
207 KisExposureGammaCorrectionInterface *iface = d->view->canvasBase()->exposureGammaCorrectionInterface();
208 iface->setCurrentExposure(exposure);
209}
210
211float View::HDRGamma() const
212{
213 if (!d->view) return 0.0;
214 KisExposureGammaCorrectionInterface *iface = d->view->canvasBase()->exposureGammaCorrectionInterface();
215 return iface->currentGamma();
216}
217
218void View::setHDRGamma(float gamma)
219{
220 if (!d->view) return;
221 KisExposureGammaCorrectionInterface *iface = d->view->canvasBase()->exposureGammaCorrectionInterface();
222 return iface->setCurrentGamma(gamma);
223}
224
226{
227 if (!d->view) return 0.0;
228 return d->view->resourceProvider()->opacity();
229}
230
231void View::setPaintingOpacity(qreal opacity)
232{
233 if (!d->view) return;
234 d->view->resourceProvider()->setOpacity(opacity);
235}
236
237qreal View::brushSize() const
238{
239 if (!d->view) return 0.0;
240 return d->view->resourceProvider()->size();
241}
242
243void View::setBrushSize(qreal brushSize)
244{
245 if (!d->view) return;
246 d->view->resourceProvider()->setSize(brushSize);
247}
248
249qreal View::brushFade() const
250{
251 if (!d->view) return 0.0;
252 return d->view->resourceProvider()->fade();
253}
254
255void View::setBrushFade(qreal brushFade)
256{
257 if (!d->view) return;
258 d->view->resourceProvider()->setFade(brushFade);
259}
260
262{
263 if (!d->view) return 0.0;
264 return d->view->resourceProvider()->brushRotation();
265}
266
267void View::setBrushRotation(qreal brushRotation)
268{
269 if (!d->view) return;
270 d->view->resourceProvider()->setBrushRotation(brushRotation);
271}
272
274{
275 if (!d->view) return 0.0;
276 return d->view->resourceProvider()->flow();
277}
278
279void View::setPaintingFlow(qreal flow)
280{
281 if (!d->view) return;
282 d->view->resourceProvider()->setFlow(flow);
283}
284
285qreal View::patternSize() const
286{
287 if (!d->view) return 0.0;
288 return d->view->resourceProvider()->patternSize();
289}
290
291void View::setPatternSize(qreal size)
292{
293 if (!d->view) return;
294 d->view->resourceProvider()->setPatternSize(size);
295}
296
298{
299 if (!d->view) {
300 return false;
301 }
302 return d->view->resourceProvider()->eraserMode();
303}
304
306{
307 if (!d->view) {
308 return;
309 }
310 d->view->resourceProvider()->setEraserMode(value);
311}
312
314{
315 if (!d->view) {
316 return false;
317 }
318 return d->view->resourceProvider()->globalAlphaLock();
319}
320
322{
323 if (!d->view) {
324 return;
325 }
326 d->view->resourceProvider()->setGlobalAlphaLock(value);
327}
328
330{
331 if (!d->view) {
332 return false;
333 }
334 return d->view->resourceProvider()->disablePressure();
335}
336
338{
339 if (!d->view) {
340 return;
341 }
342 d->view->resourceProvider()->setDisablePressure(value);
343}
344
345
347{
348 if (!d->view) return QList<Node *>();
349 if (!d->view->viewManager()) return QList<Node *>();
350 if (!d->view->viewManager()->nodeManager()) return QList<Node *>();
351
352 KisNodeList selectedNodes = d->view->viewManager()->nodeManager()->selectedNodes();
354}
355
356void View::showFloatingMessage(const QString &message, const QIcon& icon, int timeout, int priority)
357{
358 if (!d->view) return;
359
361 p = static_cast<KisFloatingMessage::Priority>(priority);
362
363 d->view->showFloatingMessage(message, icon, timeout, p);
364}
365
367{
368 if (!d->view->document()) return QTransform();
369 return d->view->canvasBase()->coordinatesConverter()->documentToFlakeTransform().inverted();
370}
371
373{
374 if (!d->view->document()) return QTransform();
375 return d->view->canvasBase()->coordinatesConverter()->flakeToWidgetTransform();
376}
377
379{
380 if (!d->view->document()) return QTransform();
381
382 const KisCoordinatesConverter* coordinatesConverter(d->view->canvasBase()->coordinatesConverter());
383 QTransform imageToFlakeTransform = coordinatesConverter->imageToDocumentTransform() * coordinatesConverter->documentToFlakeTransform();
384
385 return imageToFlakeTransform.inverted();
386}
float value(const T *src, size_t ch)
const Params2D p
Main window for Krita.
void setActiveView(KisView *view)
Set the active view, this will update the undo/redo actions.
Write API docs here.
Definition KoPattern.h:21
The ManagedColor class is a class to handle colors that are color managed. A managed color is a color...
KoColor color() const
KoResourceSP resource() const
Definition Resource.cpp:116
Definition View.h:25
~View() override
Definition View.cpp:45
void setBrushRotation(qreal brushRotation)
set the current rotation for brush tip
Definition View.cpp:267
float HDRExposure() const
Definition View.cpp:197
bool eraserMode() const
return current eraser mode status (active/inactive)
Definition View.cpp:297
void setHDRGamma(float gamma)
set the current HDR Gamma value
Definition View.cpp:218
View(KisView *view, QObject *parent=0)
Definition View.cpp:38
bool globalAlphaLock() const
return current global alpha lock mode (active/inactive)
Definition View.cpp:313
bool visible() const
Definition View.cpp:82
qreal patternSize() const
return the current pattern size for brush
Definition View.cpp:285
void setBackGroundColor(ManagedColor *color)
Definition View.cpp:146
void setBrushSize(qreal brushSize)
set the current size for brush
Definition View.cpp:243
void setCurrentBrushPreset(Resource *resource)
set the current selected preset
Definition View.cpp:158
Private *const d
Definition View.h:368
void setDisablePressure(bool value)
set current disabled pressure status
Definition View.cpp:337
void setGlobalAlphaLock(bool value)
set current global alpha lock mode active/inactive
Definition View.cpp:321
qreal paintingFlow() const
return the current flow for brush
Definition View.cpp:273
void setDocument(Document *document)
Definition View.cpp:76
void setCurrentPattern(Resource *resource)
set the current selected pattern
Definition View.cpp:169
float HDRGamma() const
Definition View.cpp:211
ManagedColor * foregroundColor() const
Definition View.cpp:128
friend class Window
Definition View.h:361
Resource * currentPattern() const
return the current selected pattern
Definition View.cpp:163
void setCurrentBlendingMode(const QString &blendingMode)
set the current blending mode for brush
Definition View.cpp:191
ManagedColor * backgroundColor() const
backgroundColor allows access to the currently active background color. This is nominally per canvas/...
Definition View.cpp:140
QTransform flakeToCanvasTransform() const
flakeToCanvasTransform The transformation of the canvas relative to the view without rotation and mir...
Definition View.cpp:372
QString currentBlendingMode() const
return the current blending mode for brush
Definition View.cpp:185
void showFloatingMessage(const QString &message, const QIcon &icon, int timeout, int priority)
showFloatingMessage displays a floating message box on the top-left corner of the canvas
Definition View.cpp:356
void setPaintingOpacity(qreal opacity)
set the current opacity for brush
Definition View.cpp:231
QTransform flakeToImageTransform() const
flakeToImageTransform The transformation of the image relative to the view without rotation and mirro...
Definition View.cpp:378
qreal paintingOpacity() const
return the current opacity for brush
Definition View.cpp:225
void activateResource(Resource *resource)
activateResource activates the given resource.
Definition View.cpp:108
Canvas * canvas() const
Definition View.cpp:96
void setHDRExposure(float exposure)
set the current HDR Exposure value
Definition View.cpp:204
qreal brushRotation() const
return the current rotation for brush tip
Definition View.cpp:261
KisView * view()
Definition View.cpp:103
void setPatternSize(qreal size)
set the current pattern size value for brush
Definition View.cpp:291
QList< Node * > selectedNodes() const
Definition View.cpp:346
qreal brushFade() const
return the current fade for brush
Definition View.cpp:249
Window * window() const
Definition View.cpp:60
Resource * currentBrushPreset() const
return the current selected preset
Definition View.cpp:152
void setPaintingFlow(qreal flow)
set the current flow value for brush
Definition View.cpp:279
bool operator==(const View &other) const
Definition View.cpp:50
QTransform flakeToDocumentTransform() const
flakeToDocumentTransform The transformation of the document relative to the view without rotation and...
Definition View.cpp:366
void setEraserMode(bool value)
set current eraser active/inactive
Definition View.cpp:305
Resource * currentGradient() const
return the current selected gradient
Definition View.cpp:174
void setVisible()
Definition View.cpp:88
bool operator!=(const View &other) const
Definition View.cpp:55
void setBrushFade(qreal brushFade)
set the current fade for brush
Definition View.cpp:255
void setForeGroundColor(ManagedColor *color)
Definition View.cpp:134
void setCurrentGradient(Resource *resource)
set the current selected gradient
Definition View.cpp:180
Document * document() const
Definition View.cpp:69
qreal brushSize() const
return the current size for brush
Definition View.cpp:237
bool disablePressure() const
return current disabled pressure status
Definition View.cpp:329
QList< Node * > createNodeList(KisNodeList kisnodes, KisImageWSP image)
const QString Patterns
const QString Gradients
const QString PaintOpPresets
virtual qreal currentGamma() const =0
virtual void setCurrentGamma(qreal value)=0
virtual void setCurrentExposure(qreal value)=0
virtual qreal currentExposure() const =0
QPointer< KisView > view
Definition View.cpp:35