You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123 lines
3.7 KiB

/* This file is proposed to be part of the KDE base.
* Copyright (C) 2003 Laur Ivan <>
* Many thanks to:
* - Bernardo Hung <> for the enhanced shadow
* algorithm (currently used)
* - Tim Jansen <> 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
* 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.
#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
* 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.
* Reimplements TDEIconView::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);
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; };
bool shouldUpdateShadow(bool selected);
int shadowThickness() const;
KShadowEngine *m_shadow;
TQImage *m_selectedImage;
TQImage *m_normalImage;
TQString oldText;
unsigned long _selectedUID;
unsigned long _normalUID;