1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
/*
* This file is part of Chalk
*
* Copyright (c) 2005 Boudewijn Rempt <boud@valdyas.org>
* Copyright (c) 2007 Benjamin Schleimer <bensch128@yahoo.com>
*
* This program 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.
*
* This program 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 this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef BUMPMAP_H
#define BUMPMAP_H
#include <tqwidget.h>
#include <tdeparts/plugin.h>
#include <kis_types.h>
#include <kis_filter.h>
#include "kis_filter_config_widget.h"
class WdgBumpMap;
namespace chalk {
enum enumBumpmapType {
LINEAR = 0,
SPHERICAL = 1,
SINUSOIDAL = 2
};
}
using namespace chalk;
class ChalkBumpmap : public KParts::Plugin
{
public:
ChalkBumpmap(TQObject *parent, const char *name, const TQStringList &);
virtual ~ChalkBumpmap();
};
/**
* First stab at a bumpmapping filter. For now, this is taken both
* from the Gimp source and the code from emboss.c:
* ANSI C code from the article
* "Fast Embossing Effects on Raster Image Data"
* by John Schlag, jfs@kerner.com
* in "Graphics Gems IV", Academic Press, 1994
*/
class KisFilterBumpmap : public KisFilter
{
public:
KisFilterBumpmap();
public:
virtual void process(KisPaintDeviceSP src, KisPaintDeviceSP dst, KisFilterConfiguration*, const TQRect&);
virtual ColorSpaceIndependence colorSpaceIndependence() { return TO_LAB16; };
static inline KisID id() { return KisID("bumpmap", i18n("Bumpmap")); };
virtual bool supportsPainting() { return true; }
virtual bool supportsPreview() { return true; }
virtual bool supportsIncrementalPainting() { return true; }
virtual bool supportsAdjustmentLayers() { return false; }
virtual bool supportsThreading() { return false; }
virtual KisFilterConfigWidget * createConfigurationWidget(TQWidget* parent, KisPaintDeviceSP dev);
virtual KisFilterConfiguration * configuration(TQWidget*);
virtual KisFilterConfiguration * configuration();
};
class KisBumpmapConfiguration : public KisFilterConfiguration {
public:
KisBumpmapConfiguration();
virtual void fromXML( const TQString& );
virtual TQString toString();
public:
TQString bumpmap;
double azimuth;
double elevation;
double depth;
TQ_INT32 xofs;
TQ_INT32 yofs;
TQ_INT32 waterlevel;
TQ_INT32 ambient;
bool compensate;
bool invert;
bool tiled;
enumBumpmapType type;
};
class KisBumpmapConfigWidget : public KisFilterConfigWidget {
TQ_OBJECT
public:
KisBumpmapConfigWidget(KisFilter * filter, KisPaintDeviceSP dev, TQWidget * parent, const char * name = 0, WFlags f = 0 );
virtual ~KisBumpmapConfigWidget() {};
KisBumpmapConfiguration * config();
void setConfiguration(KisFilterConfiguration * config);
private:
WdgBumpmap * m_page;
};
#endif
|