Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef FG_GRAPHIC_H
00022 #define FG_GRAPHIC_H
00023
00024 #include <memory>
00025 #include <string>
00026
00027 #include "ut_types.h"
00028 #include "ut_bytebuf.h"
00029 #include "pt_Types.h"
00030
00031 class UT_ByteBuf;
00032 class fl_ContainerLayout;
00033 class PX_ChangeRecord_Object;
00034 class PP_AttrProp;
00035 class PD_Document;
00036 class GR_Graphics;
00037 class GR_Image;
00038
00039
00040
00041 enum FGType {
00042 FGT_Unknown,
00043 FGT_Raster,
00044 FGT_Vector
00045 };
00046
00047 class FG_Graphic;
00048
00049 typedef std::unique_ptr<FG_Graphic> FG_GraphicPtr;
00050 typedef std::unique_ptr<const FG_Graphic> FG_ConstGraphicPtr;
00051
00052 typedef std::shared_ptr<FG_Graphic> FG_SharedGraphicPtr;
00053
00054
00055
00056
00057
00058
00059 class ABI_EXPORT FG_Graphic
00060 {
00061 public:
00062 static FG_GraphicPtr createFromChangeRecord(const fl_ContainerLayout *pFL,
00063 const PX_ChangeRecord_Object* pcro);
00064
00065 static FG_GraphicPtr createFromStrux(const fl_ContainerLayout *pFL);
00066
00067 virtual ~FG_Graphic();
00068
00069 virtual FGType getType(void) const = 0;
00070
00071 virtual const std::string & getMimeType() const = 0;
00072
00073
00074 virtual double getWidth(void) const = 0;
00075 virtual double getHeight(void) const = 0;
00076 virtual const char * getDataId(void) const = 0;
00077
00078
00079
00080
00081 virtual const char * getWidthProp(void) = 0;
00082 virtual const char * getHeightProp(void) = 0;
00083 virtual GR_Image * regenerateImage(GR_Graphics * pG) = 0;
00084 virtual FG_ConstGraphicPtr clone(void) const = 0;
00085
00086 virtual const UT_ConstByteBufPtr & getBuffer() const = 0;
00087 virtual const char * createDataItem(PD_Document *pDoc, const char * szName) const = 0;
00088
00089
00090 virtual GR_Image* generateImage(GR_Graphics* pG,
00091 const PP_AttrProp * pSpanAP,
00092 UT_sint32 maxW, UT_sint32 maxH) = 0;
00093
00094
00095 virtual UT_Error insertIntoDocument(PD_Document* pDoc, UT_uint32 res,
00096
00097 UT_uint32 iPos, const char* szName) const = 0;
00098
00099 virtual UT_Error insertAtStrux(PD_Document* pDoc,
00100 UT_uint32 res,
00101 UT_uint32 iPos,
00102 PTStruxType iStruxType,
00103 const char* szName) const = 0;
00104 };
00105
00106 #endif