diff options
Diffstat (limited to 'kdesktop/tdefileividesktop.h')
-rw-r--r-- | kdesktop/tdefileividesktop.h | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/kdesktop/tdefileividesktop.h b/kdesktop/tdefileividesktop.h new file mode 100644 index 000000000..8dd0f1fc4 --- /dev/null +++ b/kdesktop/tdefileividesktop.h @@ -0,0 +1,122 @@ +/* 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 <tqcolor.h> +#include <tqpixmap.h> +#include <tqimage.h> +#include <tqstring.h> +#include <tdefileivi.h> + +/* + * The dither flags used to display the shadow image + */ +#define DITHER_FLAGS (Qt::DiffuseAlphaDither | Qt::ColorOnly | Qt::AvoidDither) + + +class TQFont; +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 TQString& _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(TQPainter *p, const TQColorGroup &cg); + + /** + + * Draws the shadow text. + * @param p the painter for drawing the item + * @param cg the base color group + */ + virtual void drawShadowedText(TQPainter *p, const TQColorGroup &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 TQImage *buildShadow(TQPainter *p, const int align, TQColor &shadowColor); + + protected: + void setNormalImage(TQImage *newImage) { delete m_normalImage; m_normalImage = newImage; }; + void setSelectedImage(TQImage *newImage) { delete m_selectedImage; m_selectedImage = newImage; }; + + TQImage *normalImage() { return m_normalImage; }; + TQImage *selectedImage() { return m_selectedImage; }; + + private: + bool shouldUpdateShadow(bool selected); + int shadowThickness() const; + + KShadowEngine *m_shadow; + + TQImage *m_selectedImage; + TQImage *m_normalImage; + + TQString oldText; + + unsigned long _selectedUID; + unsigned long _normalUID; + +}; + +#endif |