Re: bafna_p - r31561 - in abiword/branches/gsoc2012math/plugins/openxml: common/xp exp/xp

From: Jean Brefort <jean.brefort_at_normalesup.org>
Date: Thu Jul 26 2012 - 10:21:23 CEST

Hi Prashant,

Nice work! We now can export equations to docx, and import them back!

Cheers,
Jean

Le mercredi 25 juillet 2012 à 16:44 +0200, cvs@abisource.com a écrit :
> Author: bafna_p
> Date: 2012-07-25 16:44:25 +0200 (Wed, 25 Jul 2012)
> New Revision: 31561
>
> Modified:
> abiword/branches/gsoc2012math/plugins/openxml/common/xp/OXML_Element_Math.cpp
> abiword/branches/gsoc2012math/plugins/openxml/common/xp/OXML_Element_Math.h
> abiword/branches/gsoc2012math/plugins/openxml/exp/xp/ie_exp_OpenXML.cpp
> abiword/branches/gsoc2012math/plugins/openxml/exp/xp/ie_exp_OpenXML.h
> abiword/branches/gsoc2012math/plugins/openxml/exp/xp/ie_exp_OpenXML_Listener.cpp
> abiword/branches/gsoc2012math/plugins/openxml/exp/xp/ie_exp_OpenXML_Listener.h
> Log:
> Implementing Math export to Docx
>
> Modified: abiword/branches/gsoc2012math/plugins/openxml/common/xp/OXML_Element_Math.cpp
> ===================================================================
> --- abiword/branches/gsoc2012math/plugins/openxml/common/xp/OXML_Element_Math.cpp 2012-07-25 13:59:21 UTC (rev 31560)
> +++ abiword/branches/gsoc2012math/plugins/openxml/common/xp/OXML_Element_Math.cpp 2012-07-25 14:44:25 UTC (rev 31561)
> @@ -40,12 +40,32 @@
> m_MathML = sMathML;
> }
>
> +const char * OXML_Element_Math::getMathML()
> +{
> + UT_return_val_if_fail(!m_MathML.empty(), NULL);
> + return m_MathML.c_str();
> +}
> +
> UT_Error OXML_Element_Math::serialize(IE_Exp_OpenXML* exporter)
> {
> - //TO DO: serialize math here
> UT_Error err = UT_OK;
> +
> + err = exporter->startMath();
> + if(err != UT_OK)
> + return err;
> +
> + std::string sMathML;
> + sMathML.assign(getMathML());
> + std::string sOMML;
>
> - return UT_OK;
> + if(convertMathMLtoOMML(sMathML, sOMML))
> + {
> + err = exporter->writeMath(sOMML.c_str());
> + if(err != UT_OK)
> + return err;
> + }
> +
> + return exporter->finishMath();
> }
>
> UT_Error OXML_Element_Math::addToPT(PD_Document * pDocument)
>
> Modified: abiword/branches/gsoc2012math/plugins/openxml/common/xp/OXML_Element_Math.h
> ===================================================================
> --- abiword/branches/gsoc2012math/plugins/openxml/common/xp/OXML_Element_Math.h 2012-07-25 13:59:21 UTC (rev 31560)
> +++ abiword/branches/gsoc2012math/plugins/openxml/common/xp/OXML_Element_Math.h 2012-07-25 14:44:25 UTC (rev 31561)
> @@ -40,6 +40,7 @@
> virtual UT_Error addToPT(PD_Document * pDocument);
>
> void setMathML(const std::string & sMathML);
> + const char * getMathML();
>
> private:
> std::string m_MathML;
>
> Modified: abiword/branches/gsoc2012math/plugins/openxml/exp/xp/ie_exp_OpenXML.cpp
> ===================================================================
> --- abiword/branches/gsoc2012math/plugins/openxml/exp/xp/ie_exp_OpenXML.cpp 2012-07-25 13:59:21 UTC (rev 31560)
> +++ abiword/branches/gsoc2012math/plugins/openxml/exp/xp/ie_exp_OpenXML.cpp 2012-07-25 14:44:25 UTC (rev 31561)
> @@ -304,6 +304,32 @@
> }
>
> /**
> + * Starts exporting the OXML_Element_Math object
> + */
> +UT_Error IE_Exp_OpenXML::startMath()
> +{
> + return writeTargetStream(TARGET_DOCUMENT, "<m:oMathPara>");
> +}
> +
> +/**
> + * Writes the actual content of OXML_Element_Math object
> + */
> +UT_Error IE_Exp_OpenXML::writeMath(const char* omml)
> +{
> + std::string str;
> + str.assign(omml);
> + return writeTargetStream(TARGET_DOCUMENT, str.c_str());
> +}
> +
> +/**
> + * Finishes exporting the OXML_Element_Math object
> + */
> +UT_Error IE_Exp_OpenXML::finishMath()
> +{
> + return writeTargetStream(TARGET_DOCUMENT, "</m:oMathPara>");
> +}
> +
> +/**
> * Starts exporting the OXML_Element_Run object
> */
> UT_Error IE_Exp_OpenXML::startRun(int target)
> @@ -2373,6 +2399,7 @@
> str += "xmlns:v=\"urn:schemas-microsoft-com:vml\" ";
> str += "xmlns:wx=\"http://schemas.microsoft.com/office/word/2003/auxHint\" ";
> str += "xmlns:wp=\"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\" ";
> + str += "xmlns:m=\"http://schemas.openxmlformats.org/officeDocument/2006/math\" ";
> str += "xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" ";
> str += "xmlns:pic=\"http://schemas.openxmlformats.org/drawingml/2006/picture\" ";
> str += "xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\"><w:body>";
>
> Modified: abiword/branches/gsoc2012math/plugins/openxml/exp/xp/ie_exp_OpenXML.h
> ===================================================================
> --- abiword/branches/gsoc2012math/plugins/openxml/exp/xp/ie_exp_OpenXML.h 2012-07-25 13:59:21 UTC (rev 31560)
> +++ abiword/branches/gsoc2012math/plugins/openxml/exp/xp/ie_exp_OpenXML.h 2012-07-25 14:44:25 UTC (rev 31561)
> @@ -78,6 +78,9 @@
> UT_Error startText(int target);
> UT_Error writeText(int target, const UT_UCS4Char* text);
> UT_Error finishText(int target);
> + UT_Error startMath();
> + UT_Error writeMath(const char* omml);
> + UT_Error finishMath();
> UT_Error startRun(int target);
> UT_Error finishRun(int target);
> UT_Error startRunProperties(int target);
>
> Modified: abiword/branches/gsoc2012math/plugins/openxml/exp/xp/ie_exp_OpenXML_Listener.cpp
> ===================================================================
> --- abiword/branches/gsoc2012math/plugins/openxml/exp/xp/ie_exp_OpenXML_Listener.cpp 2012-07-25 13:59:21 UTC (rev 31560)
> +++ abiword/branches/gsoc2012math/plugins/openxml/exp/xp/ie_exp_OpenXML_Listener.cpp 2012-07-25 14:44:25 UTC (rev 31561)
> @@ -322,6 +322,32 @@
> return element_run->appendElement(shared_element_image) == UT_OK;
> }
>
> + case PTO_Math:
> + {
> + if(bHaveProp && pAP)
> + {
> + if(!pAP->getAttribute("dataid", szValue))
> + {
> + return true;
> + }
> +
> + const UT_ByteBuf * pByteBuf = NULL;
> + bool bOK = pdoc->getDataItemDataByName(szValue, const_cast<const UT_ByteBuf **>(&pByteBuf), NULL, NULL);
> + if(!bOK) return bOK;
> +
> + std::string mathml;
> + mathml.assign((const char*)(pByteBuf->getPointer(0)));
> +
> + OXML_Element_Math* math = new OXML_Element_Math(getNextId());
> + OXML_SharedElement shared_element_math(static_cast<OXML_Element*>(math));
> + math->setMathML(mathml);
> +
> + return paragraph->appendElement(shared_element_math) == UT_OK;
> + }
> +
> + return true;
> + }
> +
> case PTO_Bookmark:
> {
> if(bHaveProp && pAP)
>
> Modified: abiword/branches/gsoc2012math/plugins/openxml/exp/xp/ie_exp_OpenXML_Listener.h
> ===================================================================
> --- abiword/branches/gsoc2012math/plugins/openxml/exp/xp/ie_exp_OpenXML_Listener.h 2012-07-25 13:59:21 UTC (rev 31560)
> +++ abiword/branches/gsoc2012math/plugins/openxml/exp/xp/ie_exp_OpenXML_Listener.h 2012-07-25 14:44:25 UTC (rev 31561)
> @@ -45,6 +45,7 @@
> #include <OXML_Element_Bookmark.h>
> #include <OXML_Element_Field.h>
> #include <OXML_Element_TextBox.h>
> +#include <OXML_Element_Math.h>
> #include <OXML_List.h>
> #include <OXML_Image.h>
> #include <ie_Table.h>
>
> -----------------------------------------------
> To unsubscribe from this list, send a message to
> abisource-cvs-commit-request@abisource.com with the word
> unsubscribe in the message body.
Received on Thu Jul 26 10:29:40 2012

This archive was generated by hypermail 2.1.8 : Thu Jul 26 2012 - 10:29:40 CEST