Source Code (Use browser search to find items of interest.)
Class Index
katalog'Item (./kdegraphics/katalog/item.h:22)
class Item : public QObject
{
Q_OBJECT
QImage mTnImg;
QPixmap mTn;
QString mComment;
QString mKeywords;
QString mLocation;
int mSize;
QSize mDimensions;
QImage *mImg;
Catalog *mCat;
public:
Item(QSize tnSize);
Item(const QString &path);
~Item();
bool loadImage(const KURL &location);
bool setImage(const QImage &img);
bool saveTo(KTarGz *tarFile, const QString &path);
bool loadFrom(const KTarDirectory *tarDir, const QString &path);
void setCatalog(Catalog *cat) { mCat = cat; }
Catalog *catalog() { return mCat; }
QPixmap thumbNail() { if (mTn.isNull()) mTn = mTnImg; return mTn; }
QString comment() { return mComment; }
QString location() { return mLocation; }
QString name();
int size() { return mSize; }
QSize dimensions() { return mDimensions; }
bool loadOk() { return mLoadOk; }
signals:
void destroyed(Item *);
protected:
QSize mTnSize;
bool mLoadOk;
};
katalog'Item::Item() (./kdegraphics/katalog/item.cpp:21)
Item::Item(QSize tnSize)
: mTnImg(), mSize(0), mTnSize(tnSize)
{
mLoadOk = false;
mImg = 0;
mCat = 0;
}
katalog'Item::Item() (./kdegraphics/katalog/item.cpp:29)
Item::Item(const QString &path)
{
printf("File =\"%s\"", path.ascii());
mLoadOk = false;
mImg = 0;
mCat = 0;
QFile f(path);
if (!f.open( IO_ReadOnly))
return;
Q_INT8 internalImg;
QDataStream s( &f );
s >> mComment;
s >> mKeywords;
s >> mLocation;
s >> mSize;
s >> mDimensions;
s >> internalImg;
f.close();
if (internalImg)
{
mImg = new QImage();
if (!mImg->load(path+".img.png"))
return;
}
if (!mTnImg.load(path+".png"))
return;
mLoadOk = (f.status() == IO_Ok);
}
katalog'Item::~Item() (./kdegraphics/katalog/item.cpp:63)
Item::~Item()
{
emit destroyed(this);
delete mImg;
}
QString
katalog'Item::name() (./kdegraphics/katalog/item.cpp:70)
Item::name()
{
if (mImg)
return mLocation;
KURL url = mLocation;
return url.filename();
}
bool
katalog'Item::loadImage() (./kdegraphics/katalog/item.cpp:81)
Item::loadImage(const KURL &location)
{
if (!location.isLocalFile())
{
printf("URL is not a local file.\n");
return false;
}
QFile file(location.path());
if (!file.exists())
{
printf("File does not exists (%s).\n", location.path().ascii());
return false;
}
mSize = file.size();
QImage img(location.path());
if (img.isNull())
{
printf("Error loading image (%s).\n", location.path().ascii());
return false;
}
mLocation = location.url();
mDimensions = img.size();
QSize newSize = mDimensions;
if (newSize.width() > mTnSize.width())
{
newSize.setHeight((newSize.height()* mTnSize.width()) / newSize.width());
newSize.setWidth(mTnSize.width());
}
if (newSize.height() > mTnSize.height())
{
newSize.setWidth((newSize.width()* mTnSize.height()) / newSize.height());
newSize.setHeight(mTnSize.height());
}
mTn = img.smoothScale(newSize.width(), newSize.height());
return true;
}
bool
katalog'Item::setImage() (./kdegraphics/katalog/item.cpp:129)
Item::setImage(const QImage &img)
{
mImg = new QImage(img);
mSize = 0;
if (img.isNull())
{
printf("Invalid image.\n");
return false;
}
mLocation = "<Image>";
mDimensions = img.size();
QSize newSize = mDimensions;
if (newSize.width() > mTnSize.width())
{
newSize.setHeight((newSize.height()* mTnSize.width()) / newSize.width());
newSize.setWidth(mTnSize.width());
}
if (newSize.height() > mTnSize.height())
{
newSize.setWidth((newSize.width()* mTnSize.height()) / newSize.height());
newSize.setHeight(mTnSize.height());
}
mTnImg = img.smoothScale(newSize.width(), newSize.height());
return true;
}
bool
katalog'Item::saveTo() (./kdegraphics/katalog/item.cpp:162)
Item::saveTo(KTarGz *tarFile, const QString &path)
{
printf("Saving to %s\n", path.ascii());
QString info;
info += QString("Comment = %1\n").arg( mComment);
info += QString("Keywords = %1\n").arg( mKeywords );
info += QString("Location = %1\n").arg( mLocation );
info += QString("Size = %1\n").arg( mSize );
info += QString("Dimensions = %1,%2\n").arg( mDimensions.height()).arg(mDimensions.width());
QCString encodedInfo = info.utf8();
tarFile->writeFile( path+".info", QString::null, QString::null,
encodedInfo.length(), encodedInfo);
QByteArray a;
QBuffer s(a);
s.open(IO_WriteOnly);
QImageIO io;
io.setImage(mTn.convertToImage());
io.setIODevice(&s);
io.setFormat("PNG");
io.write();
s.close();
tarFile->writeFile( path+".png", QString::null, QString::null,
a.size(), a);
return true;
}
bool
katalog'Item::loadFrom() (./kdegraphics/katalog/item.cpp:197)
Item::loadFrom(const KTarDirectory *tarDir, const QString &path)
{
QString filename = path+".info";
printf("Loading %s\n", filename.ascii());
const KTarFile *infoFile;
infoFile = dynamic_cast<const KTarFile *>(tarDir->entry(filename));
if (!infoFile)
{
fprintf(stderr, "Error loading file: missing '%s'\n", filename.ascii());
return false;
}
const QByteArray infoData = infoFile->data();
QString info = QString::fromUtf8( infoData.data(), infoData.size());
QStringList infoList = QStringList::split('\n', info);
for(QStringList::Iterator it = infoList.begin();
it != infoList.end();
it++)
{
QString item = *it;
if ( match(item, "Comment = "))
mComment = item;
else if ( match(item, "Keywords = "))
mKeywords = item;
else if ( match(item, "Location = "))
mLocation = item.stripWhiteSpace();
else if ( match(item, "Size = "))
mSize = item.stripWhiteSpace().toInt();
else if ( match(item, "Dimensions = "))
{
QStringList size = QStringList::split(',', item);
if (size.count() >= 2)
{
mDimensions = QSize( size[1].toInt(), size[0].toInt() );
}
}
}
filename = path+".png";
printf("Loading %s\n", filename.ascii());
const KTarFile *imageFile;
imageFile = dynamic_cast<const KTarFile *>(tarDir->entry(filename));
if (!imageFile)
{
fprintf(stderr, "Error loading file: missing '%s'\n", filename.ascii());
return false;
}
const QByteArray imgData = imageFile->data();
mTnImg.loadFromData((const uchar *) imgData.data(), imgData.size());
mLoadOk = true;
return true;
}