Go to the documentation of this file.00001
00002
00003 #ifndef __gr_AbiLasemMathManager_h__
00004 #define __gr_AbiLasemMathManager_h__
00005 #include "ut_string_class.h"
00006 #include "gr_EmbedManager.h"
00007 #include "gr_Graphics.h"
00008 #include "ut_types.h"
00009 #include "ut_math.h"
00010 #include "ut_vector.h"
00011
00012
00013 #include <goffice/goffice.h>
00014 #include <gsf/gsf-input.h>
00015 #include <gsf/gsf-output-memory.h>
00016 #include <cairo-svg.h>
00017 #include <lsmdom.h>
00018
00019
00020 #include "ie_imp_MathML.h"
00021
00022 class GR_Graphics;
00023 class PD_Document;
00024 class AD_Document;
00025 class LasemMathView;
00026 class GR_AbiMathItems;
00027
00028 struct write_state {
00029 size_t length;
00030 GsfOutput *output;
00031 };
00032
00033
00034 class GR_AbiMathItems
00035 {
00036 public:
00037 GR_AbiMathItems();
00038 virtual ~GR_AbiMathItems();
00039 UT_uint32 m_iAPI;
00040 bool m_bHasSnapshot;
00041 };
00042
00043 class GR_LasemMathManager : public GR_EmbedManager
00044 {
00045 public:
00046 GR_LasemMathManager(GR_Graphics * pG);
00047 virtual ~GR_LasemMathManager();
00048 virtual GR_EmbedManager * create(GR_Graphics * pG);
00049 virtual const char * getObjectType(void) const;
00050 virtual void initialize(void);
00051 virtual UT_sint32 makeEmbedView(AD_Document * pDoc, UT_uint32 api, const char * szDataID) ;
00052 virtual void setColor(UT_sint32 uid, const UT_RGBColor& c);
00053 virtual bool setFont(UT_sint32 uid, const GR_Font * pFont);
00054 virtual void setDisplayMode(UT_sint32 uid, AbiDisplayMode mode);
00055 virtual UT_sint32 getWidth(UT_sint32 uid);
00056 virtual UT_sint32 getAscent(UT_sint32 uid) ;
00057 virtual UT_sint32 getDescent(UT_sint32 uid) ;
00058 virtual void loadEmbedData(UT_sint32 uid);
00059 virtual void setDefaultFontSize(UT_sint32 uid, UT_sint32 iSize);
00060 virtual void render(UT_sint32 uid, UT_Rect & rec);
00061 virtual void releaseEmbedView(UT_sint32 uid);
00062 virtual void initializeEmbedView(UT_sint32 uid);
00063 virtual void makeSnapShot(UT_sint32 uid, UT_Rect & rec);
00064 virtual bool isDefault(void);
00065 virtual bool convert(UT_uint32 iConv, const UT_ConstByteBufPtr & From, const UT_ByteBufPtr & To);
00066 virtual void updateData(UT_sint32 uid, UT_sint32 api);
00067 virtual bool isEdittable(UT_sint32 uid);
00068 virtual void setRun(UT_sint32 uid, fp_Run * run);
00069 const IE_Imp_MathML_EntityTable & EntityTable() const { return m_EntityTable; }
00070
00071 static LasemMathView * last_created_view;
00072
00073 private:
00074 UT_sint32 _makeLasemMathView(void);
00075 void _loadMathMl(UT_sint32 uid, UT_UTF8String & sGOChartBuf);
00076 UT_sint32 _getNextUID(void);
00077 UT_sint32 m_CurrentUID;
00078 UT_GenericVector<LasemMathView *> m_vecLasemMathView;
00079 UT_GenericVector<GR_AbiMathItems *> m_vecItems;
00080 PD_Document * m_pDoc;
00081 IE_Imp_MathML_EntityTable m_EntityTable;
00082 };
00083
00084 class LasemMathView
00085 {
00086 public:
00087 LasemMathView(GR_LasemMathManager * pMathMan);
00088 virtual ~LasemMathView(void);
00089 void render(UT_Rect & rec);
00090 void setFont(const GR_Font * pFont);
00091 void setColor(const UT_RGBColor& c);
00092 void setDisplayMode(AbiDisplayMode mode);
00093 void setItex(char * itex);
00094 void loadBuffer(UT_UTF8String & sMathml);
00095 void SetRun(fp_Run *pRun) {m_pRun = pRun;}
00096 fp_Run *getRun() {return m_pRun;}
00097 void SetGuru(GtkWidget *guru) {m_Guru = guru;}
00098 UT_ConstByteBufPtr exportToSVG();
00099 UT_ConstByteBufPtr getSnapShot();
00100 UT_sint32 getWidth() {return width;}
00101 UT_sint32 getHeight() {return height;}
00102 UT_sint32 getAscent() {return ascent;}
00103 UT_sint32 getDescent(){return descent;}
00104 private:
00105 GR_LasemMathManager * m_pMathMan;
00106
00107 char *itex;
00108 char *font;
00109 char *color;
00110 bool compact;
00111
00112 LsmDomDocument *mathml;
00113 LsmDomNode *math_element;
00114 LsmDomNode *style_element;
00115
00116 LsmDomView *view;
00117
00118 UT_sint32 width, height, ascent, descent, m_y;
00119 fp_Run *m_pRun;
00120
00121 GtkWidget *m_Guru;
00122 };
00123
00124 #endif // __gr_AbiLasemMathManager_h__