00001
00002 #ifndef __QPainter_h
00003 #define __QPainter_h
00004
00005 #include "Xft.h"
00006 #include "Xrender.h"
00007
00008 #include "qwidget.h"
00009 #include "qimage.h"
00010
00011 class QColor : public QObject
00012 {
00013 int R, G, B;
00014
00015 public:
00016 QColor(int r, int g, int b)
00017 {
00018 set(r, g, b);
00019 }
00020
00021 int r() { return R; }
00022 int g() { return G; }
00023 int b() { return B; }
00024 void set(int r, int g, int b)
00025 {
00026 R = r; G = g; B = b;
00027 }
00028 };
00029
00030 class QPainter : public QObject
00031 {
00032 protected:
00033 class GPainterPrivate *d;
00034
00035 public:
00036 enum RowOperation
00037 {
00038 CopyROP,
00039 AndROP,
00040 OrROP,
00041 XorROP
00042 };
00043
00044 QPainter();
00045 ~QPainter();
00046
00047 int X();
00048 int Y();
00049 QWidget *Handle();
00050 class GRect *GetClient();
00051
00052 virtual void GetScale(double &x, double &y) { x = 1.0; y = 1.0; }
00053
00054 virtual bool Begin(QWidget *w);
00055 virtual void End();
00056 virtual bool IsOk();
00057
00058 virtual void SetClient(class GRect *r);
00059 virtual void PushClip(int x1, int y1, int x2, int y2);
00060 virtual void PopClip();
00061 virtual void EmptyClip();
00062
00063 virtual void translate(int x, int y);
00064 virtual void setFore(int c);
00065 virtual void setBack(int c);
00066 virtual void setRasterOp(RowOperation i);
00067 virtual RowOperation rasterOp();
00068 virtual void setFont(class QFont &f);
00069
00070 virtual void drawPoint(int x, int y);
00071 virtual void drawLine(int x1, int y1, int x2, int y2);
00072 virtual void drawRect(int x, int y, int wid, int height);
00073 virtual void drawArc(double cx, double cy, double radius);
00074 virtual void drawArc(double cx, double cy, double radius, double start, double end);
00075 virtual void fillArc(double cx, double cy, double radius);
00076 virtual void fillArc(double cx, double cy, double radius, double start, double end);
00077 virtual void drawImage(int x, int y, QImage &image, int sx, int sy, int sw, int sh, QImage::BlitOp op);
00078 virtual void drawText(int x, int y, char16 *text, int len, int *backColour, GRect *clip);
00079 };
00080
00081 #endif