Source Code (Use browser search to find items of interest.)
Class Index
kview'KImageCanvas (./kdegraphics/kview/canvas.h:24)
class KImageCanvas : public QScrollView
{
Q_OBJECT
public:
enum Error { OK, BadPath, BadFormat, NoMemory };
/**
* KImageCanvas Constructor
*/
KImageCanvas( QWidget *parent = 0 );
/**
* KImageCanvas Destructor
*/
virtual ~KImageCanvas();
/**
* Check canvas status.
* @return Status code
* @see ::Error
*/
Error status() const;
public:
/**
*
*/
int load( const char *file, const char *URL=0, bool max = false );
/**
*
*/
bool save( const char *URL, const char *format=0 );
/**
* Resets the image to as loaded.
*/
void reset();
/**
* Clears the image to blank.
*/
void clear();
/**
* Transform the image by the matrix.
*/
void transformImage( const QWMatrix& mat );
/**
* Tile the image to the desktop
*/
void tileToDesktop() const;
/**
*
*/
void maxToDesktop() const;
/**
*
*/
void maxpectToDesktop() const;
/**
* Get the current image.
*/
QImage getImage() const;
/**
* Get the url for the current image.
*/
QString url() const;
void copyImage( QPaintDevice *dest ) const;
KVImageHolder *client() { return _client; }
public slots:
void setImage( const QImage& );
/**
* Crop image to the current selection, if any.
* If there is no selection, nothing happens.
*/
void cropImage();
void maxToWin();
void maxpectToWin();
// image scrolling
void pageDown() { verticalScrollBar()->addPage(); }
void pageUp() { verticalScrollBar()->subtractPage(); }
void lineDown() { verticalScrollBar()->addLine(); }
void lineUp() { verticalScrollBar()->subtractLine(); }
void pageRight() { horizontalScrollBar()->addPage(); }
void pageLeft() { horizontalScrollBar()->subtractPage(); }
void lineRight() { horizontalScrollBar()->addLine(); }
void lineLeft() { horizontalScrollBar()->subtractLine(); }
protected:
/**
*
*/
void resizeEvent( QResizeEvent * );
void mouseReleaseEvent( QMouseEvent * );
/**
* Sets the status.
*/
void setStatus( Error );
signals:
/**
*
*/
void imageSizeChanged();
void contextPress(const QPoint&);
private:
Error _status;
QString _file;
QSize _originalSize;
KVImageHolder *_client;
QPixmap *_orig;
/**
* Returns a pixmap that is to be used for editing.
*/
QPixmap *transPixmap();
};
inline void KImageCanvas::setStatus( Error e )
{
_status = e;
}
inline QString KImageCanvas::url() const
{
return _file;
}
/**
* Image widget, used as child in canvas.
*/
kview'KImageCanvas::KImageCanvas() (./kdegraphics/kview/canvas.cpp:28)
KImageCanvas::KImageCanvas( QWidget *parent )
: QScrollView( parent ),
_status( OK ),
_file( "" ),
_client( 0 ),
_orig( 0 )
{
_client = new KVImageHolder( this );
connect(_client, SIGNAL( contextPress(const QPoint&) ),
this, SIGNAL ( contextPress(const QPoint&) ));
addChild( _client );
_client->setAutoResize( TRUE );
_client->hide();
}
kview'KImageCanvas::~KImageCanvas() (./kdegraphics/kview/canvas.cpp:45)
KImageCanvas::~KImageCanvas()
{
delete _orig;
}
KImageCanvas::Error KImageCanvas::status() const
{
return _status;
}
kview'KImageCanvas::load() (./kdegraphics/kview/canvas.cpp:55)
int KImageCanvas::load( const char *file, const char *URL,
bool max )
{
if( file == 0 ) {
setStatus( BadPath );
return 0;
}
QString realfile = file;
bool std = false;
if( realfile == "-") {
// stdin
std = true;
realfile = loadStdin();
if( realfile.isEmpty() ) {
setStatus( BadPath );
return 0;
}
}
static int allocContext = 0;
if( allocContext ) {
QColor::destroyAllocContext( allocContext );
}
allocContext = QColor::enterAllocContext();
QApplication::setOverrideCursor( WaitCursor );
QPixmap newImage;
bool loadOK = newImage.load( realfile );
if( !loadOK && realfile.contains( ".tga", false ) ) {
loadOK = newImage.load( realfile, "TGA" );
}
QColor::leaveAllocContext();
if( std ) {
unlink( realfile );
}
if( loadOK ) {
delete _orig; // delete old buffered image
_orig = 0;
_client->move( 0, 0 );
_originalSize = size();
if ( max ) {
maxpect( this, &newImage );
}
_client->setImagePix( newImage );
_client->show();
updateScrollBars();
_file = ( URL ? URL : realfile.data() );
setStatus( OK );
setCaption( _file );
QApplication::restoreOverrideCursor();
return -1;
}
else {
warning( "Couldn't open %s", realfile.data() );
setStatus( BadPath );
}
QApplication::restoreOverrideCursor();
return 0;
}
kview'KImageCanvas::save() (./kdegraphics/kview/canvas.cpp:128)
bool KImageCanvas::save( const char *urls, const char *format )
{
if( urls == 0 ) {
warning( "KImageCanvas::save called with null url" );
}
if( format == 0 ) {
format = "BMP";
}
return _client->imagePix()->save( urls, format );
}
kview'KImageCanvas::reset() (./kdegraphics/kview/canvas.cpp:141)
void KImageCanvas::reset()
{
if( _orig == 0 ) {
return;
}
_client->setImagePix( *_orig );
emit imageSizeChanged();
}
kview'KImageCanvas::clear() (./kdegraphics/kview/canvas.cpp:151)
void KImageCanvas::clear()
{
_client->setBackgroundColor( QColor(0,0,0) );
_client->resize( 0, 0 );
}
kview'KImageCanvas::transformImage() (./kdegraphics/kview/canvas.cpp:157)
void KImageCanvas::transformImage( const QWMatrix& mat )
{
const QPixmap *image = transPixmap();
if( image == 0 ) {
return;
}
QApplication::setOverrideCursor( waitCursor );
QPixmap newimage = _orig->xForm( mat );
_client->clearSelection();
_client->setImagePix( newimage );
QApplication::restoreOverrideCursor();
}
kview'KImageCanvas::tileToDesktop() (./kdegraphics/kview/canvas.cpp:174)
void KImageCanvas::tileToDesktop() const
{
const QPixmap *image = _client->imagePix();
if( image == 0 ) {
return;
}
qApp->desktop()->setBackgroundPixmap(
*image );
}
kview'KImageCanvas::maxToDesktop() (./kdegraphics/kview/canvas.cpp:187)
void KImageCanvas::maxToDesktop() const
{
if( _client->imagePix() == 0 )
return;
QPixmap image = *(_client->imagePix());
int h = qApp->desktop()->height();
int w = qApp->desktop()->width();
image.convertFromImage(image.convertToImage().smoothScale(w,h));
qApp->desktop()->setBackgroundPixmap( image );
}
kview'KImageCanvas::maxpectToDesktop() (./kdegraphics/kview/canvas.cpp:203)
void KImageCanvas::maxpectToDesktop() const
{
if( _client->imagePix() == 0 )
return;
QPixmap image = *(_client->imagePix());
double dh = (double)qApp->desktop()->height()/(double)image.height();
double dw = (double)qApp->desktop()->width()/(double)image.width();
double d = ( dh < dw ? dh : dw );
image.convertFromImage(image.convertToImage().smoothScale(
int(d*image.width()),
int (d*image.height())));
qApp->desktop()->setBackgroundPixmap( image );
}
kview'KImageCanvas::resizeEvent() (./kdegraphics/kview/canvas.cpp:232)
void KImageCanvas::resizeEvent( QResizeEvent *ev )
{
QScrollView::resizeEvent( ev );
emit imageSizeChanged();
}
kview'KImageCanvas::getImage() (./kdegraphics/kview/canvas.cpp:239)
QImage KImageCanvas::getImage() const
{
return _client->imagePix()->convertToImage();
}
kview'KImageCanvas::setImage() (./kdegraphics/kview/canvas.cpp:244)
void KImageCanvas::setImage( const QImage& image )
{
transPixmap();
QPixmap pixmap;
pixmap.convertFromImage( image );
_client->setImagePix( pixmap );
emit imageSizeChanged();
}
kview'KImageCanvas::transPixmap() (./kdegraphics/kview/canvas.cpp:256)
QPixmap *KImageCanvas::transPixmap()
{
QPixmap *client = _client->imagePix();
if( client == 0 ) {
return 0;
}
if( _orig == 0 ) {
_orig = new QPixmap( *client );
}
return client;
}
kview'KImageCanvas::cropImage() (./kdegraphics/kview/canvas.cpp:271)
void KImageCanvas::cropImage()
{
QRect select = _client->selected();
if ( select.isNull() ) {
return;
}
transPixmap();
QPixmap *oldpix = _client->imagePix();
QPixmap newpix( select.width(), select.height() );
bitBlt( &newpix, 0, 0, oldpix, select.left(),
select.top(), select.width(), select.height(), CopyROP );
_client->setImagePix( newpix );
emit imageSizeChanged();
}
kview'KImageCanvas::maxToWin() (./kdegraphics/kview/canvas.cpp:329)
void KImageCanvas::maxToWin()
{
transPixmap();
if( _client->imagePix() == 0 )
return;
QPixmap image = *(_client->imagePix());
image.convertFromImage(image.convertToImage().smoothScale(
width(),height()));
_client->setImagePix( image );
emit imageSizeChanged();
}
kview'KImageCanvas::maxpectToWin() (./kdegraphics/kview/canvas.cpp:345)
void KImageCanvas::maxpectToWin()
{
transPixmap();
if( _client->imagePix() == 0 )
return;
QPixmap image = *(_client->imagePix());
double dh = (double)height()/(double)image.height();
double dw = (double)width()/(double)image.width();
double d = ( dh < dw ? dh : dw );
image.convertFromImage(image.convertToImage().smoothScale(int(d*image.width()),
int (d*image.height())));
_client->setImagePix( image );
emit imageSizeChanged();
}
kview'KImageCanvas::copyImage() (./kdegraphics/kview/canvas.cpp:367)
void KImageCanvas::copyImage( QPaintDevice *dest ) const
{
QPainter painter( dest );
painter.drawPixmap( 0, 0, *(_client->imagePix()) );
}
kview'KImageCanvas::mouseReleaseEvent() (./kdegraphics/kview/canvas.cpp:373)
void KImageCanvas::mouseReleaseEvent( QMouseEvent *ev )
{
// wheel support
// maybe one day this will work...
#if 0
switch ( ev->button() ) {
case 4: lineUp(); break;
case 5: lineDown(); break;
default:
QScrollView::mouseReleaseEvent( ev );
}
#else
QScrollView::mouseReleaseEvent( ev );
#endif
}
/*
******************************
* KVImageHolder implementation
*/
kview'KImageCanvas::url() (./kdegraphics/kview/canvas.h:166)
inline QString KImageCanvas::url() const
{
return _file;
}
/**
* Image widget, used as child in canvas.
*/