/* Gwenview - A simple image viewer for TDE Copyright 2000-2004 Aur�lien G�teau This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ // TQt #include #include #include #include // KDE #include #include #include // Local #include "miscconfig.h" #include "imageutils/jpegcontent.h" #include "imageutils/imageutils.h" #include "documentjpegloadedimpl.moc" namespace Gwenview { #undef ENABLE_LOG #undef LOG //#define ENABLE_LOG #ifdef ENABLE_LOG #define LOG(x) kdDebug() << k_funcinfo << x << endl #else #define LOG(x) ; #endif class DocumentJPEGLoadedImplPrivate { public: ImageUtils::JPEGContent mJPEGContent; }; DocumentJPEGLoadedImpl::DocumentJPEGLoadedImpl(Document* document, const TQByteArray& rawData) : DocumentLoadedImpl(document) { LOG("" << mDocument->url().prettyURL() << ", data size: " << rawData.size() ); d=new DocumentJPEGLoadedImplPrivate; d->mJPEGContent.loadFromData(rawData); } void DocumentJPEGLoadedImpl::init() { LOG(""); ImageUtils::Orientation orientation=d->mJPEGContent.orientation(); if (MiscConfig::autoRotateImages() && orientation!=ImageUtils::NOT_AVAILABLE && orientation!=ImageUtils::NORMAL) { d->mJPEGContent.transform(orientation); } DocumentLoadedImpl::init(); } DocumentJPEGLoadedImpl::~DocumentJPEGLoadedImpl() { delete d; } void DocumentJPEGLoadedImpl::transform(ImageUtils::Orientation orientation) { d->mJPEGContent.transform(orientation); setImage(ImageUtils::transform(mDocument->image(), orientation)); emitImageRectUpdated(); } TQString DocumentJPEGLoadedImpl::localSave(TQFile* file, const TQCString& format) const { if (qstrcmp(format, "JPEG")==0) { LOG("JPEG Reset orientation"); d->mJPEGContent.resetOrientation(); if (!d->mJPEGContent.thumbnail().isNull()) { d->mJPEGContent.setThumbnail( ImageUtils::scale( mDocument->image(), 128, 128, ImageUtils::SMOOTH_FAST, TQImage::ScaleMin)); } LOG("JPEG Lossless save"); if (!d->mJPEGContent.save(file)) { return i18n("Could not save this JPEG file."); } } else { TQString msg=DocumentLoadedImpl::localSave(file, format); if (!msg.isNull()) return msg; } return TQString(); } TQString DocumentJPEGLoadedImpl::comment() const { return d->mJPEGContent.comment(); } void DocumentJPEGLoadedImpl::setComment(const TQString& comment) { d->mJPEGContent.setComment(comment); } TQString DocumentJPEGLoadedImpl::aperture() const { return d->mJPEGContent.aperture(); } TQString DocumentJPEGLoadedImpl::exposureTime() const { return d->mJPEGContent.exposureTime(); } TQString DocumentJPEGLoadedImpl::iso() const { return d->mJPEGContent.iso(); } TQString DocumentJPEGLoadedImpl::focalLength() const { return d->mJPEGContent.focalLength(); } Document::CommentState DocumentJPEGLoadedImpl::commentState() const { return Document::WRITABLE; } } // namespace