/usr/include/ipepainter.h is in libipe-dev 7.1.4-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 | // -*- C++ -*-
// --------------------------------------------------------------------
// Painter abstraction
// --------------------------------------------------------------------
/*
This file is part of the extensible drawing editor Ipe.
Copyright (C) 1993-2013 Otfried Cheong
Ipe is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
As a special exception, you have permission to link Ipe with the
CGAL library and distribute executables, as long as you follow the
requirements of the Gnu General Public License in regard to all of
the software in the executable aside from CGAL.
Ipe 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 General Public
License for more details.
You should have received a copy of the GNU General Public License
along with Ipe; if not, you can find it at
"http://www.gnu.org/copyleft/gpl.html", or write to the Free
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef IPEPAINTER_H
#define IPEPAINTER_H
#include "ipeattributes.h"
#include "ipestyle.h"
#include "ipebitmap.h"
// --------------------------------------------------------------------
namespace ipe {
class Painter {
public:
Painter(const Cascade *style);
virtual ~Painter();
void transform(const Matrix &m);
void untransform(TTransformations trans);
void translate(const Vector &v);
void push();
void pop();
void pushMatrix();
void popMatrix();
void newPath();
void moveTo(const Vector &v);
void lineTo(const Vector &v);
void curveTo(const Vector &v1, const Vector &v2, const Vector &v3);
inline void curveTo(const Bezier &bezier);
void rect(const Rect &re);
void drawEllipse();
void drawArc(const Arc &arc);
void closePath();
void drawPath(TPathMode mode);
void drawBitmap(Bitmap bitmap);
void drawText(const Text *text);
void drawSymbol(Attribute symbol);
void addClipPath();
void setStroke(Attribute color);
void setFill(Attribute color);
void setPen(Attribute pen);
void setDashStyle(Attribute dash);
void setLineCap(TLineCap cap);
void setLineJoin(TLineJoin join);
void setFillRule(TFillRule rule);
void setSymStroke(Attribute color);
void setSymFill(Attribute color);
void setSymPen(Attribute wid);
void setOpacity(Attribute opaq);
void setTiling(Attribute til);
void setGradient(Attribute grad);
//! Return style sheet cascade.
inline const Cascade *cascade() const { return iCascade; }
//! Return current stroke color.
inline Color stroke() const { return iState.back().iStroke; }
//! Return current fill color.
inline Color fill() const { return iState.back().iFill; }
//! Return current transformation matrix.
inline const Matrix &matrix() const { return iMatrix.back(); }
//! Return current pen.
inline Fixed pen() const {return iState.back().iPen; }
//! Return current dash style (always absolute attribute).
inline String dashStyle() const {return iState.back().iDashStyle; }
void dashStyle(std::vector<double> &dashes, double &offset) const;
//! Return current line cap.
inline TLineCap lineCap() const {return iState.back().iLineCap; }
//! Return current line join.
inline TLineJoin lineJoin() const {return iState.back().iLineJoin; }
//! Return current fill rule.
inline TFillRule fillRule() const {return iState.back().iFillRule; }
//! Return current symbol stroke color.
inline Color symStroke() const { return iState.back().iSymStroke; }
//! Return current symbol fill color.
inline Color symFill() const { return iState.back().iSymFill; }
//! Return current symbol pen.
inline Fixed symPen() const { return iState.back().iSymPen; }
//! Return current opacity.
inline Fixed opacity() const { return iState.back().iOpacity; }
//! Return current tiling.
inline Attribute tiling() const { return iState.back().iTiling; }
//! Return current gradient fill.
inline Attribute gradient() const { return iState.back().iGradient; }
protected:
virtual void doPush();
virtual void doPop();
virtual void doNewPath();
virtual void doMoveTo(const Vector &v);
virtual void doLineTo(const Vector &v);
virtual void doCurveTo(const Vector &v1, const Vector &v2,
const Vector &v3);
virtual void doDrawArc(const Arc &arc);
virtual void doClosePath();
virtual void doDrawPath(TPathMode mode);
virtual void doDrawBitmap(Bitmap bitmap);
virtual void doDrawText(const Text *text);
virtual void doDrawSymbol(Attribute symbol);
virtual void doAddClipPath();
void drawArcAsBezier(double alpha);
protected:
struct State {
Color iStroke;
Color iFill;
Fixed iPen;
String iDashStyle;
TLineCap iLineCap;
TLineJoin iLineJoin;
TFillRule iFillRule;
Color iSymStroke;
Color iSymFill;
Fixed iSymPen;
Fixed iOpacity;
Attribute iTiling;
Attribute iGradient;
};
std::list<State> iState;
std::list<Matrix> iMatrix;
const Cascade *iCascade;
int iInPath;
};
// --------------------------------------------------------------------
//! Overloaded function.
/*! Assumes current position is \c bezier.iV[0] */
inline void Painter::curveTo(const Bezier &bezier)
{
curveTo(bezier.iV[1], bezier.iV[2], bezier.iV[3]);
}
} // namespace
// --------------------------------------------------------------------
#endif
|