/usr/include/scribus/scpainterex_gdiplus.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 176 177 178 179 180 181 182 183 184 185 186 187 | /*
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.
*/
/* This file is part of the KDE project
Copyright (C) 2001, 2002, 2003 The Karbon Developers
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
/* Adapted for Scribus 22.08.2003 by Franz Schmid */
/* Adapted for Scribus 15.01.2006 by Jean Ghali */
#ifndef __SCPAINTEREX_GDIPLUS_H__
#define __SCPAINTEREX_GDIPLUS_H__
// libart wrapper
#include <QColor>
#include <QFont>
#include <QGlobalStatic>
#include <QList>
#include <QMatrix>
#include <QPixmap>
#include <QStack>
#include "scribusapi.h"
#include "scconfig.h"
#include "fpoint.h"
#include "fpointarray.h"
#include "vgradient.h"
#include "scpainterexbase.h"
#include <valarray>
#include <windows.h>
class QPainter;
class ScribusDoc;
namespace Gdiplus
{
class Graphics;
class GraphicsPath;
};
class SCRIBUS_API ScPainterEx_GDIPlus : public ScPainterExBase
{
public:
ScPainterEx_GDIPlus(HDC hDC, QRect& rect, ScribusDoc* doc, bool gray );
virtual ~ScPainterEx_GDIPlus();
virtual Capabilities capabilities() { return transparencies; }
virtual int supportedColorModes() { return (int) rgbMode; }
virtual ColorMode preferredColorMode() { return rgbMode; }
virtual ImageMode imageMode() { return rgbImages; }
virtual void begin();
virtual void end();
virtual void clear();
virtual void clear( ScColorShade & );
// matrix manipulation
virtual void setWorldMatrix( const QMatrix & );
virtual const QMatrix worldMatrix();
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 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 int fillMode() { return m_fillMode; }
virtual void setGradient( VGradientEx::Type mode, FPoint orig, FPoint vec, FPoint foc = FPoint(0,0));
virtual void setPattern ( ScPattern* pattern, QMatrix& patternTransform );
virtual void setClipPath();
virtual void drawImage( ScImage *image, ScPainterExBase::ImageMode mode );
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);
// pen + brush
virtual ScColorShade pen();
virtual ScColorShade brush();
virtual void setPen( const ScColorShade & );
virtual void setPen( const ScColorShade &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 QList<double>& array, double ofs);
virtual void setBrush( const ScColorShade & );
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 );
private:
void drawVPath( int mode );
void drawGradient( VGradientEx& gradient );
void drawLinearGradient( VGradientEx& gradient, const QRect& rect );
void drawCircularGradient( VGradientEx& gradient, const QRect& rect );
void getClipPathDimensions( QRect& r );
void transformPoint( const FPoint& in, FPoint& out );
void transformPoints( const FPoint* in, FPoint* out, uint length );
ScribusDoc* m_doc;
unsigned int m_width;
unsigned int m_height;
QMatrix m_matrix;
QFont m_font;
/* Filling */
ScColorShade m_fillColor;
double m_fillTrans;
bool m_fillRule;
int m_fillMode; // 0 = none, 1 = solid, 2 = gradient
int m_gradientMode; // 1 = linear, 2 = radial
/* Stroking */
ScColorShade m_strokeColor;
double m_strokeTrans;
double m_lineWidth;
/* Grayscale conversion option */
bool m_convertToGray;
/* Line End Style */
Qt::PenCapStyle m_lineEnd;
/* Line Join Style */
Qt::PenJoinStyle m_lineJoin;
/* The Dash Array */
QList<double> m_array;
double m_offset;
/* Transformation Stack */
QStack<QMatrix> m_stack;
/* Some data to describe state of drawing */
bool m_pathIsClosed;
bool m_drawingClosedPath;
/* Device context */
HDC m_dc;
/* Color conversion function */
QColor transformColor( ScColorShade& colorShade, double trans );
void transformImage( QImage* image, uchar* data, int scan);
QStack<int> m_gStates;
Gdiplus::Graphics* m_graphics;
Gdiplus::GraphicsPath* m_graphicsPath;
double m_positionX;
double m_positionY;
};
#endif
|