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.
tdeutils/superkaramba/src/imagelabel.h

194 lines
4.2 KiB

/****************************************************************************
* imagelabel.h - ImageLabel meter
*
* Copyright (C) 2003 Hans Karlsson <karlsson.h@home.se>
* Copyright (c) 2004 Petri Damstén <damu@iki.fi>
*
* This file is part of SuperKaramba.
*
* SuperKaramba is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* SuperKaramba 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with SuperKaramba; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
****************************************************************************/
#ifndef IMAGELABEL_H
#define IMAGELABEL_H
#include "meter.h"
#include <kpixmap.h>
#include <tqimage.h>
#include <tqpixmap.h>
#include <tqpainter.h>
#include <tqstring.h>
#include <tqstringlist.h>
#include <kurl.h>
#include <tdeio/netaccess.h>
#include <tqregexp.h>
#include <tqtimer.h>
#include "karamba.h"
class ImageLabel;
class TDEIO::CopyJob;
// Abstract Effects Baseclass
class Effect : public TQObject
{
Q_OBJECT
public:
Effect(ImageLabel*, int millisec);
virtual ~Effect();
virtual KPixmap apply(KPixmap pixmap) = 0;
void startTimer();
protected:
ImageLabel* myImage;
int millisec;
};
// Intensity
class Intensity : public Effect
{
public:
Intensity(ImageLabel*, float r, int millisec);
KPixmap apply(KPixmap pixmap);
private:
float ratio;
};
// ChannelIntensity
class ChannelIntensity : public Effect
{
public:
ChannelIntensity(ImageLabel*, float r, TQString c, int millisec);
KPixmap apply(KPixmap pixmap);
private:
float ratio;
int channel;
};
// ToGray
class ToGray : public Effect
{
public:
ToGray(ImageLabel*, int millisec);
KPixmap apply(KPixmap pixmap);
};
class ImageLabel : public Meter
{
Q_OBJECT
public:
ImageLabel(karamba* k, int ix,int iy,int iw,int ih );
ImageLabel(karamba* k);
~ImageLabel();
void setValue( TQString imagePath );
void setValue( long );
void setValue( TQPixmap& );
TQString getStringValue() { return imagePath; };
void scale( int, int );
void smoothScale( int, int );
void rotate(int);
void removeImageTransformations();
void mUpdate( TQPainter * );
void mUpdate( TQPainter *, int );
void rolloverImage(TQMouseEvent *e);
void parseImages( TQString fn, TQString fn_roll, int, int, int, int );
virtual void show();
virtual void hide();
void setTooltip(TQString txt);
int cblend;
int background;
// Pixmap Effects
void removeEffects();
void intensity(float ratio, int millisec);
void channelIntensity(float ratio, TQString channel, int millisec);
void toGray(int millisec);
void setBackground(int b);
void attachClickArea(TQString leftMouseButton, TQString middleMouseButton,
TQString rightMouseButton);
virtual bool click(TQMouseEvent*);
private slots:
// gets called if a timed effects needs to bee removed
void slotEffectExpired();
void slotCopyResult(TDEIO::Job* job);
signals:
void pixmapLoaded();
private:
void applyTransformations(bool useSmoothScale = false);
int pixmapWidth;
int pixmapHeight;
int pixmapOffWidth;
int pixmapOffHeight;
int pixmapOnWidth;
int pixmapOnHeight;
// true if Image has been scaled
bool doScale;
// true if Image has been rotated
bool doRotate;
// Contains the current Effect or is 0 if no Effect is applied
Effect* imageEffect;
// Scale Matrix
//TQWMatrix scaleMat;
int scale_w;
int scale_h;
// Rotation Matrix
//TQWMatrix rotMat;
int rot_angle;
KPixmap pixmap;
KPixmap realpixmap;
TQRect rect_off, rect_on;
TQRect old_tip_rect;
bool zoomed;
//TQString fn, fn_roll;
bool rollover;
KPixmap pixmap_off;
KPixmap pixmap_on;
int xoff,xon;
int yoff,yon;
TQString imagePath;
};
#endif // IMAGELABEL_H