27#include <tqvaluevector.h>
31#include "kis_resource.h"
34#include "kis_alpha_mask.h"
35#include "koffice_export.h"
36#include "kis_boundary.h"
37#include "kis_paintop.h"
54class KRITACORE_EXPORT KisBrush : public KisResource {
61 KisBrush( const TQString& filename);
63 KisBrush( const TQString& filename,
64 const TQByteArray & data,
69 KisBrush( const TQImage& image, const TQString& name = TQString( ""));
76 virtual TQImage img();
77 virtual bool saveToDevice(TQIODevice* dev) const;
84 double subPixelX = 0, double subPixelY = 0) const;
87 double subPixelX = 0, double subPixelY = 0) const;
92 void setSpacing( double s) { m_spacing = s; }
93 double spacing() const { return m_spacing; }
94 double xSpacing( double pressure = PRESSURE_DEFAULT) const;
95 double ySpacing( double pressure = PRESSURE_DEFAULT) const;
101 virtual void setUseColorAsMask( bool useColorAsMask) { m_useColorAsMask = useColorAsMask; }
102 virtual bool useColorAsMask() const { return m_useColorAsMask; }
103 virtual bool hasColor() const;
105 virtual void makeMaskImage();
106 TQ_INT32 width() const;
107 TQ_INT32 height() const;
109 virtual enumBrushType brushType() const;
120 virtual KisBrush* clone() const;
123 void setWidth(TQ_INT32 w);
124 void setHeight(TQ_INT32 h);
125 void setImage( const TQImage& img);
126 void setBrushType(enumBrushType type) { m_brushType = type; };
127 static double scaleForPressure( double pressure);
133 ScaledBrush(KisAlphaMaskSP scaledMask, const TQImage& scaledImage, double scale, double xScale, double yScale);
135 double scale() const { return m_scale; }
136 double xScale() const { return m_xScale; }
137 double yScale() const { return m_yScale; }
138 KisAlphaMaskSP mask() const { return m_mask; }
139 TQImage image() const { return m_image; }
142 KisAlphaMaskSP m_mask;
151 bool initFromPaintDev( KisPaintDevice* image, int x, int y, int w, int h);
152 void createScaledBrushes() const;
154 KisAlphaMaskSP scaleMask( const ScaledBrush *srcBrush, double scale, double subPixelX, double subPixelY) const;
155 TQImage scaleImage( const ScaledBrush *srcBrush, double scale, double subPixelX, double subPixelY) const;
157 static TQImage scaleImage( const TQImage& srcImage, int width, int height);
158 static TQImage interpolate( const TQImage& image1, const TQImage& image2, double t);
160 static KisAlphaMaskSP scaleSinglePixelMask( double scale, TQ_UINT8 maskValue, double subPixelX, double subPixelY);
161 static TQImage scaleSinglePixelImage( double scale, TQRgb pixel, double subPixelX, double subPixelY);
164 void findScaledBrushes( double scale, const ScaledBrush **aboveBrush, const ScaledBrush **belowBrush) const;
167 void generateBoundary();
173 bool m_useColorAsMask;
176 mutable TQValueVector<ScaledBrush> m_scaledBrushes;
181 TQ_UINT32 m_header_size;
184 TQ_UINT32 m_magic_number;
186 enumBrushType m_brushType;
Generates an 'outline' for a paint device.
A colorspace is the definition of a certain color model in Chalk.
A paint device contains the actual pixel data and offers methods to read and write pixels.
A double-based point class that can return it's coordinates approximated to integers.
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.
|