kimageeffect.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
#ifndef __KIMAGE_EFFECT_H
00032
#define __KIMAGE_EFFECT_H
00033
00034
#include <kdelibs_export.h>
00035
00036
class QImage;
00037
class QSize;
00038
class QColor;
00039
class QPoint;
00040
class QRect;
00041
00050 class KDEFX_EXPORT KImageEffect
00051 {
00052
public:
00058 enum GradientType { VerticalGradient,
00059 HorizontalGradient,
00060 DiagonalGradient,
00061 CrossDiagonalGradient,
00062 PyramidGradient,
00063 RectangleGradient,
00064 PipeCrossGradient,
00065 EllipticGradient
00066 };
00067
00073 enum RGBComponent { Red,
00074 Green,
00075 Blue,
00076 Gray,
00077 All
00078 };
00079
00084 enum Lighting {NorthLite,
00085 NWLite,
00086 WestLite,
00087 SWLite,
00088 SouthLite,
00089 SELite,
00090 EastLite,
00091 NELite
00092 };
00093
00098 enum ModulationType { Intensity,
00099 Saturation,
00100 HueShift,
00101 Contrast
00102 };
00103
00108 enum NoiseType { UniformNoise=0,
00109 GaussianNoise,
00110 MultiplicativeGaussianNoise,
00111 ImpulseNoise,
00112 LaplacianNoise,
00113 PoissonNoise
00114 };
00115
00120 enum RotateDirection{ Rotate90,
00121 Rotate180,
00122 Rotate270
00123 };
00124
00129 enum BumpmapType {
00130 Linear,
00131 Spherical,
00132 Sinuosidal
00133 };
00134
00146
static QImage gradient(
const QSize &size,
const QColor &ca,
00147
const QColor &cb, GradientType type,
int ncols=3);
00148
00163
static QImage unbalancedGradient(
const QSize &size,
const QColor &ca,
00164
const QColor &cb, GradientType type,
int xfactor = 100,
00165
int yfactor = 100,
int ncols = 3);
00166
00183
static QImage& blend(
const QColor& clr,
QImage& dst,
float opacity);
00184
00201
static QImage& blend(
QImage& src,
QImage& dst,
float opacity);
00202
00217
static QImage& blend(
QImage &image,
float initial_intensity,
00218
const QColor &bgnd, GradientType eff,
00219
bool anti_dir=
false);
00220
00231
static QImage& blend(
QImage &image1,
QImage &image2,
00232 GradientType gt,
int xf=100,
int yf=100);
00233
00246
static QImage& blend(
QImage &image1,
QImage &image2,
00247
QImage &blendImage, RGBComponent channel);
00248
00256
static bool blend(
const QImage & upper,
const QImage & lower,
QImage & output);
00257
00258
00275
static bool blend(
int &x,
int &y,
const QImage & upper,
const QImage & lower,
QImage & output);
00276
00287
static bool blendOnLower(
int x,
int y,
const QImage & upper,
const QImage & lower);
00288
00301
static void blendOnLower(
const QImage &upper,
const QPoint &upperOffset,
00302
QImage &lower,
const QRect &lowerRect);
00303
00318
static void blendOnLower(
const QImage &upper,
const QPoint &upperOffset,
00319
QImage &lower,
const QRect &lowerRect,
float opacity);
00320
00326 enum Disposition { NoImage = 0,
00327 Centered,
00328 Tiled,
00329 CenterTiled,
00330 CenteredMaxpect,
00331 TiledMaxpect,
00332 Scaled,
00333 CenteredAutoFit
00334 };
00335
00350
static QRect computeDestinationRect(
const QSize &lowerSize,
00351 Disposition disposition,
QImage &upper);
00352
00359
static void blendOnLower(
QImage &upper,
QImage &lower,
00360 Disposition disposition,
float opacity);
00361
00371
static QImage& channelIntensity(
QImage &image,
float percent,
00372 RGBComponent channel);
00373
00384
static QImage& fade(
QImage &image,
float val,
const QColor &color);
00385
00386
00397
static QImage& flatten(
QImage &image,
const QColor &ca,
00398
const QColor &cb,
int ncols=0);
00399
00408
static QImage& hash(
QImage &image, Lighting lite=NorthLite,
00409
unsigned int spacing=0);
00410
00424
static QImage& intensity(
QImage &image,
float percent);
00425
00437
static QImage& modulate(
QImage &image,
QImage &modImage,
bool reverse,
00438 ModulationType type,
int factor, RGBComponent channel);
00439
00449
static QImage& toGray(
QImage &image,
bool fast =
false);
00450
00458
static QImage& desaturate(
QImage &image,
float desat = 0.3);
00459
00469
static QImage& contrast(
QImage &image,
int c);
00470
00480
static QImage& dither(
QImage &image,
const QColor *palette,
int size);
00481
00488
static QImage& selectedImage(
QImage &img,
const QColor &col );
00489
00501
static void contrastHSV(
QImage &img,
bool sharpen=
true);
00502
00509
static void normalize(
QImage &img);
00510
00517
static void equalize(
QImage &img);
00518
00528
static void threshold(
QImage &img,
unsigned int value=128);
00529
00538
static void solarize(
QImage &img,
double factor=50.0);
00539
00553
static QImage emboss(
QImage &src,
double radius,
double sigma);
00554
00558
static QImage emboss(
QImage &src);
00559
00568
static QImage despeckle(
QImage &src);
00569
00581
static QImage charcoal(
QImage &src,
double radius,
double sigma);
00582
00587
static QImage charcoal(
QImage &src,
double factor=50.0);
00588
00597
static QImage rotate(
QImage &src, RotateDirection r);
00598
00610
static QImage sample(
QImage &src,
int w,
int h);
00611
00620
static QImage addNoise(
QImage &src, NoiseType type = GaussianNoise);
00621
00633
static QImage blur(
QImage &src,
double radius,
double sigma);
00634
00639
static QImage blur(
QImage &src,
double factor=50.0);
00640
00651
static QImage edge(
QImage &src,
double radius);
00652
00663
static QImage implode(
QImage &src,
double factor=30.0,
00664
unsigned int background = 0xFFFFFFFF);
00665
00675
static QImage oilPaintConvolve(
QImage &src,
double radius);
00676
00681
static QImage oilPaint(
QImage &src,
int radius=3);
00682
00694
static QImage sharpen(
QImage &src,
double radius,
double sigma);
00695
00700
static QImage sharpen(
QImage &src,
double factor=30.0);
00701
00710
static QImage spread(
QImage &src,
unsigned int amount=3);
00711
00722
static QImage shade(
QImage &src,
bool color_shading=
true,
double azimuth=30.0,
00723
double elevation=30.0);
00734
static QImage swirl(
QImage &src,
double degrees=50.0,
unsigned int background =
00735 0xFFFFFFFF);
00736
00748
static QImage wave(
QImage &src,
double amplitude=25.0,
double frequency=150.0,
00749
unsigned int background = 0xFFFFFFFF);
00750
00771
static QImage bumpmap(
QImage &img,
QImage &map,
double azimuth,
double elevation,
00772
int depth,
int xofs,
int yofs,
int waterlevel,
00773
int ambient,
bool compensate,
bool invert,
00774 BumpmapType type,
bool tiled);
00775
00776
private:
00777
00782
static unsigned int lHash(
unsigned int c);
00783
static unsigned int uHash(
unsigned int c);
00784
00788
static int nearestColor(
int r,
int g,
int b,
const QColor *pal,
int size );
00789
00790
static void hull(
const int x_offset,
const int y_offset,
const int polarity,
00791
const int width,
const int height,
00792
unsigned int *f,
unsigned int *g);
00793
static unsigned int generateNoise(
unsigned int pixel, NoiseType type);
00794
static unsigned int interpolateColor(
QImage *image,
double x,
double y,
00795
unsigned int background);
00796
00797
static int getOptimalKernelWidth(
double radius,
double sigma);
00798
static bool convolveImage(
QImage *image,
QImage *dest,
00799
const unsigned int order,
00800
const double *kernel);
00801
static void blurScanLine(
double *kernel,
int width,
00802
unsigned int *src,
unsigned int *dest,
00803
int columns);
00804
static int getBlurKernel(
int width,
double sigma,
double **kernel);
00805 };
00806
00807
#endif
This file is part of the documentation for kdefx Library Version 3.4.0.