File indexing completed on 2024-05-12 15:59:04

0001 /*
0002  *  SPDX-FileCopyrightText: 2016 Boudewijn Rempt <boud@valdyas.org>
0003  *
0004  *  SPDX-License-Identifier: LGPL-2.0-or-later
0005  */
0006 #include "Canvas.h"
0007 #include <KoCanvasBase.h>
0008 #include <kis_canvas2.h>
0009 #include <KisView.h>
0010 #include <KoCanvasController.h>
0011 #include <kis_canvas_controller.h>
0012 #include <kis_zoom_manager.h>
0013 #include <QPointer>
0014 #include <View.h>
0015 
0016 struct Canvas::Private {
0017     Private() {}
0018     KisCanvas2 *canvas {0};
0019 };
0020 
0021 Canvas::Canvas(KoCanvasBase *canvas, QObject *parent)
0022     : QObject(parent)
0023     , d(new Private)
0024 {
0025     d->canvas = static_cast<KisCanvas2*>(canvas);
0026 }
0027 
0028 Canvas::~Canvas()
0029 {
0030     delete d;
0031 }
0032 
0033 
0034 bool Canvas::operator==(const Canvas &other) const
0035 {
0036     return (d->canvas == other.d->canvas);
0037 }
0038 
0039 bool Canvas::operator!=(const Canvas &other) const
0040 {
0041     return !(operator==(other));
0042 }
0043 
0044 
0045 qreal Canvas::zoomLevel() const
0046 {
0047     if (!d->canvas) return 1.0;
0048     return d->canvas->imageView()->zoomManager()->zoom();
0049 }
0050 
0051 void Canvas::setZoomLevel(qreal value)
0052 {
0053     if (!d->canvas) return;
0054     d->canvas->imageView()->zoomController()->setZoom(KoZoomMode::ZOOM_CONSTANT, value);
0055 }
0056 
0057 void Canvas::resetZoom()
0058 {
0059     if (!d->canvas) return;
0060     d->canvas->imageView()->zoomManager()->zoomTo100();
0061 }
0062 
0063 
0064 void Canvas::resetRotation()
0065 {
0066     if (!d->canvas) return;
0067     d->canvas->imageView()->canvasController()->resetCanvasRotation();
0068 }
0069 
0070 qreal Canvas::rotation() const
0071 {
0072     if (!d->canvas) return 0;
0073     return d->canvas->imageView()->canvasController()->rotation();
0074 }
0075 
0076 void Canvas::setRotation(qreal angle)
0077 {
0078     if (!d->canvas) return;
0079     d->canvas->imageView()->canvasController()->rotateCanvas(angle - rotation());
0080 }
0081 
0082 
0083 bool Canvas::mirror() const
0084 {
0085     if (!d->canvas) return false;
0086     return d->canvas->imageView()->canvasIsMirrored();
0087 }
0088 
0089 void Canvas::setMirror(bool value)
0090 {
0091     if (!d->canvas) return;
0092     d->canvas->imageView()->canvasController()->mirrorCanvas(value);
0093 }
0094 
0095 View *Canvas::view() const
0096 {
0097     if (!d->canvas) return 0;
0098     View *view = new View(d->canvas->imageView());
0099     return view;
0100 }
0101 
0102 KisDisplayColorConverter *Canvas::displayColorConverter() const
0103 {
0104     if (!d->canvas) return 0;
0105     return d->canvas->displayColorConverter();
0106 }
0107 
0108 bool Canvas::wrapAroundMode() const
0109 {
0110     if (!d->canvas) return false;
0111     return d->canvas->imageView()->canvasController()->wrapAroundMode();
0112 }
0113 
0114 void Canvas::setWrapAroundMode(bool enable)
0115 {
0116     if (!d->canvas) return;
0117     d->canvas->imageView()->canvasController()->slotToggleWrapAroundMode(enable);
0118 }
0119 
0120 bool Canvas::levelOfDetailMode() const
0121 {
0122     if (!d->canvas) return false;
0123     return d->canvas->imageView()->canvasController()->levelOfDetailMode();
0124 }
0125 
0126 void Canvas::setLevelOfDetailMode(bool enable)
0127 {
0128     if (!d->canvas) return;
0129     return d->canvas->imageView()->canvasController()->slotToggleLevelOfDetailMode(enable);
0130 }
0131 
0132 #include "moc_Canvas.cpp"