00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef GR_IMAGE_H
00021 #define GR_IMAGE_H
00022
00023 #include "ut_types.h"
00024 #include "ut_string_class.h"
00025 #include "ut_misc.h"
00026
00027 class GR_Graphics;
00028 class UT_ByteBuf;
00029
00030 class ABI_EXPORT GR_Image_Point
00031 {
00032 public:
00033 GR_Image_Point(void) : m_iX(0),m_iY(0)
00034 {}
00035 UT_sint32 m_iX;
00036 UT_sint32 m_iY;
00037 };
00038
00039 class ABI_EXPORT GR_Image
00040 {
00041 public:
00042 GR_Image();
00043 virtual ~GR_Image();
00044
00045 virtual UT_sint32 getDisplayWidth(void) const;
00046 virtual UT_sint32 getDisplayHeight(void) const;
00047
00048 virtual bool convertToBuffer(UT_ByteBuf** ppBB) const;
00049 virtual bool convertFromBuffer(const UT_ByteBuf* pBB, UT_sint32 iDisplayWidth, UT_sint32 iDisplayHeight);
00055 virtual GR_Image * createImageSegment(GR_Graphics * pG, const UT_Rect & rec) = 0;
00056 virtual void scaleImageTo(GR_Graphics * pG, const UT_Rect & rec);
00057 void getName(char* szName) const;
00058 void getName ( UT_String & copy ) const;
00062 virtual bool hasAlpha(void) const = 0;
00066 virtual bool isTransparentAt(UT_sint32 x, UT_sint32 y) = 0;
00067 void GenerateOutline(void);
00068 void DestroyOutline(void);
00069 UT_sint32 GetOffsetFromLeft(GR_Graphics * pG, UT_sint32 pad, UT_sint32 yTop, UT_sint32 height);
00070 UT_sint32 GetOffsetFromRight(GR_Graphics * pG, UT_sint32 pad, UT_sint32 yTop, UT_sint32 height);
00071
00072 bool isOutLinePresent(void) const
00073 { return (m_vecOutLine.getItemCount() > 0);}
00074 enum GRType {
00075 GRT_Unknown,
00076 GRT_Raster,
00077 GRT_Vector
00078 };
00079
00080 static GRType getBufferType(const UT_ByteBuf* pBB);
00081 virtual GRType getType() const;
00082 virtual bool render(GR_Graphics *pGR, UT_sint32 iDisplayWidth, UT_sint32 iDisplayHeight);
00083
00084 void setDisplaySize(UT_sint32 iDisplayWidth, UT_sint32 iDisplayHeight);
00085
00086 protected:
00087 void setName ( const char * szName );
00088 void setName ( const UT_String & szName );
00089
00090 private:
00091 UT_String m_szName;
00092 UT_sint32 m_iDisplayWidth;
00093 UT_sint32 m_iDisplayHeight;
00094 UT_GenericVector<GR_Image_Point *> m_vecOutLine;
00095 };
00096
00097 class ABI_EXPORT GR_RasterImage : public GR_Image
00098 {
00099 public:
00100 virtual bool hasAlpha(void) const = 0;
00101 virtual bool isTransparentAt(UT_sint32 x, UT_sint32 y) = 0;
00102 virtual GRType getType() const { return GRT_Raster; }
00103 };
00104
00105 class ABI_EXPORT GR_ImageFactory
00106 {
00107 public:
00108 virtual ~GR_ImageFactory() {}
00109
00110 virtual GR_Image* createNewImage(const char* pszName, GR_Image::GRType iType = GR_Image::GRT_Raster) = 0;
00111 };
00112
00113 #include "gr_VectorImage.h"
00114
00115 #endif