27#include <tqvaluevector.h>
32#include "kis_resource.h"
33#include "kis_global.h"
41 INTERP_SPHERE_INCREASING,
42 INTERP_SPHERE_DECREASING
54 Color() { m_alpha = 0; }
55 Color(
const TQColor& color,
double alpha) { m_color = color; m_alpha = alpha; }
57 const TQColor& color()
const {
return m_color; }
58 double alpha()
const {
return m_alpha; }
65class KisGradientSegment {
67 KisGradientSegment(
int interpolationType,
int colorInterpolationType,
double startOffset,
double middleOffset,
double endOffset,
const Color& startColor,
const Color& endColor);
70 Color colorAt(
double t)
const;
72 const Color& startColor()
const;
73 const Color& endColor()
const;
75 void setStartColor(
const Color& color) { m_startColor = color; }
76 void setEndColor(
const Color& color) { m_endColor = color; }
78 double startOffset()
const;
79 double middleOffset()
const;
80 double endOffset()
const;
82 void setStartOffset(
double t);
83 void setMiddleOffset(
double t);
84 void setEndOffset(
double t);
86 double length() {
return m_length; }
88 int interpolation()
const;
89 int colorInterpolation()
const;
91 void setInterpolation(
int interpolationType);
92 void setColorInterpolation(
int colorInterpolationType);
97 class ColorInterpolationStrategy {
99 ColorInterpolationStrategy() {}
100 virtual ~ColorInterpolationStrategy() {}
102 virtual Color colorAt(
double t, Color start, Color end)
const = 0;
103 virtual int type()
const = 0;
106 class RGBColorInterpolationStrategy :
public ColorInterpolationStrategy {
108 static RGBColorInterpolationStrategy *instance();
110 virtual Color colorAt(
double t, Color start, Color end)
const;
111 virtual int type()
const {
return COLOR_INTERP_RGB; }
114 RGBColorInterpolationStrategy() {}
116 static RGBColorInterpolationStrategy *m_instance;
119 class HSVCWColorInterpolationStrategy :
public ColorInterpolationStrategy {
121 static HSVCWColorInterpolationStrategy *instance();
123 virtual Color colorAt(
double t, Color start, Color end)
const;
124 virtual int type()
const {
return COLOR_INTERP_HSV_CW; }
126 HSVCWColorInterpolationStrategy() {}
128 static HSVCWColorInterpolationStrategy *m_instance;
131 class HSVCCWColorInterpolationStrategy :
public ColorInterpolationStrategy {
133 static HSVCCWColorInterpolationStrategy *instance();
135 virtual Color colorAt(
double t, Color start, Color end)
const;
136 virtual int type()
const {
return COLOR_INTERP_HSV_CCW; }
138 HSVCCWColorInterpolationStrategy() {}
140 static HSVCCWColorInterpolationStrategy *m_instance;
143 class InterpolationStrategy {
145 InterpolationStrategy() {}
146 virtual ~InterpolationStrategy() {}
148 virtual double valueAt(
double t,
double middle)
const = 0;
149 virtual int type()
const = 0;
152 class LinearInterpolationStrategy :
public InterpolationStrategy {
154 static LinearInterpolationStrategy *instance();
156 virtual double valueAt(
double t,
double middle)
const;
157 virtual int type()
const {
return INTERP_LINEAR; }
162 static double calcValueAt(
double t,
double middle);
165 LinearInterpolationStrategy() {}
167 static LinearInterpolationStrategy *m_instance;
170 class CurvedInterpolationStrategy :
public InterpolationStrategy {
172 static CurvedInterpolationStrategy *instance();
174 virtual double valueAt(
double t,
double middle)
const;
175 virtual int type()
const {
return INTERP_CURVED; }
177 CurvedInterpolationStrategy();
179 static CurvedInterpolationStrategy *m_instance;
183 class SphereIncreasingInterpolationStrategy :
public InterpolationStrategy {
185 static SphereIncreasingInterpolationStrategy *instance();
187 virtual double valueAt(
double t,
double middle)
const;
188 virtual int type()
const {
return INTERP_SPHERE_INCREASING; }
190 SphereIncreasingInterpolationStrategy() {}
192 static SphereIncreasingInterpolationStrategy *m_instance;
195 class SphereDecreasingInterpolationStrategy :
public InterpolationStrategy {
197 static SphereDecreasingInterpolationStrategy *instance();
199 virtual double valueAt(
double t,
double middle)
const;
200 virtual int type()
const {
return INTERP_SPHERE_DECREASING; }
202 SphereDecreasingInterpolationStrategy() {}
204 static SphereDecreasingInterpolationStrategy *m_instance;
207 class SineInterpolationStrategy :
public InterpolationStrategy {
209 static SineInterpolationStrategy *instance();
211 virtual double valueAt(
double t,
double middle)
const;
212 virtual int type()
const {
return INTERP_SINE; }
214 SineInterpolationStrategy() {}
216 static SineInterpolationStrategy *m_instance;
219 InterpolationStrategy *m_interpolator;
220 ColorInterpolationStrategy *m_colorInterpolator;
222 double m_startOffset;
223 double m_middleOffset;
238 KisGradient(
const TQString& file);
239 virtual ~KisGradient();
243 virtual TQImage
img();
244 virtual TQImage generatePreview(
int width,
int height)
const;
246 void colorAt(
double t, TQColor *color, TQ_UINT8 *opacity)
const;
248 KisGradientSegment *segmentAt(
double t)
const;
251 inline void pushSegment( KisGradientSegment* segment ) { m_segments.push_back(segment); };
252 void setImage(
const TQImage& img);
254 TQValueVector<KisGradientSegment *> m_segments;
The KisResource class provides a representation of Chalk image resources.
virtual TQImage img()=0
Returns a TQImage representing this resource.
virtual bool save()=0
Save this resource asynchronously.
virtual bool load()=0
Load this resource.