diff options
Diffstat (limited to 'kdesktop/kfileividesktop.h')
-rw-r--r-- | kdesktop/kfileividesktop.h | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/kdesktop/kfileividesktop.h b/kdesktop/kfileividesktop.h new file mode 100644 index 000000000..0fb764cd0 --- /dev/null +++ b/kdesktop/kfileividesktop.h @@ -0,0 +1,127 @@ +/* This file is proposed to be part of the KDE base. + * Copyright (C) 2003 Laur Ivan <laurivan@eircom.net> + * + * Many thanks to: + * - Bernardo Hung <deciare@gta.igs.net> for the enhanced shadow + * algorithm (currently used) + * - Tim Jansen <tim@tjansen.de> for the API updates and fixes. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License version 2 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef KFILE_IVI_DESKTOP +#define KFILE_IVI_DESKTOP + +#include <qcolor.h> +#include <qpixmap.h> +#include <qimage.h> +#include <qstring.h> +#include <kfileivi.h> + +/* + * The dither flags used to display the shadow image + */ +#define DITHER_FLAGS (Qt::DiffuseAlphaDither | Qt::ColorOnly | Qt::AvoidDither) + + +class QFont; +class KShadowEngine; + +/** + * This class replaces KFileIVI in the desktop only. + * If the shadow object is NULL, then the class should behave almost identical + * to its parent. + * @since 3.2 + */ +class KFileIVIDesktop : public KFileIVI +{ + public: + /** + * Constructor. It replicates the KFileIVI constructor and adds an + * optional shadow object. + * @param iconview the parent (iconview) + * @param fileitem the item theis object is supposed to draw + * @param size the default size of the drawn object + * @param shadow reference to the shadow object + */ + KFileIVIDesktop(KonqIconViewWidget *iconview, KFileItem* fileitem, int + size, KShadowEngine *shadow = 0L); + + /** + * Default destructor. Doesn't really do anything. + */ + ~KFileIVIDesktop(); + + protected: + /** + * Reimplements KIconView::calcRect to take the shadow metrics + * into account + */ + virtual void calcRect( const QString& _text ); + + /** + * Paints this item. Takes care of using the normal or alpha + * blending methods depending on the configuration. + * @param p the painter for drawing the item + * @param cg the base color group + */ + virtual void paintItem(QPainter *p, const QColorGroup &cg); + + /** + * Reimplements QIconView::paintFocus() to take the shadow + * metrics into account(); + */ + virtual void paintFocus( QPainter *p, const QColorGroup &cg ); + + /** + * Draws the shadow text. + * @param p the painter for drawing the item + * @param cg the base color group + */ + virtual void drawShadowedText(QPainter *p, const QColorGroup &cg); + + /** + * Builds the shadow. As the algorithm is pretty slow (at pixel level), + * This method is triggered only if the configuration has changed. + * @param p the painter for drawing the item + * @param align the shadow alignment + * @param shadowColor the shadow color + */ + virtual QImage *buildShadow(QPainter *p, const int align, QColor &shadowColor); + + protected: + void setNormalImage(QImage *newImage) { delete m_normalImage; m_normalImage = newImage; }; + void setSelectedImage(QImage *newImage) { delete m_selectedImage; m_selectedImage = newImage; }; + + QImage *normalImage() { return m_normalImage; }; + QImage *selectedImage() { return m_selectedImage; }; + + private: + bool shouldUpdateShadow(bool selected); + int shadowThickness() const; + + KShadowEngine *m_shadow; + + QImage *m_selectedImage; + QImage *m_normalImage; + + QString oldText; + + unsigned long _selectedUID; + unsigned long _normalUID; + +}; + +#endif |