8 #ifndef __SCPAINTER_H__
9 #define __SCPAINTER_H__
11 #include <QPainterPath>
20 #include "scribusapi.h"
23 #include "fpointarray.h"
24 #include "vgradient.h"
29 typedef struct _cairo cairo_t;
30 typedef struct _cairo_surface cairo_surface_t;
31 typedef struct _cairo_pattern cairo_pattern_t;
36 ScPainter( QImage *target,
unsigned int w,
unsigned int h,
double transparency = 1.0,
int blendmode = 0 );
38 enum FillMode { None, Solid, Gradient, Pattern, Hatch };
39 virtual void beginLayer(
double transparency,
int blendmode,
FPointArray *clipArray = 0);
40 virtual void endLayer();
41 virtual void setAntialiasing(
bool enable);
45 virtual void clear(
const QColor & );
48 virtual void setWorldMatrix(
const QTransform & );
49 virtual const QTransform worldMatrix();
50 virtual void setZoomFactor(
double );
51 virtual double zoomFactor() {
return m_zoomFactor; }
52 virtual void translate(
double,
double );
53 virtual void translate(
const QPointF& offset );
54 virtual void rotate(
double );
55 virtual void scale(
double,
double );
58 virtual void moveTo(
const double &,
const double & );
59 virtual void lineTo(
const double &,
const double & );
61 virtual void newPath();
62 virtual void closePath();
63 virtual void fillPath();
64 virtual void strokePath();
65 virtual void setFillRule(
bool fillRule );
66 virtual bool fillRule() {
return m_fillRule; }
67 virtual void setFillMode(
int fill );
68 virtual void setStrokeMode(
int stroke );
69 virtual void setGradient( VGradient::VGradientType mode,
FPoint orig,
FPoint vec,
FPoint foc,
double scale,
double skew);
70 virtual void setPattern(
ScPattern *pattern,
double scaleX,
double scaleY,
double offsetX,
double offsetY,
double rotation,
double skewX,
double skewY,
bool mirrorX,
bool mirrorY);
72 virtual void setMaskMode(
int mask );
73 virtual void setGradientMask( VGradient::VGradientType mode,
FPoint orig,
FPoint vec,
FPoint foc,
double scale,
double skew);
74 virtual void setPatternMask(
ScPattern *pattern,
double scaleX,
double scaleY,
double offsetX,
double offsetY,
double rotation,
double skewX,
double skewY,
bool mirrorX,
bool mirrorY);
77 virtual void set4ColorColors(QColor col1, QColor col2, QColor col3, QColor col4);
82 virtual void setHatchParameters(
int mode,
double distance,
double angle,
bool useBackground, QColor background, QColor foreground,
double width,
double height);
84 virtual void setClipPath();
86 virtual void drawImage( QImage *image);
87 virtual void setupPolygon(
FPointArray *points,
bool closed =
true);
88 virtual void setupSharpPolygon(
FPointArray *points,
bool closed =
true);
89 virtual void sharpLineHelper(
FPoint &pp);
90 virtual void sharpLineHelper(QPointF &pp);
91 virtual void drawPolygon();
92 virtual void drawPolyLine();
94 virtual void drawLine(
const QPointF& start,
const QPointF& end);
96 virtual void drawSharpLine(QPointF start, QPointF end);
97 virtual void drawRect(
double,
double,
double,
double);
98 virtual void drawSharpRect(
double x,
double y,
double w,
double h);
99 virtual void drawText(QRectF area, QString text,
bool filled =
true,
int align = 0);
100 virtual void drawShadeCircle(
const QRectF &re,
const QColor color,
bool sunken,
int lineWidth);
101 virtual void drawShadePanel(
const QRectF &r,
const QColor color,
bool sunken,
int lineWidth);
102 virtual void colorizeAlpha(QColor color);
103 virtual void colorize(QColor color);
104 virtual void blurAlpha(
int radius);
105 virtual void blur(
int radius);
108 virtual QColor pen();
109 virtual QColor brush();
110 virtual void setPen(
const QColor & );
111 virtual void setPen(
const QColor &c,
double w, Qt::PenStyle st, Qt::PenCapStyle ca, Qt::PenJoinStyle jo );
112 virtual void setPenOpacity(
double op );
113 virtual void setLineWidth(
double w);
114 virtual void setDash(
const QVector<double>& array,
double ofs);
115 virtual void setBrush(
const QColor & );
116 virtual void setBrushOpacity(
double op );
117 virtual void setOpacity(
double op );
118 virtual void setFont(
const QFont &f );
119 virtual QFont font();
123 virtual void restore();
126 virtual void setRasterOp(
int blendMode );
127 virtual void setBlendModeFill(
int blendMode );
128 virtual void setBlendModeStroke(
int blendMode );
137 void fillPathHelper();
138 void strokePathHelper();
143 cairo_surface_t *data;
147 double mask_patternScaleX;
148 double mask_patternScaleY;
149 double mask_patternOffsetX;
150 double mask_patternOffsetY;
151 double mask_patternRotation;
152 double mask_patternSkewX;
153 double mask_patternSkewY;
154 bool mask_patternMirrorX;
155 bool mask_patternMirrorY;
156 double mask_gradientScale;
157 double mask_gradientSkew;
164 cairo_pattern_t *getMaskPattern();
165 cairo_surface_t *imageMask;
168 QStack<layerProp> Layers;
169 QStack<double> zoomStack;
171 double m_layerTransparency;
174 int m_blendModeStroke;
175 unsigned int m_width;
176 unsigned int m_height;
188 double patternScaleX;
189 double patternScaleY;
190 double patternOffsetX;
191 double patternOffsetY;
192 double patternRotation;
197 double gradientScale;
208 QColor gradPatchColor1;
209 QColor gradPatchColor2;
210 QColor gradPatchColor3;
211 QColor gradPatchColor4;
212 QList<QList<meshPoint> > meshGradientArray;
213 QList<meshGradientPatch> meshGradientPatches;
215 double hatchDistance;
217 bool hatchUseBackground;
218 QColor hatchBackground;
219 QColor hatchForeground;
228 double mask_patternScaleX;
229 double mask_patternScaleY;
230 double mask_patternOffsetX;
231 double mask_patternOffsetY;
232 double mask_patternRotation;
233 double mask_patternSkewX;
234 double mask_patternSkewY;
235 bool mask_patternMirrorX;
236 bool mask_patternMirrorY;
237 double mask_gradientScale;
238 double mask_gradientSkew;
241 Qt::PenCapStyle PLineEnd;
243 Qt::PenJoinStyle PLineJoin;
245 QVector<double> m_array;
Definition: scpattern.h:36
Definition: vgradient.h:78
A point with floating point precision.
Definition: fpoint.h:43
Definition: scpainter.h:33
Coord distance(Point const &a, Point const &b)
Definition: point.h:205
Definition: fpointarray.h:42