00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef __gr_AbiGOComponentManager_h__
00023 #define __gr_AbiGOComponentManager_h__
00024 #include "gr_EmbedManager.h"
00025 #include <goffice/component/goffice-component.h>
00026 #include <goffice/component/go-component.h>
00027
00028
00029 class GR_Graphics;
00030 class PD_Document;
00031 class AD_Document;
00032 class GOComponentView;
00033 class GR_AbiGOComponentItems;
00034
00035 class GR_AbiGOComponentItems
00036 {
00037 public:
00038 GR_AbiGOComponentItems();
00039 virtual ~GR_AbiGOComponentItems();
00040 UT_uint32 m_iAPI;
00041 bool m_bHasSnapshot;
00042 };
00043
00044 class GR_GOComponentManager : public GR_EmbedManager
00045 {
00046 public:
00047 GR_GOComponentManager(GR_Graphics * pG, char const *mime_type);
00048 virtual ~GR_GOComponentManager();
00049 virtual GR_EmbedManager * create(GR_Graphics * pG);
00050 virtual const char * getObjectType(void) const;
00051 virtual const char * getMimeType(void) const;
00052 virtual const char * getMimeTypeDescription(void) const;
00053 virtual const char * getMimeTypeSuffix(void) const;
00054 virtual void initialize(void);
00055 virtual UT_sint32 makeEmbedView(AD_Document * pDoc, UT_uint32 api, const char * szDataID) ;
00056 virtual void setColor(UT_sint32 uid, UT_RGBColor c);
00057 virtual UT_sint32 getWidth(UT_sint32 uid);
00058 virtual UT_sint32 getAscent(UT_sint32 uid) ;
00059 virtual UT_sint32 getDescent(UT_sint32 uid) ;
00060 virtual void loadEmbedData(UT_sint32 uid);
00061 virtual void setDefaultFontSize(UT_sint32 uid, UT_sint32 iSize);
00062 virtual void render(UT_sint32 uid, UT_Rect & rec);
00063 virtual void releaseEmbedView(UT_sint32 uid);
00064 virtual void initializeEmbedView(UT_sint32 uid);
00065 virtual void makeSnapShot(UT_sint32 uid, UT_Rect & rec);
00066 virtual bool isDefault(void);
00067 virtual bool modify(UT_sint32 uid);
00068 virtual bool convert(UT_uint32 iConv, UT_ByteBuf & From, UT_ByteBuf & To);
00069 virtual bool isEdittable(UT_sint32 uid);
00070 virtual bool isResizeable(UT_sint32 uid);
00071 virtual void setRun (UT_sint32 uid, fp_Run * run);
00072 virtual void updateData(UT_sint32 uid, UT_sint32 api);
00073
00074 private:
00075 UT_sint32 _makeGOComponentView(void);
00076 UT_sint32 _getNextUID(void);
00077 UT_sint32 m_CurrentUID;
00078 UT_GenericVector<GOComponentView *> m_vecGOComponentView;
00079 UT_GenericVector<GR_AbiGOComponentItems *> m_vecItems;
00080 PD_Document * m_pDoc;
00081 char const *m_MimeType;
00082 UT_String m_ObjectType;
00083 };
00084
00085
00086 class GOComponentView
00087 {
00088 friend class GR_GOComponentManager;
00089 public:
00090 GOComponentView(GR_GOComponentManager * pGOMan);
00091 virtual ~GOComponentView(void);
00092 void render(UT_Rect & rec);
00093 void loadBuffer(UT_ByteBuf const *sGOComponentData, const char *_mime_type);
00094 void setDefaultFontSize(UT_sint32 iSize);
00095 void modify(void);
00096 void update (void);
00097 GOComponent *getComponent (void) {return component;}
00098 bool IsEdittable () {return go_component_is_editable (component);}
00099 bool IsResizable () {return go_component_is_resizable (component);}
00100 UT_ByteBuf *exportToPNG ();
00101 UT_ByteBuf *exportToSVG ();
00102 void SetRun (fp_Run *pRun) {m_pRun = pRun;}
00103
00104 private:
00105 GR_GOComponentManager * m_pGOMan;
00106 GOComponent *component;
00107 std::string mime_type;
00108 GR_Image *m_Image;
00109 UT_sint32 width, ascent, descent;
00110 UT_sint32 pix_width, pix_height;
00111 GdkWindow *window;
00112 GdkPixbuf *pixbuf;
00113 GdkWindowAttr attributes;
00114 fp_Run *m_pRun;
00115 };
00116
00117 bool AbiGOComponent_FileInsert(AV_View* v, EV_EditMethodCallData *d);
00118 bool AbiGOComponent_Create(AV_View* v, EV_EditMethodCallData *d);
00119
00120 #endif // __gr_AbiGOComponentManager_h__