diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-01-20 01:29:50 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-01-20 01:29:50 +0000 |
commit | 8362bf63dea22bbf6736609b0f49c152f975eb63 (patch) | |
tree | 0eea3928e39e50fae91d4e68b21b1e6cbae25604 /kpresenter/KPrPicturePreview.cpp | |
download | koffice-8362bf63dea22bbf6736609b0f49c152f975eb63.tar.gz koffice-8362bf63dea22bbf6736609b0f49c152f975eb63.zip |
Added old abandoned KDE3 version of koffice
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/koffice@1077364 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kpresenter/KPrPicturePreview.cpp')
-rw-r--r-- | kpresenter/KPrPicturePreview.cpp | 307 |
1 files changed, 307 insertions, 0 deletions
diff --git a/kpresenter/KPrPicturePreview.cpp b/kpresenter/KPrPicturePreview.cpp new file mode 100644 index 00000000..7dd8cf8c --- /dev/null +++ b/kpresenter/KPrPicturePreview.cpp @@ -0,0 +1,307 @@ +// -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- +/* This file is part of the KDE project + Copyright (C) 2005 Thorsten Zachmann <[email protected]> + + The code is based on work of + Copyright (C) 2002 Toshitaka Fujioka <[email protected]> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. +*/ + +#include "KPrPicturePreview.h" + +#include <qimage.h> +#include <qpainter.h> + + +KPrPicturePreview::KPrPicturePreview( QWidget* parent, const char* name) +: QFrame( parent, name ) +, mirrorType( PM_NORMAL ) +, depth( 0 ) +, swapRGB( false ) +, bright( 0 ) +, grayscal( false ) +{ + setFrameStyle( WinPanel | Sunken ); + setMinimumSize( 300, 200 ); +} + + +void KPrPicturePreview::drawContents( QPainter *painter ) +{ + QSize ext = contentsRect().size(); + + QPixmap _pix = origPixmap; + QImage img( _pix.convertToImage().smoothScale( ext.width(),ext.height(), QImage::ScaleMin ) ); + + bool _horizontal = false; + bool _vertical = false; + if ( mirrorType == PM_HORIZONTAL ) + _horizontal = true; + else if ( mirrorType == PM_VERTICAL ) + _vertical = true; + else if ( mirrorType == PM_HORIZONTALANDVERTICAL ) { + _horizontal = true; + _vertical = true; + } + + img = img.mirror( _horizontal, _vertical ); + + if ( depth != 0 ) { + QImage tmpImg = img.convertDepth( depth ); + if ( !tmpImg.isNull() ) + img = tmpImg; + } + + if ( swapRGB ) + img = img.swapRGB(); + + + if ( grayscal ) { + if ( depth == 1 || depth == 8 ) { + for ( int i = 0; i < img.numColors(); ++i ) { + QRgb rgb = img.color( i ); + int gray = qGray( rgb ); + rgb = qRgb( gray, gray, gray ); + img.setColor( i, rgb ); + } + } + else { + int _width = img.width(); + int _height = img.height(); + int _x = 0; + int _y = 0; + + for ( _x = 0; _x < _width; ++_x ) { + for ( _y = 0; _y < _height; ++_y ) { + if ( img.valid( _x, _y ) ) { + QRgb rgb = img.pixel( _x, _y ); + int gray = qGray( rgb ); + rgb = qRgb( gray, gray, gray ); + img.setPixel( _x, _y, rgb ); + } + } + } + } + } + + + if ( bright != 0 ) { + if ( depth == 1 || depth == 8 ) { + for ( int i = 0; i < img.numColors(); ++i ) { + QRgb rgb = img.color( i ); + QColor c( rgb ); + + if ( bright > 0 ) + rgb = c.light( 100 + bright ).rgb(); + else + rgb = c.dark( 100 + abs( bright ) ).rgb(); + + img.setColor( i, rgb ); + } + } + else { + int _width = img.width(); + int _height = img.height(); + int _x = 0; + int _y = 0; + + for ( _x = 0; _x < _width; ++_x ) { + for ( _y = 0; _y < _height; ++_y ) { + if ( img.valid( _x, _y ) ) { + QRgb rgb = img.pixel( _x, _y ); + QColor c( rgb ); + + if ( bright > 0 ) + rgb = c.light( 100 + bright ).rgb(); + else + rgb = c.dark( 100 + abs( bright ) ).rgb(); + + img.setPixel( _x, _y, rgb ); + } + } + } + } + } + + _pix.convertFromImage( img ); + + QPixmap tmpPix( _pix.size() ); + tmpPix.fill( Qt::white ); + + QPainter _p; + _p.begin( &tmpPix ); + _p.drawPixmap( 0, 0, _pix ); + _p.end(); + + QSize _pixSize = _pix.size(); + int _x = 0, _y = 0; + int w = _pixSize.width(), h = _pixSize.height(); + _x = ( ext.width() - w ) / 2; + _y = ( ext.height() - h ) / 2; + + painter->drawPixmap( _x, _y, tmpPix ); +} + + +void KPrPicturePreview::slotNormalPicture() +{ + if ( mirrorType != PM_NORMAL ) + { + mirrorType = PM_NORMAL; + repaint( false ); + } +} + + +void KPrPicturePreview::slotHorizontalMirrorPicture() +{ + if ( mirrorType != PM_HORIZONTAL ) + { + mirrorType = PM_HORIZONTAL; + repaint( false ); + } +} + + +void KPrPicturePreview::slotVerticalMirrorPicture() +{ + if ( mirrorType != PM_VERTICAL ) + { + mirrorType = PM_VERTICAL; + repaint( false ); + } +} + + +void KPrPicturePreview::slotHorizontalAndVerticalMirrorPicture() +{ + if ( mirrorType != PM_HORIZONTALANDVERTICAL ) + { + mirrorType = PM_HORIZONTALANDVERTICAL; + repaint( false ); + } +} + + +void KPrPicturePreview::slotPictureDepth0() +{ + if ( depth !=0 ) + { + depth = 0; + repaint( false ); + } +} + + +void KPrPicturePreview::slotPictureDepth1() +{ + if ( depth != 1 ) + { + depth = 1; + repaint( false ); + } +} + + +void KPrPicturePreview::slotPictureDepth8() +{ + if ( depth != 8) + { + depth = 8; + repaint( false ); + } +} + + +void KPrPicturePreview::slotPictureDepth16() +{ + if ( depth != 16 ) + { + depth = 16; + repaint( false ); + } +} + + +void KPrPicturePreview::slotPictureDepth32() +{ + if ( depth !=32 ) + { + depth = 32; + repaint( false ); + } +} + + +void KPrPicturePreview::slotSwapRGBPicture( bool _on ) +{ + if ( swapRGB != _on ) + { + swapRGB = _on; + repaint( false ); + } +} + + +void KPrPicturePreview::slotGrayscalPicture( bool _on ) +{ + if ( grayscal != _on ) + { + grayscal = _on; + repaint( false ); + } +} + + +void KPrPicturePreview::slotBrightValue( int _value ) +{ + if ( bright != _value ) + { + bright = _value; + repaint( false ); + } +} + + +void KPrPicturePreview::setDepth( int _depth) +{ + if ( _depth != depth ) + { + depth = _depth; + repaint( false ); + } +} + + +void KPrPicturePreview::setMirrorType (PictureMirrorType _t) +{ + if ( mirrorType != _t ) + { + mirrorType = _t; + repaint( false ); + } +} + + +void KPrPicturePreview::setPicturePixmap(const QPixmap &_pixmap) +{ + origPixmap = _pixmap; + repaint( false ); +} + + +#include "KPrPicturePreview.moc" |