#ifndef QPAINTER_H_
#define QPAINTER_H_
#include "KWQNamespace.h"
#include "KWQPaintDevice.h"
#include "KWQColor.h"
#include "KWQPen.h"
#include "KWQBrush.h"
#include "KWQRect.h"
#include "KWQRegion.h"
#include "KWQPointArray.h"
#include "KWQString.h"
#include "KWQFontMetrics.h"
#include <ApplicationServices/ApplicationServices.h>
class QFont;
class QPixmap;
class QWidget;
class QPainterPrivate;
class QPainter : public Qt {
public:
typedef enum { RTL, LTR } TextDirection;
QPainter();
QPainter(bool forPrinting);
~QPainter();
QPaintDevice *device() const;
const QFont &font() const;
void setFont(const QFont &);
QFontMetrics fontMetrics() const;
const QPen &pen() const;
void setPen(const QPen &);
void setPen(PenStyle);
void setPen(QRgb);
const QBrush &QPainter::brush() const;
void setBrush(const QBrush &);
void setBrush(BrushStyle);
void setBrush(QRgb);
QRect xForm(const QRect &) const;
void save();
void restore();
void drawRect(int, int, int, int);
void drawLine(int, int, int, int);
void drawLineSegments(const QPointArray &, int index=0, int nlines=-1);
void drawEllipse(int, int, int, int);
void drawArc(int, int, int, int, int, int);
void drawPolyline(const QPointArray &, int index=0, int npoints=-1);
void drawPolygon(const QPointArray &, bool winding=FALSE, int index=0, int npoints=-1);
void drawConvexPolygon(const QPointArray &);
void fillRect(int, int, int, int, const QBrush &);
void fillRect(const QRect &, const QBrush &);
void drawPixmap(const QPoint &, const QPixmap &);
void drawPixmap(const QPoint &, const QPixmap &, const QRect &);
void drawPixmap(const QPoint &, const QPixmap &, const QRect &, const QString &);
void drawPixmap( int x, int y, const QPixmap &,
int sx=0, int sy=0, int sw=-1, int sh=-1, int compositeOperator=-1, CGContextRef context=0);
void drawPixmap( int x, int y, int w, int h, const QPixmap &,
int sx=0, int sy=0, int sw=-1, int sh=-1, int compositeOperator=-1, CGContextRef context=0);
void drawFloatPixmap( float x, float y, float w, float h, const QPixmap &,
float sx=0, float sy=0, float sw=-1, float sh=-1, int compositeOperator=-1, CGContextRef context=0);
void drawTiledPixmap(int, int, int, int, const QPixmap &, int sx=0, int sy=0, CGContextRef context=0);
void addClip(const QRect &);
RasterOp rasterOp() const;
void setRasterOp(RasterOp);
void drawText(int x, int y, int tabWidth, int xpos, int, int, int alignmentFlags, const QString &);
void drawHighlightForText(int x, int y, int h, int tabWidth, int xpos,
const QChar *, int length, int from, int to, int toAdd,
const QColor& backgroundColor, QPainter::TextDirection d, bool visuallyOrdered,
int letterSpacing, int wordSpacing, bool smallCaps);
void drawText(int x, int y, int tabWidth, int xpos, const QChar *, int length, int from, int to, int toAdd,
const QColor& backgroundColor, QPainter::TextDirection d, bool visuallyOrdered,
int letterSpacing, int wordSpacing, bool smallCaps);
void drawLineForText(int x, int y, int yOffset, int width);
void drawLineForMisspelling(int x, int y, int width);
int misspellingLineThickness() const;
QColor selectedTextBackgroundColor() const;
void setUsesInactiveTextBackgroundColor(bool u) { _usesInactiveTextBackgroundColor = u; }
bool paintingDisabled() const;
void setPaintingDisabled(bool);
void beginTransparencyLayer(float opacity);
void endTransparencyLayer();
void setShadow(int x, int y, int blur, const QColor& color);
void clearShadow();
void initFocusRing(int width, int offset);
void initFocusRing(int width, int offset, const QColor& color);
void addFocusRingRect(int x, int y, int width, int height);
void drawFocusRing();
void clearFocusRing();
void setDrawsFocusRing(bool flag) { _drawsFocusRing = flag; }
CGContextRef currentContext();
static int compositeOperatorFromString (QString aString);
static int getCompositeOperation(CGContextRef context);
static void setCompositeOperation (CGContextRef context, QString operation);
static void setCompositeOperation (CGContextRef context, int operation);
static CGColorSpaceRef rgbColorSpace();
static CGColorSpaceRef grayColorSpace();
static CGColorSpaceRef cmykColorSpace();
private:
QPainter(const QPainter &);
QPainter &operator=(const QPainter &);
void _setColorFromBrush();
void _setColorFromPen();
void _fillRect(float x, float y, float w, float h, const QColor& color);
void _drawPoints(const QPointArray &_points, bool winding, int index, int _npoints, bool fill);
void _updateRenderer();
QPainterPrivate *data;
bool _isForPrinting;
bool _usesInactiveTextBackgroundColor;
bool _drawsFocusRing;
};
#endif