1 // vim: set tabstop=4 shiftwidth=4 expandtab:
2 /*
3 Gwenview: an image viewer
4 Copyright 2008 Aurélien Gâteau <agateau@kde.org>
5 
6 This program is free software; you can redistribute it and/or
7 modify it under the terms of the GNU General Public License
8 as published by the Free Software Foundation; either version 2
9 of the License, or (at your option) any later version.
10 
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 GNU General Public License for more details.
15 
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 51 Franklin Street, Fifth Floor, Cambridge, MA 02110-1301, USA.
19 
20 */
21 // Self
22 #include "rasterimageviewadapter.h"
23 
24 // Local
25 #include <lib/document/documentfactory.h>
26 #include <lib/documentview/rasterimageview.h>
27 #include <lib/gwenviewconfig.h>
28 
29 #include "alphabackgrounditem.h"
30 
31 // KF
32 
33 // Qt
34 #include <QUrl>
35 
36 namespace Gwenview
37 {
38 //// RasterImageViewAdapter ////
39 struct RasterImageViewAdapterPrivate {
40     RasterImageViewAdapter *q;
41     RasterImageView *mView;
42 };
43 
RasterImageViewAdapter()44 RasterImageViewAdapter::RasterImageViewAdapter()
45     : d(new RasterImageViewAdapterPrivate)
46 {
47     d->q = this;
48     d->mView = new RasterImageView;
49     connect(d->mView, &RasterImageView::zoomChanged, this, &RasterImageViewAdapter::zoomChanged);
50     connect(d->mView, &RasterImageView::zoomToFitChanged, this, &RasterImageViewAdapter::zoomToFitChanged);
51     connect(d->mView, &RasterImageView::zoomToFillChanged, this, &RasterImageViewAdapter::zoomToFillChanged);
52     connect(d->mView, &RasterImageView::zoomInRequested, this, &RasterImageViewAdapter::zoomInRequested);
53     connect(d->mView, &RasterImageView::zoomOutRequested, this, &RasterImageViewAdapter::zoomOutRequested);
54     connect(d->mView, &RasterImageView::scrollPosChanged, this, &RasterImageViewAdapter::scrollPosChanged);
55     connect(d->mView, &RasterImageView::completed, this, &RasterImageViewAdapter::completed);
56     connect(d->mView, &RasterImageView::previousImageRequested, this, &RasterImageViewAdapter::previousImageRequested);
57     connect(d->mView, &RasterImageView::nextImageRequested, this, &RasterImageViewAdapter::nextImageRequested);
58     connect(d->mView, &RasterImageView::toggleFullScreenRequested, this, &RasterImageViewAdapter::toggleFullScreenRequested);
59     setWidget(d->mView);
60 }
61 
~RasterImageViewAdapter()62 RasterImageViewAdapter::~RasterImageViewAdapter()
63 {
64     delete d;
65 }
66 
cursor() const67 QCursor RasterImageViewAdapter::cursor() const
68 {
69     return d->mView->cursor();
70 }
71 
setCursor(const QCursor & cursor)72 void RasterImageViewAdapter::setCursor(const QCursor &cursor)
73 {
74     d->mView->setCursor(cursor);
75 }
76 
setDocument(const Document::Ptr & doc)77 void RasterImageViewAdapter::setDocument(const Document::Ptr &doc)
78 {
79     d->mView->setDocument(doc);
80 
81     connect(doc.data(), &Document::loadingFailed, this, &RasterImageViewAdapter::slotLoadingFailed);
82     if (doc->loadingState() == Document::LoadingFailed) {
83         slotLoadingFailed();
84     }
85 }
86 
zoom() const87 qreal RasterImageViewAdapter::zoom() const
88 {
89     return d->mView->zoom();
90 }
91 
setZoomToFit(bool on)92 void RasterImageViewAdapter::setZoomToFit(bool on)
93 {
94     d->mView->setZoomToFit(on);
95 }
96 
setZoomToFill(bool on,const QPointF & center)97 void RasterImageViewAdapter::setZoomToFill(bool on, const QPointF &center)
98 {
99     d->mView->setZoomToFill(on, center);
100 }
101 
zoomToFit() const102 bool RasterImageViewAdapter::zoomToFit() const
103 {
104     return d->mView->zoomToFit();
105 }
106 
zoomToFill() const107 bool RasterImageViewAdapter::zoomToFill() const
108 {
109     return d->mView->zoomToFill();
110 }
111 
setZoom(qreal zoom,const QPointF & center)112 void RasterImageViewAdapter::setZoom(qreal zoom, const QPointF &center)
113 {
114     d->mView->setZoom(zoom, center);
115 }
116 
computeZoomToFit() const117 qreal RasterImageViewAdapter::computeZoomToFit() const
118 {
119     return d->mView->computeZoomToFit();
120 }
121 
computeZoomToFill() const122 qreal RasterImageViewAdapter::computeZoomToFill() const
123 {
124     return d->mView->computeZoomToFill();
125 }
126 
document() const127 Document::Ptr RasterImageViewAdapter::document() const
128 {
129     return d->mView->document();
130 }
131 
slotLoadingFailed()132 void RasterImageViewAdapter::slotLoadingFailed()
133 {
134     d->mView->setDocument(Document::Ptr());
135 }
136 
loadConfig()137 void RasterImageViewAdapter::loadConfig()
138 {
139     d->mView->backgroundItem()->setMode(GwenviewConfig::alphaBackgroundMode());
140     d->mView->backgroundItem()->setColor(GwenviewConfig::alphaBackgroundColor());
141     d->mView->setRenderingIntent(GwenviewConfig::renderingIntent());
142     d->mView->setEnlargeSmallerImages(GwenviewConfig::enlargeSmallerImages());
143     d->mView->resetMonitorICC();
144 }
145 
rasterImageView() const146 RasterImageView *RasterImageViewAdapter::rasterImageView() const
147 {
148     return d->mView;
149 }
150 
imageView() const151 AbstractImageView *RasterImageViewAdapter::imageView() const
152 {
153     return d->mView;
154 }
155 
scrollPos() const156 QPointF RasterImageViewAdapter::scrollPos() const
157 {
158     return d->mView->scrollPos();
159 }
160 
setScrollPos(const QPointF & pos)161 void RasterImageViewAdapter::setScrollPos(const QPointF &pos)
162 {
163     d->mView->setScrollPos(pos);
164 }
165 
visibleDocumentRect() const166 QRectF RasterImageViewAdapter::visibleDocumentRect() const
167 {
168     return QRectF(d->mView->imageOffset(), d->mView->visibleImageSize());
169 }
170 
171 } // namespace
172