00001 00002 #ifndef __CPainter_h 00003 #define __CPainter_h 00004 00005 #include "Xft.h" 00006 #include "Xrender.h" 00007 00008 #include "xwidget.h" 00009 #include "xbitmapimage.h" 00010 00011 class XRgb : public XObject 00012 { 00013 int R, G, B; 00014 00015 public: 00016 XRgb(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 XPainter : public XObject 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 XPainter(); 00045 ~XPainter(); 00046 00047 int X(); 00048 int Y(); 00049 XWidget *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(XWidget *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 XFont &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, XBitmapImage &image, int sx, int sy, int sw, int sh, XBitmapImage::BlitOp op); 00078 virtual void drawText(int x, int y, char16 *text, int len, int *backColour, GRect *clip); 00079 }; 00080 00081 #endif