/* * Copyright (c) 1999 Matthias Elter * Copyright (c) 2003 Patrick Julien #include "kis_resource.h" #include "kis_global.h" #include "kis_icon_item.h" #define THUMB_SIZE 30 KisIconItem::KisIconItem(KisResource *resource) { m_resource = resource; validPixmap = false; validThumb = false; updatePixmaps(); } KisIconItem::~KisIconItem() { } void KisIconItem::updatePixmaps() { validPixmap = false; validThumb = false; if (m_resource && m_resource->valid()) { TQImage img = m_resource->img(); if (img.isNull()) { m_resource->setValid(false); m_resource = 0; return; } if (img.width() > THUMB_SIZE || img.height() > THUMB_SIZE) { TQImage thumb = img; TQ_INT32 xsize = THUMB_SIZE; TQ_INT32 ysize = THUMB_SIZE; TQ_INT32 picW = thumb.width(); TQ_INT32 picH = thumb.height(); if (picW > picH) { float yFactor = (float)((float)(float)picH / (float)picW); ysize = (TQ_INT32)(yFactor * (float)THUMB_SIZE); if (ysize > THUMB_SIZE) ysize = THUMB_SIZE; } else if (picW < picH) { float xFactor = (float)((float)picW / (float)picH); xsize = (TQ_INT32)(xFactor * (float)THUMB_SIZE); if (xsize > THUMB_SIZE) xsize = THUMB_SIZE; } thumb = thumb.smoothScale(xsize, ysize); if (!thumb.isNull()) { m_thumb = TQPixmap(thumb); validThumb = !m_thumb.isNull(); } } img = img.convertDepth(32); m_pixmap = TQPixmap(img); validPixmap = true; } } TQPixmap& KisIconItem::pixmap() const { return const_cast(m_pixmap); } TQPixmap& KisIconItem::thumbPixmap() const { return const_cast(m_thumb); } KisResource *KisIconItem::resource() const { return m_resource; } int KisIconItem::compare(const KoIconItem *o) const { const KisIconItem *other = dynamic_cast(o); if (other != 0) { return m_resource->name().localeAwareCompare(other->m_resource->name()); } else { return 0; } }