/* JPEGs get special treatment. libjpeg supports fast shrink-on-read, * so if we have a JPEG, we can ask VIPS to load a lower resolution * version. */ static int thumbnail( const char *filename ) { VipsFormatClass *format; int shrink; if( verbose ) printf( "thumbnailing %s\n", filename ); if( !(format = vips_format_for_file( filename )) ) return( -1 ); if( verbose ) printf( "detected format as %s\n", VIPS_OBJECT_CLASS( format )->nickname ); shrink = 1; if( strcmp( VIPS_OBJECT_CLASS( format )->nickname, "jpeg" ) == 0 ) { IMAGE *im; /* This will just read in the header and is quick. */ if( !(im = im_open( filename, "r" )) ) return( -1 ); shrink = calculate_shrink( im->Xsize, im->Ysize, NULL ); im_close( im ); if( shrink > 8 ) shrink = 8; else if( shrink > 4 ) shrink = 4; else if( shrink > 2 ) shrink = 2; else shrink = 1; if( verbose ) printf( "using fast jpeg shrink, factor %d\n", shrink ); } return( thumbnail2( filename, shrink ) ); }
void VersionInfo::init() { setMinimumSize(QSize(16,400)); QFont boldFont = this->font(); boldFont.setBold(true); QDesktopWidget *desktop = QApplication::desktop(); double imageScale = ((double)desktop->availableGeometry(desktop->screenNumber(this)).width())/400.0; if (imageScale > 1.0) imageScale = 1.0; int imageSize = (int)(55 * imageScale); int finalSize = (int)(60 * imageScale); QVBoxLayout *vBoxLayout = new QVBoxLayout(this); vBoxLayout->setMargin( 0 ); vBoxLayout->setSpacing( 0 ); QGridLayout *gridLayout1 = new QGridLayout; gridLayout1->setSpacing( 4 ); gridLayout1->setMargin( 0 ); gridLayout1->setColumnMinimumWidth(0, 20 ); QLabel *qtopiaLogo = new QLabel(this); QThumbnail thumbnail(":image/qpe-logo"); qtopiaLogo->setPixmap(thumbnail.pixmap(QSize(imageSize, imageSize))); qtopiaLogo->setFixedSize( finalSize, finalSize ); gridLayout1->addWidget(qtopiaLogo, 0, 0, 1, 1); QVBoxLayout *vBoxLayout1 = new QVBoxLayout; vBoxLayout1->setMargin( 0 ); vBoxLayout1->setSpacing( 3 ); QLabel *qtopiaName = new QLabel(this); qtopiaName->setFont(boldFont); qtopiaName->setText(tr("QtMoko")); vBoxLayout1->addWidget(qtopiaName); QLabel *qtopiaVersion = new QLabel(this); qtopiaVersion->setWordWrap(true); qtopiaVersion->setText(tr("Version:") + ' ' + Qtopia::version() + '\n' + tr("Qt version:") + ' ' + QT_VERSION_STR); vBoxLayout1->addWidget(qtopiaVersion); vBoxLayout1->addSpacing( 10 ); QLabel *qtopiaCopyright = new QLabel(this); qtopiaCopyright->setText(tr( "Copyright \251 %1", "%1 = 'year'" ).arg(QT_EXTENDED_COPYRIGHT_YEAR)); vBoxLayout1->addWidget(qtopiaCopyright); QLabel* qtopiaCopyright1 = new QLabel( this ); qtopiaCopyright1->setWordWrap( true ); qtopiaCopyright1->setText( QT_EXTENDED_COPYRIGHT_COMPANY ); vBoxLayout1->addWidget(qtopiaCopyright1); vBoxLayout1->addSpacing( 10 ); QLabel *qtopiaBuild = new QLabel(this); qtopiaBuild->setWordWrap( true ); QString builder( BUILDER ); int atIndex = builder.indexOf( QChar('@') ); int dotIndex = -1; if ( atIndex >= 0 ) dotIndex = builder.indexOf( QChar('.'), atIndex ); if ( dotIndex >= 0 ) builder = builder.left( dotIndex ); qtopiaBuild->setText(tr("Built by\n%1", "%1 = name").arg(builder)); vBoxLayout1->addWidget(qtopiaBuild); qtopiaBuild = new QLabel(this); qtopiaBuild->setText(tr("Built on %1","1=date").arg(__DATE__)); vBoxLayout1->addWidget(qtopiaBuild); QSpacerItem *spacerItem = new QSpacerItem(20, 10, QSizePolicy::Minimum, QSizePolicy::MinimumExpanding); vBoxLayout1->addItem(spacerItem); gridLayout1->addLayout(vBoxLayout1, 0, 1, 2, 1); vBoxLayout->addLayout(gridLayout1); QGridLayout *gridLayout2 = new QGridLayout; gridLayout2->setColumnMinimumWidth(0, 20 ); gridLayout2->setSpacing( 4 ); gridLayout2->setMargin( 0 ); QLabel *linuxLogo = new QLabel(this); QThumbnail thumbnail2(":image/tux-logo"); linuxLogo->setPixmap(thumbnail2.pixmap(QSize(imageSize, imageSize))); linuxLogo->setFixedSize( finalSize, finalSize ); gridLayout2->addWidget(linuxLogo, 0, 0, 1, 1); QVBoxLayout *vBoxLayout2 = new QVBoxLayout; vBoxLayout2->setMargin( 0 ); vBoxLayout2->setSpacing( 3 ); QLabel *linuxName = new QLabel(this); linuxName->setFont(boldFont); linuxName->setText(tr("Linux Kernel")); vBoxLayout2->addWidget(linuxName); QString kernelVersionString; QString compiledByString; QFile file("/proc/version"); if(file.open(QFile::ReadOnly)) { QTextStream t( &file ); QString v; t >> v; t >> v; t >> v; kernelVersionString = v.left( 20 ); t >> v; compiledByString = v; file.close(); }