/usr/include/scribus/scpainter.h is in scribus-dev 1.4.6+dfsg-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 | /*
For general Scribus (>=1.3.2) copyright and licensing information please refer
to the COPYING file provided with the program. Following this notice may exist
a copyright and/or license notice that predates the release of Scribus 1.3.2
for which a new license (GPL+exception) is in place.
*/
#ifndef __SCPAINTER_H__
#define __SCPAINTER_H__
#include <QPainterPath>
#include <QPainter>
#include <QVector>
#include <QStack>
#include <QColor>
#include <QMatrix>
#include <QFont>
#include <QImage>
#include "scribusapi.h"
#include "scconfig.h"
#include "fpoint.h"
#include "fpointarray.h"
#include "vgradient.h"
#include "scpattern.h"
#ifdef HAVE_CAIRO
typedef struct _cairo cairo_t;
typedef struct _cairo_surface cairo_surface_t;
typedef struct _cairo_pattern cairo_pattern_t;
#endif
class SCRIBUS_API ScPainter
{
public:
ScPainter( QImage *target, unsigned int w, unsigned int h, double transparency = 1.0, int blendmode = 0 );
#ifdef HAVE_CAIRO
ScPainter( QString target, unsigned int w, unsigned int h, double transparency = 1.0, int blendmode = 0 );
#endif
virtual ~ScPainter();
enum FillMode { None, Solid, Gradient, Pattern };
virtual void beginLayer(double transparency, int blendmode, FPointArray *clipArray = 0);
virtual void endLayer();
virtual void setAntialiasing(bool enable);
virtual void begin();
virtual void end();
void clear();
virtual void clear( const QColor & );
// matrix manipulation
virtual void setWorldMatrix( const QMatrix & );
virtual const QMatrix worldMatrix();
virtual void setZoomFactor( double );
virtual double zoomFactor() { return m_zoomFactor; }
virtual void translate( double, double );
virtual void rotate( double );
virtual void scale( double, double );
// drawing
virtual void moveTo( const double &, const double & );
virtual void lineTo( const double &, const double & );
virtual void curveTo( FPoint p1, FPoint p2, FPoint p3 );
virtual void newPath();
virtual void closePath();
virtual void fillTextPath();
virtual void strokeTextPath();
virtual void fillPath();
virtual void strokePath();
virtual void setFillRule( bool fillRule );
virtual bool fillRule() { return m_fillRule; }
virtual void setFillMode( int fill );
virtual void setGradient( VGradient::VGradientType mode, FPoint orig, FPoint vec, FPoint foc = FPoint(0,0));
virtual void setPattern(ScPattern *pattern, double scaleX, double scaleY, double offsetX, double offsetY, double rotation);
virtual void setClipPath();
virtual void drawImage( QImage *image );
virtual void setupPolygon(FPointArray *points, bool closed = true);
virtual void drawPolygon();
virtual void drawPolyLine();
virtual void drawLine(FPoint start, FPoint end);
virtual void drawRect(double, double, double, double);
virtual void drawText(QRectF area, QString text);
// pen + brush
virtual QColor pen();
virtual QColor brush();
virtual void setPen( const QColor & );
virtual void setPen( const QColor &c, double w, Qt::PenStyle st, Qt::PenCapStyle ca, Qt::PenJoinStyle jo );
virtual void setPenOpacity( double op );
virtual void setLineWidth( double w);
virtual void setDash(const QVector<double>& array, double ofs);
virtual void setBrush( const QColor & );
virtual void setBrushOpacity( double op );
virtual void setOpacity( double op );
virtual void setFont( const QFont &f );
virtual QFont font();
// stack management
virtual void save();
virtual void restore();
virtual void setRasterOp( int op );
VGradient fill_gradient;
VGradient stroke_gradient;
ScPattern *m_pattern;
private:
void drawVPath( int mode );
#ifdef HAVE_CAIRO
cairo_t *m_cr;
struct layerProp
{
cairo_surface_t *data;
int blendmode;
double tranparency;
FPointArray groupClip;
bool pushed;
};
#else
QPainter painter;
QPainterPath m_path;
struct layerProp
{
QImage *data;
int blendmode;
double tranparency;
FPointArray groupClip;
bool pushed;
};
Qt::PenStyle PLineStyle;
#endif
QStack<layerProp> Layers;
QImage *m_image;
double m_layerTransparency;
int m_blendMode;
unsigned int m_width;
unsigned int m_height;
QMatrix m_matrix;
QFont m_font;
bool mf_underline;
bool mf_strikeout;
bool mf_shadow;
bool mf_outlined;
/*! \brief Filling */
QColor m_fill;
double fill_trans;
bool m_fillRule;
int fillMode; // 0 = none, 1 = solid, 2 = gradient 3 = pattern
int gradientMode; // 1 = linear, 2 = radial
double patternScaleX;
double patternScaleY;
double patternOffsetX;
double patternOffsetY;
double patternRotation;
/*! \brief Stroking */
QColor m_stroke;
double stroke_trans;
double LineWidth;
/*! \brief Line End Style */
Qt::PenCapStyle PLineEnd;
/*! \brief Line Join Style */
Qt::PenJoinStyle PLineJoin;
/*! \brief The Dash Array */
QVector<double> m_array;
double m_offset;
/*! \brief Zoom Factor of the Painter */
double m_zoomFactor;
bool imageMode;
bool layeredMode;
bool svgMode;
};
#endif
|