8 #include <QScopedPointer>
10 #include <KoPattern.h>
11 #include <KoAbstractGradient.h>
12 #include <kis_paintop_preset.h>
14 #include <KisViewManager.h>
15 #include <kis_node_manager.h>
16 #include <kis_selection_manager.h>
17 #include <kis_canvas_resource_provider.h>
18 #include <kis_exposure_gamma_correction_interface.h>
19 #include <kis_paintop_box.h>
20 #include <KisMainWindow.h>
21 #include <KoCanvasBase.h>
22 #include <kis_canvas2.h>
23 #include <KisResourceTypes.h>
24 #include <KisDocument.h>
29 #include "ManagedColor.h"
31 #include "LibKisUtils.h"
34 struct View::Private {
39 View::View(KisView* view,
QObject *parent)
51 bool View::operator==(
const View &other)
const
53 return (d->view == other.d->view);
56 bool View::operator!=(
const View &other)
const
58 return !(operator==(other));
63 if (!d->view)
return 0;
64 KisMainWindow *mainwin = d->view->mainWindow();
72 if (!d->view)
return 0;
80 d->view = d->view->replaceBy(
document->document());
85 if (!d->view)
return false;
86 return d->view->isVisible();
92 KisMainWindow *mainwin = d->view->mainWindow();
93 mainwin->setActiveView(d->view);
94 mainwin->subWindowActivated();
99 if (!d->view)
return 0;
104 KisView *View::view()
111 if (!d->view)
return;
112 if (!resource)
return;
114 KoResourceSP r = resource->resource();
117 if (KoPatternSP pattern = r.dynamicCast<KoPattern>()) {
119 d->view->canvasBase()->resourceManager()->setResource(KoCanvasResource::CurrentPattern, value);
120 }
else if (KoAbstractGradientSP gradient = r.dynamicCast<KoAbstractGradient>()) {
122 d->view->canvasBase()->resourceManager()->setResource(KoCanvasResource::CurrentGradient, value);
123 }
else if (KoResourceSP preset = r.dynamicCast<KisPaintOpPreset>()) {
124 d->view->viewManager()->paintOpBox()->resourceSelected(preset);
131 if (!d->view)
return 0;
132 return new ManagedColor(d->view->resourceProvider()->fgColor());
137 if (!d->view)
return;
138 d->view->resourceProvider()->setFGColor(color->color());
143 if (!d->view)
return 0;
144 return new ManagedColor(d->view->resourceProvider()->bgColor());
149 if (!d->view)
return;
150 d->view->resourceProvider()->setBGColor(color->color());
153 Resource *View::currentBrushPreset()
const
155 if (!d->view)
return 0;
156 return new Resource(d->view->resourceProvider()->currentPreset(), ResourceType::PaintOpPresets);
159 void View::setCurrentBrushPreset(
Resource *resource)
164 Resource *View::currentPattern()
const
166 if (!d->view)
return 0;
167 return new Resource(d->view->resourceProvider()->currentPattern(), ResourceType::Patterns);
170 void View::setCurrentPattern(
Resource *resource)
175 Resource *View::currentGradient()
const
177 if (!d->view)
return 0;
178 return new Resource(d->view->resourceProvider()->currentGradient(), ResourceType::Gradients);
181 void View::setCurrentGradient(
Resource *resource)
186 QString View::currentBlendingMode()
const
188 if (!d->view)
return "";
189 return d->view->resourceProvider()->currentCompositeOp();
192 void View::setCurrentBlendingMode(
const QString &blendingMode)
194 if (!d->view)
return;
195 d->view->resourceProvider()->setCurrentCompositeOp(blendingMode);
198 float View::HDRExposure()
const
200 if (!d->view)
return 0.0;
201 KisExposureGammaCorrectionInterface *iface = d->view->canvasBase()->exposureGammaCorrectionInterface();
202 return iface->currentExposure();
205 void View::setHDRExposure(
float exposure)
207 if (!d->view)
return;
208 KisExposureGammaCorrectionInterface *iface = d->view->canvasBase()->exposureGammaCorrectionInterface();
209 iface->setCurrentExposure(exposure);
212 float View::HDRGamma()
const
214 if (!d->view)
return 0.0;
215 KisExposureGammaCorrectionInterface *iface = d->view->canvasBase()->exposureGammaCorrectionInterface();
216 return iface->currentGamma();
219 void View::setHDRGamma(
float gamma)
221 if (!d->view)
return;
222 KisExposureGammaCorrectionInterface *iface = d->view->canvasBase()->exposureGammaCorrectionInterface();
223 return iface->setCurrentGamma(gamma);
226 qreal View::paintingOpacity()
const
228 if (!d->view)
return 0.0;
229 return d->view->resourceProvider()->opacity();
232 void View::setPaintingOpacity(qreal opacity)
234 if (!d->view)
return;
235 d->view->resourceProvider()->setOpacity(opacity);
238 qreal View::brushSize()
const
240 if (!d->view)
return 0.0;
241 return d->view->resourceProvider()->size();
244 void View::setBrushSize(qreal brushSize)
246 if (!d->view)
return;
247 d->view->resourceProvider()->setSize(brushSize);
250 qreal View::paintingFlow()
const
252 if (!d->view)
return 0.0;
253 return d->view->resourceProvider()->flow();
256 void View::setPaintingFlow(qreal flow)
258 if (!d->view)
return;
259 d->view->resourceProvider()->setFlow(flow);
266 if (!d->view->viewManager()->nodeManager())
return QList<Node *>();
268 KisNodeList
selectedNodes = d->view->viewManager()->nodeManager()->selectedNodes();
269 return LibKisUtils::createNodeList(
selectedNodes, d->view->image());
274 if (!d->view)
return;
276 KisFloatingMessage::Priority p;
277 p =
static_cast<KisFloatingMessage::Priority
>(priority);
279 d->view->showFloatingMessage(
message, icon, timeout, p);
284 if (!d->view->document())
return QTransform();
285 return d->view->canvasBase()->coordinatesConverter()->documentToFlakeTransform().inverted();
290 if (!d->view->document())
return QTransform();
291 return d->view->canvasBase()->coordinatesConverter()->flakeToWidgetTransform();
296 if (!d->view->document())
return QTransform();
298 const KisCoordinatesConverter* coordinatesConverter(d->view->canvasBase()->coordinatesConverter());
299 QTransform imageToFlakeTransform = coordinatesConverter->imageToDocumentTransform() * coordinatesConverter->documentToFlakeTransform();
301 return imageToFlakeTransform.
inverted();