00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef XAP_CAIRONULLGRAPHICS_H
00021 #define XAP_CAIRONULLGRAPHICS_H
00022
00023 #include "ut_vector.h"
00024 #include "gr_CairoGraphics.h"
00025 #include "gr_Image.h"
00026 #include "ut_misc.h"
00027
00028 class UT_ByteBuf;
00029
00030
00031
00032 class ABI_EXPORT GR_CairoNullGraphicsAllocInfo : public GR_AllocInfo
00033 {
00034 public:
00035 GR_CairoNullGraphicsAllocInfo()
00036 {}
00037
00038 virtual GR_GraphicsId getType() const {return GRID_CAIRO_NULL;}
00039 virtual bool isPrinterGraphics() const {return false;}
00040 };
00041
00042
00043
00044 class ABI_EXPORT CairoNull_Graphics : public GR_CairoGraphics
00045 {
00046
00047
00048 public:
00049 virtual ~CairoNull_Graphics();
00050
00051 static UT_uint32 s_getClassId() {return GRID_CAIRO_NULL;}
00052 virtual UT_uint32 getClassId() {return s_getClassId();}
00053
00054 virtual GR_Capability getCapability(){UT_ASSERT(UT_NOT_IMPLEMENTED); return GRCAP_UNKNOWN;}
00055 static const char * graphicsDescriptor(void) { return "Cairo Null Graphics";}
00056 static GR_Graphics * graphicsAllocator(GR_AllocInfo&);
00057
00058 virtual void drawChars(const UT_UCSChar* pChars,
00059 int iCharOffset, int iLength,
00060 UT_sint32 xoff, UT_sint32 yoff,
00061 int * pCharWidths = NULL);
00062
00063 virtual void setColor(const UT_RGBColor& clr);
00064 virtual void getColor(UT_RGBColor& clr);
00065 virtual GR_Font* getGUIFont();
00066
00067 virtual void drawLine(UT_sint32 x1, UT_sint32 y1, UT_sint32 x2, UT_sint32 y2);
00068 virtual void setLineWidth(UT_sint32);
00069 virtual void xorLine(UT_sint32, UT_sint32, UT_sint32, UT_sint32);
00070 virtual void polyLine(const UT_Point * pts, UT_uint32 nPoints);
00071 virtual void fillRect(const UT_RGBColor& c, UT_sint32 x, UT_sint32 y, UT_sint32 w, UT_sint32 h);
00072 virtual void invertRect(const UT_Rect*);
00073 virtual void setClipRect(const UT_Rect*);
00074 virtual void scroll(UT_sint32, UT_sint32);
00075 virtual void scroll(UT_sint32 x_dest, UT_sint32 y_dest,
00076 UT_sint32 x_src, UT_sint32 y_src,
00077 UT_sint32 width, UT_sint32 height);
00078 virtual void clearArea(UT_sint32, UT_sint32, UT_sint32, UT_sint32);
00079
00080 virtual void drawImage(GR_Image* pImg, UT_sint32 xDest, UT_sint32 yDest);
00081 virtual void drawRGBImage(GR_Image* pImg, UT_sint32 xDest, UT_sint32 yDest);
00082 virtual void drawGrayImage(GR_Image* pImg, UT_sint32 xDest, UT_sint32 yDest);
00083 virtual void drawBWImage(GR_Image* pImg, UT_sint32 xDest, UT_sint32 yDest);
00084 virtual GR_Image* createNewImage(const char* pszName, const UT_ConstByteBufPtr & pBBPNG, const std::string& mimetype, UT_sint32 iDisplayWidth, UT_sint32 iDisplayHeight, GR_Image::GRType iType = GR_Image::GRT_Raster);
00085
00086 virtual bool queryProperties(GR_Graphics::Properties gp) const;
00087
00088 virtual bool startPrint(void);
00089 virtual bool startPage(const char * szPagelabel, UT_uint32 pageNumber,
00090 bool bPortrait, UT_uint32 iWidth, UT_uint32 iHeight);
00091 virtual bool endPrint(void);
00092
00093 virtual void setColorSpace(GR_Graphics::ColorSpace c);
00094 virtual GR_Graphics::ColorSpace getColorSpace(void) const;
00095
00096 virtual void setCursor(GR_Graphics::Cursor c);
00097 virtual GR_Graphics::Cursor getCursor(void) const;
00098
00099 virtual void setColor3D(GR_Color3D c);
00100 virtual bool getColor3D(GR_Color3D c, UT_RGBColor &color);
00101 virtual void fillRect(GR_Color3D c, UT_sint32 x, UT_sint32 y, UT_sint32 w, UT_sint32 h);
00102 virtual void fillRect(GR_Color3D c, UT_Rect &r);
00103 virtual void setPageSize(char* pageSizeName, UT_uint32 iwidth = 0, UT_uint32 iheight=0);
00104 virtual void setPageCount(UT_uint32 ) {}
00105
00106 virtual GR_Image * genImageFromRectangle(const UT_Rect & ) { return NULL;}
00107 virtual void saveRectangle(UT_Rect & , UT_uint32 ) {}
00108 virtual void restoreRectangle(UT_uint32 ) {}
00109
00110 virtual void setLineProperties(double inWidth,
00111 GR_Graphics::JoinStyle inJoinStyle = JOIN_MITER,
00112 GR_Graphics::CapStyle inCapStyle = CAP_BUTT,
00113 GR_Graphics::LineStyle inLineStyle = LINE_SOLID);
00114
00115 protected:
00116
00117 CairoNull_Graphics();
00118 };
00119
00120 #endif