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"