Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > f3bf1ca4c6e298690f89b829a334a55b > files > 49

qtjambi-demo-4.3.3-3mdv2008.1.i586.rpm

/****************************************************************************
**
** Copyright (C) 1992-2007 Trolltech ASA. All rights reserved.
**
** This file is part of Qt Jambi.
**
** ** This file may be used under the terms of the GNU General Public
** License version 2.0 as published by the Free Software Foundation
** and appearing in the file LICENSE.GPL included in the packaging of
** this file.  Please review the following information to ensure GNU
** General Public Licensing requirements will be met:
** http://www.trolltech.com/products/qt/opensource.html
**
** If you are unsure which license is appropriate for your use, please
** review the following information:
** http://www.trolltech.com/products/qt/licensing.html or contact the
** sales department at sales@trolltech.com.

**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
****************************************************************************/

package com.trolltech.demos.imageviewer;

import com.trolltech.qt.core.*;
import com.trolltech.qt.gui.*;


public class LazyPixmap extends QObject {
    
    public static final QSize SMALL_SIZE = new QSize(32, 32);
    
    public Signal0 loaded = new Signal0();
    
    public LazyPixmap(String fileName) {
        this.fileName = fileName;
    }
    
    public void loadThumbNail() {
        QImage img = new QImage(fileName);
        
        assert !img.isNull();        
        
        QImage small = (img.width() > SMALL_SIZE.width()
                        || img.height() > SMALL_SIZE.height())
                        ? img.scaled(SMALL_SIZE, Qt.AspectRatioMode.KeepAspectRatio, Qt.TransformationMode.SmoothTransformation) 
                        : img.copy();

        synchronized(this){
            this.thumbNail = small;
            this.size = img.size();
            if(nativeId()!=0)
                loaded.emit();
        }
        img.dispose();
    }   

    public synchronized QImage image() { return new QImage(fileName); }
    public synchronized QSize size() { return size; }
    public synchronized QImage thumbNail() { return thumbNail; }
    public synchronized boolean isValid() { return thumbNail != null; }
    
    private String fileName;
    private QImage thumbNail;
    private QSize size;
}